Convertir solicitudes HTTP a SOCKS5

46

Actualmente estoy haciendo algunos trabajos de prueba con TOR y me encontré con un pequeño problema. El cliente de Tor solo admite la recepción de conexiones a través de un protocolo SOCKS5, pero las aplicaciones que estoy usando solo admiten protocolos HTTP Proxy.

¿Es posible poner algo en el medio? Así que por ejemplo se fue.

Mi programa (solo HTTP)> Convertidor HTTP a SOCKS> Servidor Tor SOCKS5

Dustin
fuente
Podrías usar un sistema operativo (por ejemplo, Tails y Whonix) que enruta de forma transparente todo el tráfico a través de Tor sin que la aplicación tenga que admitir servidores proxy. Esto también reduce en gran medida el riesgo de fugas de DNS y otras derivaciones de Tor.
CodesInChaos

Respuestas:

44

Parece que DeleGate puede hacer esto, con algo como lo siguiente (donde DeleGate aceptará conexiones HTTP en el puerto 8080 y lo reenviará a un servidor SOCKS en el puerto 9050):

delegated -P8080 SERVER=http SOCKS=localhost:9050
mgorven
fuente
@ Dboy1612: ¿Puede contarnos su experiencia con delegados para este caso de uso? También tengo el mismo caso de uso.
pradeepchhetri
Es una gran herramienta. Nueva versión (v9.9.9) lanzada recientemente.
kev
1
¿Alguna idea de por qué requiere una dirección de correo electrónico durante la descarga Y la instalación?
Halil Özgür
2
@pradeepchhetri Después de pasar un día jugando delegate(d), he concluido que está absolutamente decidido a filtrar las solicitudes de DNS, a pesar de las múltiples afirmaciones contrarias en la documentación de configuración. Me encantaría descubrir que estoy equivocado al respecto, pero soy pesimista sobre ese punto.
Adam Mackler
Funciona muy bien
gato
9

El paquete Tor ya no tiene polipo, aquí están las preguntas frecuentes oficiales de tor :

En el pasado, los paquetes Tor incluían un proxy HTTP como Privoxy o Polipo, únicamente para evitar un error en Firefox que finalmente se solucionó en Firefox 6. Ahora no necesita un proxy HTTP separado para usar Tor, y de hecho dejarlo out te hace más seguro porque Torbutton tiene un mejor control sobre la interacción de Firefox con los sitios web.

Si está intentando utilizar alguna aplicación externa con Tor, el paso cero debería ser releer el conjunto de advertencias para encontrar formas de equivocarse. El primer paso debería ser intentar usar un proxy de Socks en lugar de un proxy http: Tor ejecuta un proxy de Socks en el puerto 9050 en Windows, o consulte más arriba para OSX y Linux.

Si eso falla, no dude en instalar privoxy . Sin embargo, tenga en cuenta que este enfoque no se recomienda para usuarios novatos. Privoxy tiene una configuración de ejemplo de Tor y Privoxy .

Stefan Rogin
fuente
1
Me funcionó tnx!
Hikari
7

También puedes usar Privoxy . Agregue esta línea a su config.txtarchivo:

forward-socks5 / 127.0.0.1:9050 .

(No olvides el pequeño punto al final).

Luego use el proxy HTTP o HTTPS en 127.0.0.1:8118

Huésped
fuente
Una manera increíble y fácil. gracias. funciona como un encanto
iraj jelodari
5

No especificó un sistema operativo. Por favor, hazlo en el futuro.


Esta respuesta recomienda Polipo, que se incluye en el paquete Vidalia alojado por el proyecto Tor y, por lo tanto, probablemente lo recomienden para Windows. Polipo también tiene una versión * nix (y fue originalmente diseñado para * nix), por lo que he incluido instrucciones sobre cómo configurarlo; consulte la segunda sección a continuación. Es una solución bastante ligera, si importa.


Ventanas

Descargue el paquete Vidalia. Incluye la GUI de Vidalia y un programa llamado Polipo, junto con Tor. En el paquete, Polipo por defecto ejecuta un proxy HTTP en el puerto 8118 que redirige a través del proxy Tor SOCKS en el puerto 9050.

Configuración avanzada

También es posible configurar Polipo manualmente, sin el paquete Vidalia.

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

También proporcionan binarios que debe descargar.

Configuración

Polipo se configura estableciendo una serie de variables de configuración en el archivo de configuración de Polipo, que es un archivo de texto sin formato. Para decirle a Polipo que use tor y no almacene en caché ninguna página obtenida en el disco, deberá agregar las siguientes líneas a su archivo de configuración:

socksParentProxy = localhost:9050
diskCacheRoot=""

También querrá deshabilitar la interfaz de configuración local para protegerse de las vulnerabilidades del navegador:

