Tor via Python - può la perdita reale dell'indirizzo IP?

3

Stavo pensando a quanto sia sicuro utilizzare Tor come "proxy locale" per raccogliere informazioni dalle pagine Web in modo anonimo. È possibile che sia visibile l'indirizzo IP reale?

Sulla home page ufficiale di Tor rivendicano:

Tor does not protect all of your computer's Internet traffic when you run it. Tor only protects your applications that are properly configured to send their Internet traffic through Tor. To avoid problems with Tor configuration, we strongly recommend you use the Tor Browser Bundle. It is pre-configured to protect your privacy and anonymity on the web as long as you're browsing with the Tor Browser itself. Almost any other web browser configuration is likely to be unsafe to use with Tor.

The Tor Browser will block browser plugins such as Flash, RealPlayer, Quicktime, and others: they can be manipulated into revealing your IP address. Similarly, we do not recommend installing additional addons or plugins into the Tor Browser, as these may bypass Tor or otherwise harm your anonymity and privacy.

Questo mi preoccupa quando eseguo lo script di seguito (con Vidalia / Tor abilitato)? Il mio vero IP verrà rivelato se eseguo lo script su pagine web diverse? La pagina web nel codice qui sotto (my-ip.heroku.com) è molto semplice e restituisce solo il mio indirizzo IP. Ma come sarei esposto, ad esempio, su pagine web con plugin per browser come flash, realplayer, quicktime ecc.?

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()
    
posta Skaggmannen 11.08.2013 - 00:09
fonte

3 risposte

6

In questo caso, nessuna perdita.

Quello che stai facendo in Python qui è semplicemente fare una richiesta HTTP tramite un proxy che è il proxy SOCKS locale di Tor. La risposta di questa richiesta sarà fondamentalmente un testo. Indipendentemente dal contenuto effettivo di questa risposta, il "client" Python non analizzerà la risposta oi plugin utente per eseguire determinati contenuti. La richiesta HTTP viene passata attraverso Tor e nessuna richiesta successiva si verificherà a seconda della risposta.

Quindi, plug-in o no, JavaScript o no, tutto ciò non influirà sul tuo caso. Inoltre, quando chiami setdefaultproxy() , stai impostando rdns su true che impedirà le perdite DNS eseguendo le ricerche DNS da remoto.

La citazione che hai postato è scritta in un linguaggio leggermente paranoico. Ovviamente non significa che il 100% dei casi il tuo IP si verificherà se non utilizzi il Tor Browser Bundle. Significa solo che è molto più probabile che ti manchi qualcosa mentre usi il tuo browser, come l'impostazione DNS, non disabilitando i plug-in e così via.

    
risposta data 11.08.2013 - 02:16
fonte
0

Quando sei preoccupato per le perdite di Tor, c'è un modo semplice per ottenere una buona linea di base:

  1. Connessione a Internet.

  2. Ottieni un proxy Tor maturo (opt w / HTTP cleaner come Privoxy) e assicurati che funzioni caricando una pagina attraverso di essa che mostra la posizione / IP.

  3. Imposta il firewall per reindirizzare tutto il traffico dall'app (o dall'intero sistema) al proxy Tor e viceversa.

Bam. Ora, ottieni i vantaggi di Tor senza progettare un'app appositamente per questo. Assicurati che nessuno dei dati che invia sia identificativo b / c la protezione termina ai nodi di uscita.

    
risposta data 11.08.2013 - 03:34
fonte
0

Con quel particolare codice le richieste DNS saranno inviate prima di connettersi con i calzini, così il tuo indirizzo IP sarà rivelato. Per risolvere questo problema, devi modificare il tuo codice in questo modo:

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()  

...  

Il trucco è ridefinire le query DNS per passare attraverso TOR prima di importare httplib. Con il tuo codice precedente prova a connetterti a un sito di cipriota e otterrai un errore DNS perché il normale DNS non può risolvere gli host di cipolla.

    
risposta data 27.07.2016 - 14:45
fonte

Leggi altre domande sui tag