如何在Python3 urllib.request.urlopen()中使用TOR?

时间:2013-04-09 18:22:27

标签: python-3.x tor

我想在Python3 urllib.request.urlopen()中使用TOR,但我发现的所有示例都使用Python2。

https://code.google.com/p/socksipy-branch/

我遇到了很多但是我无法让它与Python3一起使用,即使它声明分支是兼容的。

我认为TOR是一个袜子代理,但是Python3似乎不包含任何像Python2这样的袜子库?

有没有人有工作的例子?

2 个答案:

答案 0 :(得分:1)

您必须通过套接字执行DNS解析

def getaddrinfo(*args):
  return [(socket.AF_INET, socket.SOCK_STREAM, 6, '', (args[0], args[1]))]
socket.getaddrinfo = getaddrinfo

来源:GitHub

答案 1 :(得分:0)

我建议使用httplib2socks包来通过socks代理执行HTTP请求。

我用urllib做了很多尝试,但是使用httplib2非常容易。

import socks
import httplib2

proxy = httplib2.ProxyInfo(proxy_type=socks.PROXY_TYPE_SOCKS5,
                           proxy_host='127.0.0.1',
                           proxy_port=9666)
http = httplib2.Http(proxy_info=proxy, timeout=10)
# do requests
headers, message = http.request(url, "GET", body=body, headers=headers)