通过Python的Tor - 真正的IP地址可以泄漏吗?


3

我在考虑使用Tor作为“本地代理”来匿名获取网页信息的安全性。是否有可能看到真实的IP地址?

在官方主页的Tor他们声称:

Tor不能保护所有计算机的上网流量,当你 运行它。 Tor仅保护配置为通过Tor发送其互联网流量的正确 的应用程序。为避免 与Tor配置有关的问题,我们强烈建议您使用Tor 浏览器软件包。它已预先配置为保护您的隐私,并且只要您使用Tor浏览器 本身进行浏览,就可以在网络上匿名。 几乎任何其他网络浏览器配置可能是 不安全使用与Tor

Tor浏览器将阻止浏览器插件,例如Flash,RealPlayer, Quicktime等:它们可以被操纵为显示您的IP地址 。同样,我们不建议在Tor浏览器中安装额外的插件 或插件,因为这些插件可能会绕过Tor或以其他方式损害您的匿名和隐私。

当我运行下面的脚本(启用Vidalia/Tor)时,这是我关心的一些问题吗?如果我在不同的网页上运行脚本,我的真实IP是否会显示?下面代码中的网页(my-ip.heroku.com)非常简单,只返回我的IP地址。但是,我如何暴露在带有浏览器插件的网页上,例如flash,realplayer,quicktime等?

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

首先,确保脚本通过Tor发出请求是个好主意。加载'check.torproject.org'而不是'my-ip.heroku.com'。 10 8月. 132013-08-10 23:06:14

  0

如果您的脚本不确定,请查看https://stem.torproject.org/ 10 8月. 132013-08-10 23:36:59

+1

,使用[proxychains](http://proxychains.sourceforge.net/) 12 8月. 132013-08-12 06:26:06

6

在这种情况下,没有也不会泄漏。

你在Python中所做的只是通过一个恰好是Tor的本地SOCKS代理的代理进行HTTP请求。这个请求的回应基本上是一些文字。无论此响应的实际内容如何,​​您的Python“客户端”实际上都不会解析响应或用户插件来运行某些内容。 HTTP请求通过Tor传递,根据响应,不会发生后续请求。

所以,插件与否,JavaScript与否,这一切都不会影响你的情况。此外,拨打setdefaultproxy()时,您将rdns设置为true,这将通过远程执行DNS查找来防止DNS泄漏。

您发布的报价是用一种偏执狂的语言写成的。如果你不使用Tor Browser Bundle,他们显然并不意味着100%的IP会泄露。他们只是说,在使用自己的浏览器时,你会错过某些东西,比如DNS设置,不关闭插件等等。

+1

“他们只是表示它更有可能是你在使用自己的浏览器时会错过某些东西,比如DNS设置,不会禁用插件“ - 绝对是! Firefox可以配置为不泄漏DNS请求,但Chrome无法并且会绕过Tor执行查找。同样,Adobe Flash(在Firefox中)将绕过您的代理以处理流量和DNS请求。上帝知道你遇到的每一段JavaScript都会漏掉。 Tor人鼓励您使用TBB,因为他们发布的股票设置非常安全 - 浏览器配置正确,并且泄漏插件被禁用。 27 7月. 162016-07-27 13:24:07


0

当担心Tor的泄漏,有一个简单的方法来获得一个良好的基线去:

  1. 可以连接到互联网。

  2. 获取一个成熟的Tor代理(可选择带有Privoxy的HTTP清理工具),并通过加载显示位置/ IP的页面来确保工作正常。

  3. 设置您的防火墙将所有流量从您的应用(或整个系统)重定向到Tor代理,反之亦然。

Bam。现在,您可以在没有专门为它设计应用程序的情况下获得Tor的好处。只要确保它发出的数据都不是识别保护在出口节点处结束的b/c。


0

使用该特定代码,DNS请求将在连接袜子之前发送,因此您的IP地址将被透露。为了解决这个问题,你应该修改你的代码是这样的:

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

... 

关键是导入httplib的前重新定义DNS查询通过TOR。使用以前的代码尝试连接到洋葱网站,您将收到DNS错误,因为普通DNS无法解析洋葱主机。