Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过Tor网络编写Python脚本_Python_Tor - Fatal编程技术网

通过Tor网络编写Python脚本

通过Tor网络编写Python脚本,python,tor,Python,Tor,我已经编写了一个简单的python脚本来获取我的ip import urllib import socks import socket #set the proxy and port socks.set_default_proxy(socks.SOCKS5, "127.0.0.1", 9150) #initialize the socket socket.socket = socks.socksocket #store the URL that we want url = 'https:/

我已经编写了一个简单的python脚本来获取我的ip

import urllib
import socks
import socket

#set the proxy and port
socks.set_default_proxy(socks.SOCKS5, "127.0.0.1", 9150)

#initialize the socket
socket.socket = socks.socksocket

#store the URL that we want
url = 'https://check.torproject.org/'

#open the URL and store it into 'response'
response = urllib.urlopen(url)

#parse the response
html = response.read()

#print to console
print html
没有什么太复杂的问题,但是当分析check.torbrowser的响应时,问题就开始了。该网站将始终为我提供一个地址,该地址与我当前运行的Tor浏览器位于同一页面上的地址不同。然而,html响应会说我正在通过Tor网络路由,但它看起来不是来自“标准”Tor浏览器。我理解后一部分,虽然我没有在上面的代码中包含它,但我在玩用户代理字符串和其他头,所以我将把它归结为主要原因。我不明白的是,在h-e-double曲棍球棒中,IP从何而来,作为py脚本的响应

我的下一个问题是如何将python脚本正确地连接到tor网络,这是建立在所有这些之上的?在谷歌搜索了一下之后,我发现tor将阻止除socks协议之外的所有通信,另一种选择是将privoxy与tor结合使用。我最初的想法是做一些路由,这将导致软件分层。在我看来,它看起来像:

Python->Privoxy->Tor->Destination

我的最终目标是获取一个基于.onion的地址并保存/读取它。然而,在所有这些问题开始发生之后,我已经将其搁置一边。有一点信息可以帮助获得更好的答案:我使用的是一台Windows机器,尽管我有一台Linux机器,如果有一些功能可以帮助这个过程,我也使用Python 2.7,不过,这很容易改变


我想问的是,让所有这些发生的步骤都被安排好了——或者至少有一些链接/方向,我一点也不怕读一些关于这个主题的好博客/教程。然而,我觉得这实际上是两个独立的问题,需要一个安静而冗长的答案,所以我非常高兴在我撕下更多的头发之前知道我走在正确的道路上:)

你的代码是正确的,但是你的假设Tor总是给你相同的IP地址是不正确的。多亏了电路隔离,Tor的一项隐私功能确保了您打开的连接之间的隔离,您将通过不同于Tor浏览器的出口节点路由请求

可靠地模拟Tor浏览器行为很难,我建议不要这样做。连接到Tor网络的方法看起来是正确的

Tor将允许您使用任何您想要的协议,但是是的,您需要通过SOCKS协议进行连接。不过这很好:几乎所有的网络协议(包括http)都可以很好地使用SOCKS。

使用该库,您可以根据需要更新电路

来自torpy.http.requests的
>>导入TorRequests
>>> 
>>>def显示仪表板(resp):
...     对于resp.text.splitlines()中的行:
...         如果“您的IP地址似乎在”行中:
...             打印(行)
... 
>>>使用TorRequests()作为tor_请求:
...     打印(“构建电路”)
...     使用tor_请求。将_会话()作为SES获取:
...         显示ip(sess.get(“https://check.torproject.org/"))
...         显示ip(sess.get(“https://check.torproject.org/"))
...     打印(“更新电路”)
...     使用tor_请求。将_会话()作为SES获取:
...         显示ip(sess.get(“https://check.torproject.org/"))
...         显示ip(sess.get(“https://check.torproject.org/"))
... 
构建电路
您的IP地址似乎是:178.17.171.102

您的IP地址似乎是:178.17.171.102

更新电路 您的IP地址似乎是:49.50.66.209

您的IP地址似乎是:49.50.66.209