Источник:
http://prxbx.com/forums/showthread.php?tid=1618
Как фильтровать HTTPS-соединения в «Проксомитроне»
«ProxHTTPSProxy» — программа, которая упрощает работу «Проксомитрона» по защищенному соединению — HTTPS.
Предыстория:
«Проксомитрон» может пропускать защищенные пакеты без изменений («SSL Pass-Thru»), расшифровать полностью и послать браузеру снова зашифрованное им (нужны библиотеки, сертификат и пометить в настройках "use ssleay..."), а также может расшифровать и послать браузеру простой http, после зашифровать снова на выходе к серверу(Half-SSL). Для последнего адрес надо вводить в виде
http://https.. вместо
https:// в строке браузера, помечать использование ssleay и openssl при этом не нужно.
В любом случае постоянно лезут окна, двух видов: предупреждения браузера и самого «Проксомитрона». От первых можно избавиться, разрешая для каждого нового сайта сертификат «Проксомитрона». Но иногда все равно выдает ошибку, зависит от браузера и сайта. Можно при этом добавить сайт в bypass либо пробовать зайти на сам домен, отсекая адрес после .com или типа того. Также можно пробовать вручную импортировать сайт в исключения. В общем, это все долго и трудно. Также для избавления от предупреждения «Проксомитрона» нужно нажать кнопку «Allow for session». Это все слабые решения.
Существуют фильтры, которые переводят https ссылки в вид
http://https.. Долго разбираться, как их настроить, написать свои и вообще как они будут работать. Так что это не вариант тоже, хотя и возможность.
Кто еще не пробовал: бесполезно просто перенаправлять трафик с https на http командами $JUMP и $RDIR. Браузер это понимает и запрещает переход для защиты.
Как видите, совсем не просто фильтровать https. Хотя в нем и мало рекламы покамест. Другие программы тоже этого не делают на сегодня, из популярных — «Adguard» и «Admuncher» также бессильны.
Решение:
На том форуме один программист сделал прокси для «Проксомитрона». Он расшифровывает самостоятельно трафик, отправляет в «Проксомитрон» простой, потом шифрует на обратном пути из браузера и затем «Проксомитрона», опять превращая ответ в https. Так, по крайней мере, описано.
Работает так:
На каждый https-запрос возвращает браузеру (не «Проксомитрону»!) состояние "307 Moved Temporarily" с новым заголовком "Location" , содержащим http-версию запроса.
В отличие от $JUMP и $RDIR, этого оказывается достаточно, чтобы задурить браузер и заставить его думать, что все в порядке и перейти к переадресации без окна предупреждения и запрета.
Дальше браузер идет по этой ссылке через «Проксомитрон», который отправляет эту ссылку уже на выходе, а не входе (в браузер), в «ProxHTTPSProxy». Последний, в свою очередь, снова переводит самопальный запрос в https и отправляет в сеть. Из сети забирает по https страницу, расшифровывает, под видом http отправляет в браузер через «Проксомитрон». Какое-то время про https браузер не вспоминает, потому что видит только http.
Окон с предупреждениями «Проксомитрона» я не видел вообще. Но браузер требует один раз подтверждения для каждого сайта: хотя он уже должен думать, что на простом сайте, но все же просит подтвердить, так как имя сертификата всегда «Proxomitron», а домены сайтов разные. Объясните лучше, если это понимаете.
По этой схеме все равно желательно добавлять сертификат proxcert.pem в браузер (без него будет торчать «Неизвестный» со списком сайтов), им же пользуется «ProxHTTPSProxy». «Проксомитрон» тоже, но тут он ему не нужен.
Http ссылка от «ProxHTTPSProxy» не похожа на остальные тем, что на конце домена приписывается :443/. Подробнее читайте на том форуме. Но ничего особо важного тут нет.
Есть проблемы с логинами в «Гугле» и других сайтах. Видимо, не передает куки или еще что. Но что есть, то есть. Улучшите, если можете. Могут правила помочь в заголовках по этой части.
Установка:
Скачать вот это:
http://www.sendspace.com/file/i78y2c
http://www.4shared.com/archive/G9emBeoX/ProxHTTPSProxy.html
Обе ссылки на один файл. Это «ProxHTTPSProxy» — две версии в упаковке: на питоне и скомпилированная для «Windows».
Потом:
1. На
http://www.python.org/download/ скачать и установить Python 2.7.3 Windows Installer (Windows binary -- does not include source) или Python 2.7.3 Windows X86-64 Installer (Windows AMD64 / Intel 64 / X86-64 binary [1] -- does not include source).
2. На
http://slproweb.com/products/Win32OpenSSL.html скачать Win32 OpenSSL v1.0.1c — 16MB Installer (у меня с такой работает, для x64 качать другую версию). Установить.
3. Перезапустить компьютер.
4. В настройках «Firefox» или другого браузера, в разделе проксей поставить ручные настройки прокси и выставить такое:
HTTP-proxy: localhost порт 8192 (меняется в настройках «Проксомитрона»)
SSL-proxy: localhost порт 8192
(SSL-proxy: localhost on 8081 — не надо так, но тоже работать будет, это для теории — соединяет с «ProxHTTPSProxy»).
5. Запустить «ProxHTTPSProxy» (использую нескомпилированную версию с расширением .py — ProxHTTPSProxy.py, но можно и .exe использовать). Должно появиться черное окно.
6. Открыть «Проксомитрон» > Proxy > Add > 127.0.0.1:8081 > OK.
Выбрать Test и посмотреть, будет ли OK в обоих окнах.
7. Вставить в Headers «Проксомитрона» такие два правила:
Цитата: |
[HTTP headers]
In = FALSE
Out = TRUE
Key = "ProxHTTPSProxy"
URL = "$URL(http://?++:443/\w) $SETPROXY(127.0.0.1:8081)" |
Цитата: |
[HTTP headers]
In = FALSE
Out = TRUE
Key = "ProxHTTPSProxy 2"
URL = "$URL(https://?+) $SETPROXY(127.0.0.1:8081)" |
8. Из папки с «ProxHTTPSProxy» взять .pem-сертификат и импортировать его в браузер. Найти это в настройках просто.
9. Готово. Открыть https-сайт. Появится предупреждение. Сделать исключение для сертификата. Дальше должен открываться нормально и с фильтрованием.
Как проверить фильтрование
В фильтры страниц вставить такое правило:
Цитата: |
[Patterns]
Name = "TEST"
Active = TRUE
URL = "\wworkflowy.com"
Limit = 20
Match = "id="billboard""
Replace = "style="display:none"" |
https://workflowy.com/
Сходить на сайт. Логин должен быть затерт.
Чтобы отключать переадресацию на «ProxHTTPSProxy», жать кнопку «Bypass».
Чтобы отключать переадресацию для отдельных ссылок и сайтов, которые подыхают в «ProxHTTPSProxy», добавлять конкретные ссылки в список «Bypass» «Проксомитрона». Тогда он их будет пропускать мимо и не будет отправлять на «ProxHTTPSProxy».
Все равно окна лезут, но по одному разу. Некоторые страницы, как и было указано, не логинятся и не работают. Надо добавлять их в «Bypass». В любом случае, на странице с логином фильтровать обычно нечего.
Пользуйтесь, кому надо.