Converter solicitações HTTP em SOCKS5

46

Atualmente, estou fazendo alguns testes com o TOR e me deparei com um pequeno problema. O cliente Tor suporta apenas o recebimento de conexões por meio de um protocolo SOCKS5, mas os aplicativos que estou usando suportam apenas protocolos proxy HTTP.

É possível colocar algo no meio? Então, por exemplo, foi.

Meu programa (apenas HTTP)> Conversor HTTP para SOCKS> Tor SOCKS5 Server

Dustin
fonte
Você pode usar um sistema operacional (por exemplo, Tails e Whonix) que direcione todo o tráfego de forma transparente através do Tor, sem que o aplicativo precise suportar proxies. Isso também reduz bastante o risco de vazamentos de DNS e outros desvios do Tor.
CodesInChaos

Respostas:

44

Parece que o DeleGate pode fazer isso, da seguinte forma (onde o DeleGate aceitará conexões HTTP na porta 8080 e encaminhará para um servidor SOCKS na porta 9050):

delegated -P8080 SERVER=http SOCKS=localhost:9050
mgorven
fonte
@ Dboy1612: Você pode contar sua experiência com o delegado para este caso de uso. Eu também tenho o mesmo caso de uso.
Pradeepchhetri
É uma ótima ferramenta. Nova versão (v9.9.9) lançada recentemente.
kev
11
Alguma idéia de por que ele requer um endereço de email durante o download E a instalação?
Halil Özgür
2
@pradeepchhetri Depois de passar um dia brincando delegate(d), concluí que está absolutamente determinado a vazar solicitações de DNS, apesar de várias reivindicações contrárias na documentação de configuração. Eu adoraria descobrir que estou errado sobre isso, mas sou pessimista nesse ponto.
Adam Mackler
Funciona muito bem:)
gato
9

O pacote Tor não possui mais polipo, veja a FAQ oficial do tor :

No passado, os pacotes do Tor incluíam um proxy HTTP como Privoxy ou Polipo, apenas para solucionar um bug no Firefox que foi finalmente corrigido no Firefox 6. Agora você não precisa de um proxy HTTP separado para usar o Tor e, de fato, deixá-lo out torna você mais seguro porque o Torbutton tem melhor controle sobre a interação do Firefox com os sites.

Se você estiver tentando usar algum aplicativo externo com o Tor, a etapa zero deve ser reler o conjunto de avisos para saber como você pode errar. A primeira etapa deve ser a tentativa de usar um proxy Socks em vez de um proxy http - o Tor executa um proxy Socks na porta 9050 no Windows ou veja acima para OSX e Linux.

Se isso falhar, instale o privoxy . No entanto, saiba que essa abordagem não é recomendada para usuários iniciantes. O Privoxy possui um exemplo de configuração do Tor e do Privoxy .

Stefan Rogin
fonte
11
Funcionou para mim tnx!
Hikari
7

Você também pode usar o Privoxy . Adicione esta linha ao seu config.txtarquivo:

forward-socks5 / 127.0.0.1:9050 .

(Não esqueça o pequeno ponto no final.)

Em seguida, use o proxy HTTP ou HTTPS em 127.0.0.1:8118

Hóspede
fonte
uma maneira incrível e fácil. obrigado. funciona como um encanto
iraj jelodari
5

Você não especificou um sistema operacional. Por favor, faça-o no futuro.


Esta resposta recomenda Polipo, que está incluído no pacote Vidalia hospedado pelo projeto Tor e, portanto, provavelmente recomendado por eles para Windows. O Polipo também possui uma versão * nix (e foi originalmente projetada para * nix), então eu incluí instruções sobre como configurá-lo - consulte a segunda seção abaixo. É uma solução bastante leve, se importa.


janelas

Faça o download do pacote Vidalia. Inclui a GUI Vidalia e um programa chamado Polipo, junto com o Tor. No pacote, o Polipo, por padrão, executa um proxy HTTP na porta 8118 que redireciona através do proxy Tor SOCKS na porta 9050.

Configuração avançada

Também é possível configurar o Polipo manualmente, sem o pacote Vidalia.

Retirado de http://www.pps.jussieu.fr/~jch/software/polipo/tor.html

Eles também fornecem binários que você deve baixar.

Configuração

O Polipo é configurado definindo várias variáveis ​​de configuração no arquivo de configuração do Polipo, que é um arquivo de texto sem formatação. Para instruir o Polipo a usar tor e não armazenar em cache nenhuma página buscada no disco, você deverá adicionar as seguintes linhas ao seu arquivo de configuração:

socksParentProxy = localhost:9050
diskCacheRoot=""

Você também deseja desativar a interface de configuração local para se proteger das vulnerabilidades do navegador:

