Tor a través de Python: ¿puede la fuga de la dirección IP real?

3

Estaba pensando en lo seguro que es usar Tor como un "proxy local" para obtener información de páginas web de forma anónima. ¿Es posible que se vea la dirección IP real?

En la página de inicio oficial de Tor afirman:

  

Tor no protege todo el tráfico de Internet de tu computadora cuando   ejecutarlo. Tor solo protege tus aplicaciones que están correctamente   Configurado para enviar su tráfico de Internet a través de Tor. Para evitar   problemas con la configuración de Tor, le recomendamos encarecidamente que utilice el Tor   Paquete de navegador. Está preconfigurado para proteger su privacidad y   anonimato en la web, siempre que esté navegando con el navegador Tor   sí mismo. Es probable que casi cualquier otra configuración del navegador web sea   no es seguro usar con Tor .

     

El navegador Tor bloqueará los complementos del navegador, como Flash, RealPlayer,   Quicktime, y otros: pueden ser manipulados para revelar su IP   dirección. Del mismo modo, no recomendamos instalar complementos adicionales   o complementos en el navegador Tor, ya que estos pueden pasar por alto Tor o de otro modo   perjudica tu anonimato y privacidad.

¿Es esto algo que me preocupa cuando ejecuto el siguiente script (con Vidalia / Tor habilitado)? ¿Se revelaría mi IP real si ejecutara el script en diferentes páginas web? La página web en el código a continuación (my-ip.heroku.com) es muy simple y solo devuelve mi dirección IP. ¿Pero qué tan expuesto estaría, por ejemplo, en páginas web con complementos de navegador como flash, realplayer, quicktime, etc.?

import socket
import socks
import http.client

def connectTor():
    socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5 , "127.0.0.1", 9050, True)
    socket.socket = socks.socksocket

def main():
    connectTor()

    print("Connected to Tor")

    conn = http.client.HTTPConnection("my-ip.heroku.com")
    conn.request("GET", "/")
    response = conn.getresponse()
    print(response.read())

if __name__ == "__main__":
    main()
    
pregunta Skaggmannen 11.08.2013 - 00:09
fuente

3 respuestas

6

En este caso, no, no se filtrará.

Lo que estás haciendo en Python aquí es simplemente realizar una solicitud HTTP a través de un proxy que resulta ser el proxy SOCKS local de Tor. La respuesta de esta solicitud será básicamente algún texto. Independientemente del contenido real de esta respuesta, su "cliente" de Python no analizará la respuesta o los complementos del usuario para ejecutar ciertos contenidos. La solicitud HTTP se pasa a través de Tor y no se realizarán solicitudes posteriores dependiendo de la respuesta.

Por lo tanto, complementos o no, JavaScript o no, no afectará su caso. Además, cuando llama a setdefaultproxy() , está configurando rdns a true , lo que evitará las pérdidas de DNS al realizar las búsquedas de DNS de forma remota.

La cita que publicaste está escrita en un lenguaje ligeramente paranoico. Obviamente, no significa que el 100% de los casos se perderá su IP si no usa Tor Browser Bundle. Solo significan que es mucho más probable que se pierda algo al usar su propio navegador, como la configuración de DNS, no deshabilitando los complementos, etc.

    
respondido por el Adi 11.08.2013 - 02:16
fuente
0

Cuando está preocupado por las fugas de Tor, hay una forma sencilla de obtener una buena línea de base:

  1. Conéctate a Internet.

  2. Pon en marcha un proxy Tor maduro (opt w / HTTP cleaner como Privoxy) y asegúrate de que funcione cargando una página que muestre la ubicación / IP.

  3. Configure su firewall para redirigir todo el tráfico de su aplicación (o todo el sistema) al proxy Tor y viceversa.

Bam. Ahora, obtienes los beneficios de Tor sin diseñar una aplicación específicamente para ello. Solo asegúrese de que ninguno de los datos que envía identifique b / c que la protección finaliza en los nodos de salida.

    
respondido por el Nick P 11.08.2013 - 03:34
fuente
0

Con ese código en particular, las solicitudes de DNS se enviarán antes de conectarse con los calcetines, por lo que se revelará su dirección IP. Para resolver esto debes modificar tu código de esta manera:

import socks  
import socket

socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5,'127.0.0.1', 9050, True)  
socket.socket = socks.socksocket  

def getaddrinfo(*args):  
       return [(socket.AF_INET, socket.SOCK_STREAM, 6, '', (args[0], args[1]))]  

socket.getaddrinfo = getaddrinfo  

import http.client  

def main():  
      connectTor()  

...  

El truco consiste en redefinir las consultas de DNS para pasar a través de TOR antes de importar httplib. Con su código anterior, intente conectarse a un sitio de cebolla y obtendrá un error de DNS porque el DNS normal no puede resolver los hosts de cebolla.

    
respondido por el user2707661 27.07.2016 - 14:45
fuente

Lea otras preguntas en las etiquetas