Konwertuj żądania HTTP na SOCKS5

46

Obecnie pracuję nad testami z TOR i natknąłem się na mały problem. Klient Tora obsługuje tylko odbieranie połączeń za pomocą protokołu SOCKS5, ale aplikacje, których używam, obsługują tylko protokoły proxy HTTP.

Czy można umieścić coś na środku? Tak na przykład poszło.

Mój program (tylko HTTP)> Konwerter HTTP na SOCKS> Serwer Tor SOCKS5

Dustin
źródło
Możesz użyć systemu operacyjnego (np. Tails i Whonix), który w sposób transparentny kieruje cały ruch przez Tora, bez konieczności obsługi przez proxy serwerów proxy. To również znacznie zmniejsza ryzyko wycieków DNS i innych obejść Tora.
CodesInChaos

Odpowiedzi:

44

Wygląda na to, że DeleGate może to zrobić za pomocą czegoś takiego (gdzie DeleGate zaakceptuje połączenia HTTP na porcie 8080 i przekaże do serwera SOCKS na porcie 9050):

delegated -P8080 SERVER=http SOCKS=localhost:9050
mgorven
źródło
@ Dboy1612: Czy możesz opowiedzieć o swoich doświadczeniach z delegowaniem dla tego przypadku użycia. Mam również ten sam przypadek użycia.
pradeepchhetri
To świetne narzędzie. Nowa wersja (v9.9.9) wydana niedawno.
kev
1
Każdy pomysł, dlaczego wymaga adresu e-mail podczas pobierania ORAZ instalacji?
Halil Özgür
2
@pradeepchhetri Po spędzeniu dnia na zabawie delegate(d)doszedłem do wniosku, że absolutnie zdeterminowane jest wyciekanie żądań DNS, pomimo wielu sprzecznych twierdzeń w dokumentacji konfiguracji. Chciałbym odkryć, że się mylę, ale jestem pesymistą w tej kwestii.
Adam Mackler,
Działa świetnie
kot
9

Pakiet Tora nie ma już polipo, oto z oficjalnego FAQ Tora :

W przeszłości pakiety Tor zawierały serwer proxy HTTP, taki jak Privoxy lub Polipo, wyłącznie w celu obejścia błędu w Firefoksie, który został ostatecznie naprawiony w Firefoksie 6. Teraz nie potrzebujesz osobnego serwera proxy HTTP, aby korzystać z Tora i faktycznie go zostawiać out czyni cię bezpieczniejszym, ponieważ Torbutton ma lepszą kontrolę nad interakcją Firefoksa ze stronami internetowymi.

Jeśli próbujesz użyć jakiejś aplikacji zewnętrznej z Torem, krok zero powinien polegać na ponownym przeczytaniu zestawu ostrzeżeń o sposobach, które możesz zepsuć. Pierwszym krokiem powinna być próba użycia proxy Socks zamiast proxy HTTP - Tor uruchamia proxy Socks na porcie 9050 w systemie Windows lub patrz wyżej dla OSX i Linux.

Jeśli to się nie powiedzie, możesz zainstalować privoxy . Należy jednak pamiętać, że takie podejście nie jest zalecane dla początkujących użytkowników. Privoxy ma przykładową konfigurację Tora i Privoxy .

Stefan Rogin
źródło
1
To działało dla mnie tnx!
Hikari,
7

Możesz także użyć Privoxy . Dodaj tę linię do config.txtpliku:

forward-socks5 / 127.0.0.1:9050 .

(Nie zapomnij małej kropki na końcu.)

Następnie użyj serwera proxy HTTP lub HTTPS pod adresem 127.0.0.1:8118

Gość
źródło
niesamowity i łatwy sposób. Dziękuję Ci. działa jak urok
iraj jelodari
5

Nie określiłeś systemu operacyjnego. Zrób to w przyszłości.


Ta odpowiedź poleca Polipo, który jest zawarty w pakiecie Vidalia hostowanym przez projekt Tor i dlatego prawdopodobnie jest zalecany przez nich dla systemu Windows. Polipo ma również wersję * nix (i został pierwotnie zaprojektowany dla * nix), więc zawarłem instrukcje dotyczące jego konfiguracji - patrz druga sekcja poniżej. Jest to raczej lekkie rozwiązanie, jeśli ma to znaczenie.


Windows

Pobierz pakiet Vidalia. Zawiera GUI Vidalia i program o nazwie Polipo, wraz z Torem. W pakiecie Polipo domyślnie uruchamia serwer proxy HTTP na porcie 8118, który przekierowuje przez serwer proxy Tor SOCKS na porcie 9050.

Ustawienia zaawansowane

Możliwe jest również ręczne skonfigurowanie Polipo bez pakietu Vidalia.

Zaczerpnięte z http://www.pps.jussieu.fr/~jch/software/polipo/tor.html

Zapewniają również pliki binarne, które należy pobrać.

Konfiguracja

Polipo konfiguruje się poprzez ustawienie szeregu zmiennych konfiguracyjnych w pliku konfiguracyjnym Polipo, który jest zwykłym plikiem tekstowym. Aby powiedzieć Polipo, aby używał Tora i nie buforował żadnych pobranych stron na dysku, będziesz chciał dodać następujące wiersze do pliku konfiguracyjnego:

socksParentProxy = localhost:9050
diskCacheRoot=""

Będziesz także chciał wyłączyć lokalny interfejs konfiguracji, aby chronić się przed lukami w przeglądarce:

disableLocalInterface=true

Uruchamiam to