disableLocalInterface=true

Executando

Ao executar o Polipo, você deve especificar o local do arquivo de configuração, usando o sinalizador -c na linha de comando do Polipo:

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

Observe que, mesmo no Windows, você deve usar a sintaxe do Unix para o nome do arquivo (usando barras) e não pode especificar um dispositivo ("drive") para usar.

A porta de escuta padrão do Polipo é 8123.

A configuração padrão do pacote Vidalia está incluída na parte inferior desta resposta.


* nix

Inclui Linux, Unix, BSD, OS X, os principais sistemas operacionais modernos (2012) que não são baseados no NT (Windows).

Mais uma vez, extraído de http://www.pps.jussieu.fr/~jch/software/polipo/tor.html

Faça o download de um pacote de qualquer repositório que você usa. O Google pode ajudar aqui. Como alternativa, um binário direto pode ser baixado.

Configuração

O Polipo é configurado definindo-se várias variáveis ​​de configuração no arquivo de configuração do Polipo, que é um ~/.polipoou outro /etc/polipo/config, o que existir. Para instruir o Polipo a usar tor e não armazenar em cache nenhuma página buscada no disco, adicione as seguintes linhas ao seu arquivo de configuração:

socksParentProxy = localhost:9050
diskCacheRoot=""

Você também deseja desativar a interface de configuração local para se proteger das vulnerabilidades do navegador:

disableLocalInterface=true

Se você desejar especificar um local diferente para o arquivo de configuração, poderá especificá-lo usando o sinalizador -c na linha de comando do Polipo.

Observe que se você instalou o Polipo a partir de um binário fornecido pela distribuição, provavelmente não levará em conta o ~ / .polipo - será necessário editar o arquivo / etc / polipo / config.

Executando

Se você instalou o Polipo a partir de um pacote fornecido pela distribuição, provavelmente o Polipo já está em execução; você precisará reiniciá-lo para levar em conta sua nova configuração. Caso contrário, basta pegar uma janela de terminal gratuita e digite:

$ polipo

Se você estiver usando um local não padrão para o arquivo de configuração do Polipo, especifique-o na linha de comando, por exemplo:

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

A porta de escuta padrão do Polipo é 8123.

A configuração padrão do pacote Vidalia está incluída na parte inferior desta resposta.


Configuração padrão do Polipo (pacote Vidalia)

Esta é a minha configuração padrão do Polipo do pacote Vidalia para Windows. Pelo que parece, ele deve funcionar no * nix também - não há nada de plataforma específica, até onde eu saiba. Sim, é uma configuração 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
Prumo
fonte
Estou usando polipo no Mac OS X 10.6. Parece ter alguns problemas ao fazer solicitações POST às vezes. O site oficial do polipo está aqui e aqui .
Siu Ching Pong -Asuka Kenji-
Também estou usando o 3proxy no Windows. Eu o uso para transformar meu túnel SSH (SOCKS5) em um proxy HTTP para programas que não oferecem suporte a SOCKS. 3proxy é desenvolvido pelos russos. É de código aberto. O site oficial está aqui e seu projeto SourceForge está aqui (não tão atualizado quanto o site oficial).
você precisa saber é o seguinte
2

O Fiddler também permite a conversão de uma solicitação http para uma solicitação com meias meias.

Fiz isso para enviar algumas atualizações do Windows para executar através de uma conexão de meias (via Amazon EC2 e Putty).

A partir desta página https://groups.google.com/forum/#!topic/httpfiddler/6m2xEe0fRmw

No Fiddler, há uma guia "FiddlerScript", na qual você pode adicionar o seguinte:

Usando o X-OverrideGatewaysinalizador, use o socks=prefixo para indicar que> o Fiddler deve usar o protocolo SOCKS v4a ao falar com o servidor upstream.

Por exemplo, o instalador do TOR configura um ponto de entrada para a rede TOR usando um proxy SOCKS na porta 9150 chamado Polipo. Você pode adicionar o seguinte no OnBeforeRequestmétodo do FiddlerScript para rotear qualquer solicitação para test.example.com pela rede TOR:

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

Se preferir enviar todo o tráfego por meio do SOCKS, você pode simplesmente definir o X-OverrideGatewaysinalizador incondicionalmente para cada sessão.

David d C e Freitas
fonte
0

O WinGate também pode fazer isso. Verifique a guia Conexão no seu proxy WWW e você pode escolher o proxy SOCKS4, SOCKS4a ou HTTP upstream.

O WinGate também possui uma licença gratuita para 10 usuários simultâneos.

Guia Conexão de WWW Proxy

Isenção de responsabilidade: trabalho para a Qbik, que são os autores do WinGate

Adrien
fonte