Конвертировать HTTP-запросы в SOCKS5
В настоящее время я занимаюсь тестированием с TOR и столкнулся с небольшой проблемой. Клиент Tor поддерживает только получение соединений по протоколу SOCKS5, но используемые мной приложения поддерживают только HTTP Proxy Protocals.
Можно ли поставить что-то посередине? Так что к примеру это пошло.
Моя программа (только HTTP) > Конвертер HTTP в SOCKS> Сервер Tor SOCKS5
8 ответов
Похоже, что DeleGate может сделать это следующим образом (где DeleGate будет принимать HTTP-соединения через порт 8080 и пересылать на сервер SOCKS через порт 9050):
delegated -P8080 SERVER=http SOCKS=localhost:9050
Вы также можете использовать Privoxy. Добавьте эту строку в свой config.txt
файл:
forward-socks5 / 127.0.0.1:9050 .
(Не забудьте маленькую точку в конце.)
Затем используйте HTTP или HTTPS прокси на 127.0.0.1:8118
HTTP-прокси для Socks5
Установить python-proxy
$ pip3 install pproxy
$ pproxy -r socks5://127.0.0.1:9150 -vv
Применение
http://127.0.0.1:8080
https://127.0.0.1:8080
В комплекте Tor больше нет polipo, вот из официального FAQ по tor:
В прошлом пакеты Tor включали HTTP-прокси, такой как Privoxy или Polipo, исключительно для того, чтобы обойти ошибку в Firefox, которая была окончательно исправлена в Firefox 6. Теперь вам не нужен отдельный HTTP-прокси для использования Tor, и фактически его оставляют. Out делает вас безопаснее, потому что Torbutton лучше контролирует взаимодействие Firefox с веб-сайтами.
Если вы пытаетесь использовать какое-то внешнее приложение с Tor, нулевым шагом должно быть перечитывание набора предупреждений о путях, которые вы можете испортить. Первым делом следует попытаться использовать прокси-сервер Socks вместо прокси-сервера http - Tor запускает прокси-сервер Socks на порту 9050 в Windows или см. Выше для OSX и Linux.
Если это не помогло, не стесняйтесь установить privoxy. Тем не менее, имейте в виду, что этот подход не рекомендуется для начинающих пользователей. Privoxy имеет пример конфигурации Tor и Privoxy.
Вы не указали операционную систему. Пожалуйста, сделайте это в будущем.
В этом ответе рекомендуется Polipo, который входит в комплект Vidalia, размещенный в проекте Tor, и поэтому, вероятно, рекомендуется для Windows. Polipo также имеет версию *nix (и изначально была разработана для *nix), поэтому я включил инструкции по ее настройке - см. Второй раздел ниже. Это довольно легкое решение, если оно имеет значение.
Windows
Загрузите комплект Vidalia. Он включает графический интерфейс Vidalia и программу под названием Polipo, а также Tor. В комплекте Polipo по умолчанию запускает прокси-сервер HTTP на порт 8118, который перенаправляет через прокси-сервер Tor SOCKS на порт 9050.
Дополнительные настройки
Также можно настроить Polipo вручную, без комплекта Vidalia.
Взято с http://www.pps.jussieu.fr/~jch/software/polipo/tor.html
Они также предоставляют двоичные файлы, которые вы должны загрузить.
конфигурация
Polipo настраивается путем установки нескольких переменных конфигурации в файле конфигурации Polipo, который представляет собой простой текстовый файл. Чтобы указать Polipo использовать tor, а не кэшировать какие-либо извлеченные страницы на диске, вам нужно добавить следующие строки в файл конфигурации:
socksParentProxy = localhost:9050 diskCacheRoot=""
Вы также захотите отключить локальный интерфейс конфигурации, чтобы защитить себя от уязвимостей браузера:
disableLocalInterface=true
Запуск это
При запуске Polipo вы должны указать расположение файла конфигурации, используя флаг -c в командной строке Polipo:
> polipo.exe -c "/Program Files/Polipo/config.txt"
Обратите внимание, что даже в Windows вы должны использовать синтаксис Unix для имени файла (используя косую черту), и вы не можете указать устройство ("диск") для использования.
Порт прослушивания Polipo по умолчанию - 8123.
Конфигурация по умолчанию из комплекта Vidalia включена в нижней части этого ответа.
* Никс
Включает Linux, Unix, BSD, OS X, большинство основных современных (2012) операционных систем, которые не основаны на NT (Windows).
Еще раз взято с http://www.pps.jussieu.fr/~jch/software/polipo/tor.html
Загрузите пакет из любого репозитория, который вы используете. Google может помочь здесь. Кроме того, прямой двоичный файл может быть загружен.
конфигурация
Polipo настраивается путем установки нескольких переменных конфигурации в файле конфигурации Polipo, который либо
~/.polipo
или же/etc/polipo/config
в зависимости от того, что существует. Чтобы указать Polipo использовать tor, а не кэшировать какие-либо извлеченные страницы на диске, вам нужно добавить следующие строки в файл конфигурации:socksParentProxy = localhost:9050 diskCacheRoot=""
Вы также захотите отключить локальный интерфейс конфигурации, чтобы защитить себя от уязвимостей браузера:
disableLocalInterface=true
Если вы хотите указать другое местоположение для файла конфигурации, вы можете указать его, используя флаг -c в командной строке Polipo.
Обратите внимание, что если вы установили Polipo из предоставленного дистрибутива двоичного файла, он, вероятно, не будет учитывать ~/.polipo - вам нужно отредактировать / etc / polipo / config.
Запуск это
Если вы установили Polipo из предоставленного дистрибутива, вероятно, Polipo уже запущен; Вам нужно будет перезапустить его, чтобы он принял во внимание его новую конфигурацию. В противном случае просто возьмите бесплатное окно терминала и введите:
$ polipo
Если вы используете нестандартное расположение для файла конфигурации Polipo, укажите его в командной строке, например:
$ polipo -c "/Program Files/Polipo/config.txt"
Порт прослушивания Polipo по умолчанию - 8123.
Конфигурация по умолчанию из комплекта Vidalia включена в нижней части этого ответа.
Конфигурация Polipo по умолчанию (комплект Vidalia)
Это моя конфигурация Polipo по умолчанию из комплекта Vidalia для Windows. Судя по всему, он должен работать и в *nix - насколько я могу судить, нет ничего конкретного для платформы. Да, это конфиг IPv4.
### $Id$
#
### Basic configuration
### *******************
# Uncomment one of these if you want to allow remote clients to
# connect:
# proxyAddress = "::0" # both IPv4 and IPv6
# proxyAddress = "0.0.0.0" # IPv4 only
proxyAddress = "127.0.0.1"
proxyPort = 8118
# If you do that, you'll want to restrict the set of hosts allowed to
# connect:
# allowedClients = "127.0.0.1, 134.157.168.57"
# allowedClients = "127.0.0.1, 134.157.168.0/24"
allowedClients = 127.0.0.1
allowedPorts = 1-65535
# Uncomment this if you want your Polipo to identify itself by
# something else than the host name:
proxyName = "localhost"
# Uncomment this if there's only one user using this instance of Polipo:
cacheIsShared = false
# Uncomment this if you want to use a parent proxy:
# parentProxy = "squid.example.org:3128"
# Uncomment this if you want to use a parent SOCKS proxy:
socksParentProxy = "localhost:9050"
socksProxyType = socks5
### Memory
### ******
# Uncomment this if you want Polipo to use a ridiculously small amount
# of memory (a hundred C-64 worth or so):
# chunkHighMark = 819200
# objectHighMark = 128
# Uncomment this if you've got plenty of memory:
# chunkHighMark = 50331648
# objectHighMark = 16384
chunkHighMark = 33554432
### On-disk data
### ************
# Uncomment this if you want to disable the on-disk cache:
diskCacheRoot = ""
# Uncomment this if you want to put the on-disk cache in a
# non-standard location:
# diskCacheRoot = "~/.polipo-cache/"
# Uncomment this if you want to disable the local web server:
localDocumentRoot = ""
# Uncomment this if you want to enable the pages under /polipo/index?
# and /polipo/servers?. This is a serious privacy leak if your proxy
# is shared.
# disableIndexing = false
# disableServersList = false
disableLocalInterface = true
disableConfiguration = true
### Domain Name System
### ******************
# Uncomment this if you want to contact IPv4 hosts only (and make DNS
# queries somewhat faster):
#
# dnsQueryIPv6 = no
# Uncomment this if you want Polipo to prefer IPv4 to IPv6 for
# double-stack hosts:
#
# dnsQueryIPv6 = reluctantly
# Uncomment this to disable Polipo's DNS resolver and use the system's
# default resolver instead. If you do that, Polipo will freeze during
# every DNS query:
dnsUseGethostbyname = yes
### HTTP
### ****
# Uncomment this if you want to enable detection of proxy loops.
# This will cause your hostname (or whatever you put into proxyName
# above) to be included in every request:
disableVia = true
# Uncomment this if you want to slightly reduce the amount of
# information that you leak about yourself:
# censoredHeaders = from, accept-language
# censorReferer = maybe
censoredHeaders = from,accept-language,x-pad,link
censorReferer = maybe
# Uncomment this if you're paranoid. This will break a lot of sites,
# though:
# censoredHeaders = set-cookie, cookie, cookie2, from, accept-language
# censorReferer = true
# Uncomment this if you want to use Poor Man's Multiplexing; increase
# the sizes if you're on a fast line. They should each amount to a few
# seconds' worth of transfer; if pmmSize is small, you'll want
# pmmFirstSize to be larger.
# Note that PMM is somewhat unreliable.
# pmmFirstSize = 16384
# pmmSize = 8192
# Uncomment this if your user-agent does something reasonable with
# Warning headers (most don't):
# relaxTransparency = maybe
# Uncomment this if you never want to revalidate instances for which
# data is available (this is not a good idea):
# relaxTransparency = yes
# Uncomment this if you have no network:
# proxyOffline = yes
# Uncomment this if you want to avoid revalidating instances with a
# Vary header (this is not a good idea):
# mindlesslyCacheVary = true
# Suggestions from Incognito configuration
maxConnectionAge = 5m
maxConnectionRequests = 120
serverMaxSlots = 8
serverSlots = 2
tunnelAllowedPorts = 1-65535
Fiddler также позволяет преобразовывать HTTP-запрос в туннельный запрос socks.
Я сделал это, чтобы заставить некоторые обновления Windows запускаться через соединение socks (через Amazon EC2 и Putty).
С этой страницы https://groups.google.com/forum/
В Fiddler есть вкладка "FiddlerScript", где вы можете добавить следующее:
С использованием
X-OverrideGateway
флаг, используйтеsocks=
префикс, указывающий, что> Fiddler должен использовать протокол SOCKS v4a при обращении к вышестоящему серверу.Например, установщик TOR устанавливает точку входа в сеть TOR, используя прокси-сервер SOCKS на порту 9150, который называется Polipo. Вы можете добавить следующее в свой FiddlerScript
OnBeforeRequest
способ перенаправить любой запрос на test.example.com через сеть TOR:if (oSession.HostnameIs("test.example.com")) { oSession["x-OverrideGateway"] = "socks=127.0.0.1:9150"; }
Если вы вместо этого предпочитаете отправлять весь трафик через SOCKS, вы можете просто установить
X-OverrideGateway
флаг безоговорочно для каждой сессии.
WinGate также может сделать это. Проверьте вкладку Connection на вашем WWW-прокси, и вы можете выбрать восходящий SOCKS4, SOCKS4a или HTTP-прокси.
WinGate также имеет бесплатную лицензию для 10 одновременно работающих пользователей.
Отказ от ответственности: я работаю на Qbik, которые являются авторами WinGate
Действительно хорошее решение можно найти в tinyproxy. Согласно его домашней странице, это «облегченный демон HTTP/HTTPS-прокси для операционных систем POSIX». Проекту более 22 лет, и он до сих пор активно поддерживается . Его можно настроить для пересылки всего трафика на вышестоящий прокси-сервер Socks, используя следующую строку в его файле конфигурации:
upstream socks5 $IP:$PORT
В качестве альтернативы его можно настроить для разделения трафика на один из нескольких восходящих прокси-серверов, в зависимости от целевого URL-адреса:
upstream socks5 $IP1:$PORT1 ".some.domain"
upstream http $IP2:$PORT2 ".some.other.domain"
Любой трафик, который явно не маршрутизируется через восходящий поток, будет маршрутизироваться через шлюз узла, на котором работает tinyproxy.