7

На моей работе http://twitter.com заблокирован, а https://twitter нет. Есть ли способ, чтобы все программы / браузеры имели доступ к этому URL-адресу, используя протокол HTTPS вместо HTTP?

Это особенно относится к сторонним клиентам, которым требуется доступ к сайту, но обычно они жестко запрограммированы в HTTP без возможности их изменения.

ОБНОВЛЕНИЕ: я попытался создать сценарий fiddler, как предложено ниже, но я не смог его правильно запустить. Ответ со сценарием был бы наиболее полезным, или другой метод, полностью состоящий из доступа.

9 ответов9

8

Интересно, все ли сторонние приложения будут учитывать настройки прокси. Или, если изменение общесистемных настроек прокси может помешать другим приложениям. (Например, когда для доступа в Интернет требуется прокси-сервер компании, его нельзя изменить, просто перенаправив трафик на twitter.com .) К счастью, когда приложение не использует HTTPS, оно не может найти посредника. Итак: настройте посредника для twitter.com на порт 80, используя DeleGate .

Следующие шаги были протестированы на Mac OS X 10.6 и Windows XP с использованием учетных записей с полными правами администратора.

  1. Загрузите DeleGate. Не позволяйте домашней странице 1990-х обмануть вас: программа все еще поддерживается.

  2. Скажите 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 в командную строку.

  3. В вашем /etc/hosts (c:\windows\system32\drivers\etc\hosts в Windows XP; см. В Википедии расположение других ОС), добавьте следующую строку, чтобы перенаправить все запросы на twitter.com на свой компьютер. Обратите внимание, что сопоставление доменного имени с IP-адресом не учитывает протокол. Итак: это будет использоваться не только для HTTP, но и для HTTPS (и всего остального, такого как команды типа ping).

    127.0.0.1 twitter.com
    
  4. Убедитесь, что ваш браузер не настроен на использование прокси-сервера, или добавьте twitter.com в качестве исключения. На случай, если ваш браузер кэширует IP-адрес Twitter, вы можете перезапустить его.

  5. Теперь 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] {168.143.161.20:443 <- 192.168.1.68:57067}
## 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:

Твиттер через DeleGate


При явном запросе 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/*  
{R} SOA got [162.143.168.in-addr.arpa][ns1.dn.net]
  [dnsadmin.enterprise.verio.net] 2008121001 10800 3600 604800 86400
5

Вам нужен какой-то прокси-сервер с возможностью перезаписи правил. Я подозреваю, что в отсутствие лучшего ответа вы могли бы написать правило модификатора для Fiddler, чтобы сделать это. Правила Fiddler написаны на JavaScript и есть несколько примеров в Интернете.

Редактировать: Пожалуйста, посмотрите и проголосуйте, ответ Эрика Лоу на этой странице.

3

Правило скрипача довольно простое. Внутри OnBeforeRequest добавьте:

if (oSession.fullUrl.StartsWith("http://twitter.com/"))
{
    oSession.oRequest.headers.UriScheme = "https";
}
2

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

VPN-туннелирование включает в себя установление и поддержание логического сетевого соединения (которое может содержать промежуточные переходы). В этом соединении пакеты, созданные в определенном формате протокола VPN, инкапсулируются в некоторый другой базовый или несущий протокол, затем передаются между VPN-клиентом и сервером и, наконец, де-инкапсулируются на принимающей стороне.

Это означает, что все ваши пакеты отправляются через посредника в Интернете. Этот посредник обычно не блокируется брандмауэром вашей компании, и он пересылает все ваши пакеты по назначению, а затем возвращает полученные ответы на ваш компьютер. Кроме того, VPN-соединение гарантирует, что все ваши пакеты в обоих направлениях закодированы и защищены от посторонних глаз.

Вы получите лучший сервис от коммерческих продуктов, но некоторые из них бесплатны и не так уж плохи. Например, HTTP-Tunnel Client - очень хороший продукт.

1

Это не бесплатно, но у Чарльза (прокси-сервер отладки в сети) есть функция Map Remote Settings, которая может быть легко отображена с http://twitter.com на https://twitter.com с помощью графического интерфейса. Вы можете скачать пробную версию с сайта, чтобы увидеть, соответствует ли она вашим потребностям.

альтернативный текст

0

Вы можете написать скрипт Greasemonkey с помощью Firefox. Вот один для FriendFeed.

Изменить: скрипт для Twitter.

0

Под Firefox кажется, что дополнение Force-TLS решает вашу проблему.
Цитата:

Вот как это работает:

  1. Сайт x.com, обслуживаемый по HTTPS, в своем ответе предоставляет заголовок X-Force-TLS. Заголовок содержит значение максимального возраста (как долго запоминается принудительный TLS) и опционально флаг includeSubDomains.
  2. Браузер получает этот заголовок и добавляет его в базу данных Force TLS.
  3. В будущем любые запросы к x.com изменяются на HTTPS, если они выполняются через HTTP, прежде чем запрос попадет в сеть.
  4. Если какие-либо субдомены * .x.com запрашиваются через HTTP и был установлен флаг includeSubDomains, они также должны быть HTTPS.
-1

Я думаю, что нет =/

Кто-то может найти способ сделать это, но, видя это как разработчика программного обеспечения: многие приложения имеют жесткую кодировку http://twitter.com , и поскольку не только адрес, но и протокол другой, я не вижу способ сделать это автоматически, без изменения приложения. Некоторые приложения могут работать с обоими, так что вы можете настроить его.

Примечание: веб-приложения более хакерские, чем настольные.

РЕДАКТИРОВАТЬ: хорошо, crb. Прокси-сервер, в зависимости от способа блокировки Twitter, может ему помочь.

-1

Возможно, другим решением будет использование клиента, такого как DestroyTwitter или TweetDeck. Они не используют twitter.com напрямую, а пишут в Твиттере и читают API, который, вероятно, не заблокирован.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .