Игнорировать HSTS в приложении/расширении Chrome

Я пишу упакованное приложение Chrome для диагностики веб-сервисов. Я хочу иметь возможность отправлять запрос GET на URL-адрес и просматривать заголовки и данные в ответе.

Моя проблема заключается в том, что если пользователи посещают сайт с установленным заголовком HSTS перед использованием моего приложения, мое приложение не сможет отправлять запросы GET на URL-адреса http:// для этого домена, поскольку Chrome автоматически преобразует URL-адреса http:// на https:// перед отправкой запроса.

Могу ли я вообще что-нибудь сделать, чтобы предотвратить это? Я просмотрел API веб-запроса и тег веб-просмотра, но не нашел ничего, что позволило бы мне игнорировать HSTS.

Можно ли для этого использовать https://developer.chrome.com/apps/sockets_tcp ( Мне нужно будет иметь возможность поддерживать http, https и сжатые данные)?


person hvrpn    schedule 09.07.2016    source источник


Ответы (1)


Могу ли я вообще что-нибудь сделать, чтобы предотвратить это?

Возможно нет. Если вы уже протестировали <webview> и он использует список HSTS совместно с браузером, то сетевой уровень прозрачно перепишет его для вас.

Можно ли использовать chrome.sockets.tcp для этого?

Технически да, HSTS не имеет для этого значения. Практически вам нужно будет реализовать что-то вроде wget+SSL+gzip с нуля (в JS, NaCl или собственном хосте, но в последнем случае вам действительно не нужны встроенные сокеты).

person Xan    schedule 09.07.2016
comment
Так что, по вашему мнению, на практике это действительно невозможно (без того, чтобы в основном реализовать wget внутри Chrome, что потребовало бы огромного объема работы)? Существуют ли какие-либо существующие библиотеки NaCI или Native Host, которые делают что-то подобное? - person hvrpn; 09.07.2016
comment
Я не особо интересовался существованием таких библиотек для NaCl; Встроенный обмен сообщениями позволяет вам на самом деле вызывать wget или аналогичный, например , но это громоздкий большой молоток. К сожалению (или к счастью?), HSTS встроен в платформу Chrome, которая обеспечивает среду выполнения для приложений Chrome. Возможно, вам стоит поискать альтернативные фреймворки для приложений (Электрон? Node-WebKit? Требуется исследование). - person Xan; 09.07.2016