disableLocalInterface=true

Corriendo

Al ejecutar Polipo, debe especificar la ubicación del archivo de configuración, utilizando el indicador -c en la línea de comando de Polipo:

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

Tenga en cuenta que incluso en Windows debe usar la sintaxis de Unix para el nombre de archivo (usando barras diagonales) y no puede especificar un dispositivo ("unidad") para usar.

El puerto de escucha predeterminado de Polipo es 8123.

La configuración predeterminada del paquete Vidalia se incluye al final de esta respuesta.


*nada

Incluye Linux, Unix, BSD, OS X, la mayoría de los principales sistemas operativos modernos (2012) que no están basados ​​en NT (Windows).

Una vez más, tomado de http://www.pps.jussieu.fr/~jch/software/polipo/tor.html

Descargue un paquete desde el repositorio que utilice. Google puede ayudar aquí. Alternativamente, se puede descargar un binario directo.

Configuración

Polipo se configura estableciendo una serie de variables de configuración en el archivo de configuración de Polipo, que es ~/.polipoo /etc/polipo/config, lo que exista. Para decirle a Polipo que use tor y no almacene en caché ninguna página obtenida en el disco, deberá agregar las siguientes líneas a su archivo de configuración:

socksParentProxy = localhost:9050
diskCacheRoot=""

También querrá deshabilitar la interfaz de configuración local para protegerse de las vulnerabilidades del navegador:

disableLocalInterface=true

Si desea especificar una ubicación diferente para el archivo de configuración, puede especificarlo utilizando el indicador -c en la línea de comando de Polipo.

Tenga en cuenta que si instaló Polipo desde un binario proporcionado por la distribución, probablemente no tendrá en cuenta ~ / .polipo; deberá editar / etc / polipo / config.

Corriendo

Si instaló Polipo desde un paquete proporcionado por distribución, Polipo probablemente ya se esté ejecutando; deberá reiniciarlo para que tenga en cuenta su nueva configuración. De lo contrario, solo tome una ventana de terminal libre y escriba:

$ polipo

Si está utilizando una ubicación no estándar para el archivo de configuración de Polipo, especifíquelo en la línea de comando, por ejemplo:

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

El puerto de escucha predeterminado de Polipo es 8123.

La configuración predeterminada del paquete Vidalia se incluye al final de esta respuesta.


Configuración predeterminada de Polipo (paquete Vidalia)

Esta es mi configuración predeterminada de Polipo del paquete Vidalia para Windows. Por lo que parece, también debería funcionar en * nix: por lo que puedo decir, no hay nada específico de la plataforma. Sí, es una configuración de 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
Mover
fuente
Estoy usando polipo en Mac OS X 10.6. Parece tener algunos problemas al hacer solicitudes POST a veces. El sitio oficial de polipo está aquí y aquí .
Siu Ching Pong -Asuka Kenji-
También estoy usando 3proxy en Windows. Lo uso para convertir mi túnel SSH (SOCKS5) en un proxy HTTP para programas que no son compatibles con SOCKS. 3proxy es desarrollado por los rusos. Es de código abierto. El sitio oficial está aquí y su proyecto SourceForge está aquí (no tan actualizado como el sitio oficial).
Siu Ching Pong -Asuka Kenji-
2

Fiddler también permite una conversión de una solicitud http a una solicitud de túnel de calcetines.

Hice esto para impulsar algunas actualizaciones de Windows para que se ejecuten a través de una conexión de calcetines (a través de Amazon EC2 y Putty).

Desde esta página https://groups.google.com/forum/#!topic/httpfiddler/6m2xEe0fRmw

En Fiddler hay una pestaña "FiddlerScript" donde puede agregar lo siguiente:

Usando el X-OverrideGatewayindicador, use el socks=prefijo para indicar que> Fiddler debe usar el protocolo SOCKS v4a cuando habla con el servidor ascendente.

Por ejemplo, el instalador TOR configura un punto de entrada a la red TOR utilizando un proxy SOCKS en el puerto 9150 llamado Polipo. Puede agregar lo siguiente dentro del OnBeforeRequestmétodo de FiddlerScript para enrutar cualquier solicitud a test.example.com a través de la red TOR:

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

Si prefiere enviar todo el tráfico a través de los CALCETINES, simplemente puede configurar el X-OverrideGatewayindicador incondicionalmente para cada sesión.

David d C e Freitas
fuente
0

WinGate también puede hacer esto. Verifique la pestaña Conexión en su proxy WWW y puede elegir SOCKS4 ascendente, SOCKS4a o proxy HTTP.

WinGate también tiene una licencia gratuita para 10 usuarios concurrentes.

Pestaña WWW Proxy Connection

Descargo de responsabilidad: trabajo para Qbik, que son los autores de WinGate

Adrien
fuente