【发布时间】:2015-09-22 14:07:14
【问题描述】:
我编写了一个简单的 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 浏览器。我理解后一部分,虽然我没有将它包含在上面的代码中,但我正在使用 User-Agent 字符串和其他标题,所以我将其归结为主要原因。我不明白的是,作为 py 脚本响应的 IP 是从哪里来的 h-e-double 曲棍球棒?
我的下一个问题是建立在这一切之上的,是如何将我的 python 脚本正确连接到 tor 网络?经过一番谷歌搜索,我发现 tor 会阻止除 socks 协议之外的所有内容的流量,并且另一种方法是将 privoxy 与 tor 结合使用。我最初的想法是做一些会导致软件分层的路由。在我看来,它看起来像:
Python -> Privoxy -> Tor -> 目的地
我的最终目标是获取一个基于 .onion 的地址并保存/读取它。然而,在所有这些问题开始发生后,我把它放在一边。一些有助于获得更好答案的信息:我使用的是 Windows 机器,虽然我有一台 Linux 机器,如果那里可能存在一些有助于这个过程的功能,而且我使用的是 Python 2.7,但同样,这可以很容易改变。
我想要求列出实现这一切的步骤 - 或至少一些链接/方向,我绝不害怕阅读一些关于该主题的好博客/教程。然而,我觉得这真的是几个单独的问题,需要安静地回答一个冗长的答案,所以我很高兴在我扯掉更多头发之前知道我走在正确的道路上:)
【问题讨论】: