通过Tor网络的

时间:2015-07-05 08:59:09

标签: 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://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网络进行路由,但它看起来并不是来自“标准”的浏览器。后一部分我理解,虽然我没有在上面的代码中包含它,但我正在使用User-Agent字符串和其他标题,因此我将其归结为主要原因。我不明白的是,在h-e-双曲棍球棒的哪个地方,知识产权来自于py脚本的响应?

我的下一个问题,建立在这一切之上,是如何正确地将我的python脚本连接到tor网络?经过一番谷歌搜索后,我发现tor会阻止除袜子协议之外的所有事情,而另一种方法是使用privoxy和tor。我最初的想法是做一些导致软件分层的路由。在我看来,它看起来像:

Python - > Privoxy - > Tor - >目的地

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

我想问一下,要实现这一切的步骤 - 或者至少是一些链接/方向,我绝不会害怕阅读一些关于这个主题的好博客/教程。但是,我觉得这真的是几个单独的问题,并且需要安静的答案,所以我会非常高兴地知道我在正确的道路上,然后才能撕掉更多的头发:)

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:0)

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

>>> from torpy.http.requests import TorRequests
>>> 
>>> def show_ip(resp):
...     for line in resp.text.splitlines():
...         if 'Your IP address appears to be' in line:
...             print(line) 
... 
>>> with TorRequests() as tor_requests:
...     print("build circuit")
...     with tor_requests.get_session() as sess:
...         show_ip(sess.get("https://check.torproject.org/"))
...         show_ip(sess.get("https://check.torproject.org/"))
...     print("renew circuit")
...     with tor_requests.get_session() as sess:
...         show_ip(sess.get("https://check.torproject.org/"))
...         show_ip(sess.get("https://check.torproject.org/"))
... 
build circuit
  <p>Your IP address appears to be:  <strong>178.17.171.102</strong></p>
  <p>Your IP address appears to be:  <strong>178.17.171.102</strong></p>
renew circuit
  <p>Your IP address appears to be:  <strong>49.50.66.209</strong></p>
  <p>Your IP address appears to be:  <strong>49.50.66.209</strong></p>