Podczas uruchamiania Polipo należy określić lokalizację pliku konfiguracyjnego, używając flagi -c w wierszu poleceń Polipo:

> polipo.exe -c "/Program Files/Polipo/config.txt"

Zauważ, że nawet w systemie Windows musisz używać składni Unix dla nazwy pliku (używając ukośników do przodu) i nie możesz określić urządzenia („napędu”), które ma być używane.

Domyślny port nasłuchiwania Polipo to 8123.

Domyślna konfiguracja z pakietu Vidalia znajduje się na dole tej odpowiedzi.


*nic

Obejmuje Linux, Unix, BSD, OS X, większość głównych nowoczesnych systemów operacyjnych (2012), które nie są oparte na NT (Windows).

Jeszcze raz pochodzi z http://www.pps.jussieu.fr/~jch/software/polipo/tor.html

Pobierz pakiet z dowolnego repozytorium, którego używasz. Google może tutaj pomóc. Alternatywnie można pobrać bezpośredni plik binarny.

Konfiguracja

Polipo konfiguruje się poprzez ustawienie szeregu zmiennych konfiguracyjnych w pliku konfiguracyjnym Polipo, który jest albo, ~/.polipoalbo /etc/polipo/configcokolwiek istnieje. Aby powiedzieć Polipo, aby używał Tora i nie buforował żadnych pobranych stron na dysku, będziesz chciał dodać następujące wiersze do pliku konfiguracyjnego:

socksParentProxy = localhost:9050
diskCacheRoot=""

Będziesz także chciał wyłączyć lokalny interfejs konfiguracji, aby chronić się przed lukami w przeglądarce:

disableLocalInterface=true

Jeśli chcesz określić inną lokalizację pliku konfiguracyjnego, możesz to określić za pomocą opcji -c w wierszu polecenia Polipo.

Zauważ, że jeśli zainstalowałeś Polipo z pliku binarnego dostarczonego przez dystrybucję, prawdopodobnie nie weźmie on pod uwagę ~ / .polipo - będziesz musiał edytować / etc / polipo / config.

Uruchamiam to

Jeśli zainstalowałeś Polipo z pakietu dostarczonego przez dystrybucji, Polipo prawdopodobnie już działa; musisz go zrestartować, aby uwzględnić jego nową konfigurację. W przeciwnym razie po prostu weź wolne okno terminala i wpisz:

$ polipo

Jeśli używasz niestandardowej lokalizacji dla pliku konfiguracyjnego Polipo, określ go w wierszu poleceń, na przykład:

$ polipo -c "/Program Files/Polipo/config.txt"

Domyślny port nasłuchiwania Polipo to 8123.

Domyślna konfiguracja z pakietu Vidalia znajduje się na dole tej odpowiedzi.


Domyślna konfiguracja Polipo (pakiet Vidalia)

To jest moja domyślna konfiguracja Polipo z pakietu Vidalia dla Windows. Z wyglądu powinien on także działać w * nix - o ile wiem, nie ma specyficznej platformy. Tak, jest to konfiguracja 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
Kok
źródło
Używam polipo na Mac OS X 10.6. Wydaje się, że czasami występują problemy podczas wykonywania żądań POST. Oficjalna strona polipo jest tu i tutaj .
Siu Ching Pong -Asuka Kenji-
Używam również 3proxy w systemie Windows. Używam go, aby zmienić mój tunel SSH (SOCKS5) w serwer proxy HTTP dla programów, które nie obsługują SOCKS. 3proxy jest rozwijany przez Rosjan. Jest to oprogramowanie typu open source. Oficjalna strona jest tutaj, a jej projekt SourceForge jest tutaj (nie tak zaktualizowany jak oficjalna strona).
Siu Ching Pong -Asuka Kenji-
2

Fiddler pozwala również na konwersję z żądania HTTP na żądanie tunelowania skarpet.

Zrobiłem to, aby wypchnąć niektóre aktualizacje systemu Windows, aby działały przez połączenie skarpet (przez Amazon EC2 i Putty).

Z tej strony https://groups.google.com/forum/#!topic/httpfiddler/6m2xEe0fRmw

W Fiddler znajduje się karta „FiddlerScript”, w której można dodać następujące elementy:

Za pomocą X-OverrideGatewayflagi użyj socks=prefiksu, aby wskazać, że> Fiddler powinien używać protokołu SOCKS v4a podczas rozmowy z serwerem nadrzędnym.

Na przykład instalator TOR konfiguruje punkt wejścia do sieci TOR za pomocą serwera proxy SOCKS na porcie 9150 o nazwie Polipo. Możesz dodać następujące elementy w OnBeforeRequestmetodzie FiddlerScript, aby kierować każde żądanie do test.example.com przez sieć TOR:

    if (oSession.HostnameIs("test.example.com")) {
      oSession["x-OverrideGateway"] = "socks=127.0.0.1:9150";    
  }

Jeśli wolisz zamiast tego przesyłać cały ruch za pośrednictwem SOCKS, możesz po prostu ustawić X-OverrideGatewayflagę bezwarunkowo dla każdej sesji.

David d C e Freitas
źródło
0

WinGate może to zrobić. Sprawdź zakładkę Połączenie na swoim serwerze proxy WWW i możesz wybrać upstream SOCKS4, SOCKS4a lub HTTP proxy.

WinGate ma również bezpłatną licencję dla 10 jednoczesnych użytkowników.

Karta Połączenie z serwerem proxy WWW

Uwaga: Pracuję dla Qbik, którzy są autorami WinGate

Adrien
źródło