Интересно, все ли сторонние приложения будут учитывать настройки прокси. Или, если изменение общесистемных настроек прокси может помешать другим приложениям. (Например, когда для доступа в Интернет требуется прокси-сервер компании, поэтому его нельзя изменить только для перенаправления трафика twitter.com
.) К счастью, когда приложение не использует HTTPS, оно не может найти посредника. Итак: настройте «человека посередине» для twitter.com
порта 80, используя DeleGate .
Следующие шаги были протестированы на Mac OS X 10.6 и Windows XP с использованием учетных записей с полными правами администратора.
Загрузите DeleGate. Не позволяйте домашней странице 1990-х обмануть вас: программа все еще поддерживается.
Скажите DeleGate пересылать все локальные запросы через порт 80 (и 443) на сервер HTTPS, основываясь на значении заголовка Host в HTTP-запросе. Как для Mac на Intel (где
sudo
требуется использовать привилегированные порты ниже 1024):sudo ./macosxi-dg -v -P80,443 \ SERVER=https \ RELAY=vhost \ RESOLV=cache,dns \ STLS=-fcl,fsv \ ADMIN=a@b.c
Для Windows, если разархивирован на
c:\
:cd c:\dg9_9_4\bin dg9_9_4.exe -v -P80,443 SERVER=https RELAY=vhost RESOLV=cache,dns STLS=-fcl,fsv ADMIN=a@b.c
Если вам необходимо использовать прокси-сервер вашей компании для доступа в Интернет, то DeleGate с радостью воспользуется этим, если вы добавите что-то похожее
PROXY=proxy.example.com:8080
на командную строку.В своем
/etc/hosts
файле (c:\windows\system32\drivers\etc\hosts
в Windows XP; см. Википедии о расположениях в других ОС) добавьте следующую строку, чтобы перенаправить все запросы наtwitter.com
свой компьютер. Обратите внимание, что сопоставление доменного имени с IP-адресом не учитывает протокол. Итак: это будет использоваться не только для HTTP, но и для HTTPS (и всего остального, например, таких как командыping
).127.0.0.1 twitter.com
Убедитесь, что ваш браузер не настроен на использование прокси-сервера, или добавьте
twitter.com
в качестве исключения. На случай, если ваш браузер кэширует IP-адрес Twitter, вы можете перезапустить его.Теперь http://twitter.com фактически получает вас (и все ваши приложения)
https://twitter.com
.
Вывод показывает, что действительно HTTPS-сайт запрашивается из https://twitter.com
:
REQUEST - GET / HTTP/1.1 REQUEST = https://twitter.com:443/ GET / HTTP/1.1 [..] ConnectToServer connected [16] ## SSLway -- TLSxSNI: sent ru=0 ty=0 nm=localhost ## SSLway ## 0.459622 connected/accepted ## SSLway server's cert. = **subject / C=US/ O=twitter.com/ OU=GT09721236/ OU=See www.rapidssl.com/resources/cps (c)09/ OU=Domain Control Validated - RapidSSL(R)/ CN=twitter.com **issuer / C=US/ O=Equifax Secure Inc./ CN=Equifax Secure Global eBusiness CA-1
При использовании MOUNT="/* https://twitter.com/*"
вместо того, чтобы RELAY=vhost
даже http://localhost
дать один https://twitter.com
:
При явном запросе использования HTTPS https://twitter.com
цепочка доверенных сертификатов разрывается: приложение, поддерживающее HTTPS , обнаружит атаку «человек посередине» и завершится неудачно, если не сможет запросить у вас разрешение на продолжение:
После тестирования для запуска в качестве службы в Windows просто удалите -v
параметр. Это установит программу как сервис. Затем он будет работать в фоновом режиме и спросит вас, хотите ли вы запустить его при запуске:
Trying to start as a service [DeleGate Server -P80,443] ... Set Automatic Start on System Startup ? [y] / n :
После выполнения вышеуказанной команды без -v
параметра: см. Панель управления »Администрирование» Службы, чтобы вручную запустить или остановить DeleGate. Обратите внимание, что этот сервис будет ссылаться на место, откуда вы изначально запустили dg9_9_4.exe
программу. Таким образом, вы не должны удалять или перемещать эту программу; например, обязательно разархивируйте загрузку, c:\dg9_9_4
чтобы избежать ссылки на какой-либо каталог загрузок, который вы можете удалить в будущем.
Чтобы удалить службу, просто убедитесь, что для параметра указано то же значение -P
:
dg9_9_4.exe -P80,443 ADMIN=a@b.c [..] The service `DeleGate Server -P80,443' exists. Delete it ? [y] / n : y OK. DELETEd the previous service. Create a new service ? [y] / n : n
Наконец, можно задаться вопросом, откуда DeleGate знает IP-адрес twitter.com (как мы сопоставили его с 127.0.0.1 в hosts
файле). DeleGate на самом деле извлекает это из-за RESOLV=cache,dns
:
MOUNT[5]X[2] /* https://twitter.com/* SOA got [162.143.168.in-addr.arpa][ns1.dn.net] [dnsadmin.enterprise.verio.net] 2008121001 10800 3600 604800 86400