【发布时间】:2011-01-20 01:03:58
【问题描述】:
如何使用带有 urllib2 的 SOCKS 4/5 代理来下载网页?
【问题讨论】:
标签: python proxy urllib2 socks
如何使用带有 urllib2 的 SOCKS 4/5 代理来下载网页?
【问题讨论】:
标签: python proxy urllib2 socks
您可以使用SocksiPy 模块。只需将文件“socks.py”复制到 Python 的 lib/site-packages 目录,就可以开始了。
你必须在 urllib2 之前使用 socks。 (试试看pip install PySocks)
例如:
import socks
import socket
socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, "127.0.0.1", 8080)
socket.socket = socks.socksocket
import urllib2
print urllib2.urlopen('http://www.google.com').read()
你也可以试试pycurl lib和tsocks,更多详情请点击here。
【讨论】:
当您需要同时使用许多不同的代理时,添加替代 pan 的答案。
在这种情况下,您需要像使用 http 代理一样创建开启程序。 GitHub中有一个代码https://gist.github.com/869791
opener = urllib2.build_opener(SocksiPyHandler(socks.PROXY_TYPE_SOCKS4, 'localhost', 9999))
print opener.open('http://www.whatismyip.com/automation/n09230945.asp').read()
【讨论】:
由于 SOCKS 是套接字级别的代理,因此您必须替换 urllib2 使用的套接字对象。请查看this 解决方案。如果猴子补丁对您来说不够好,那么您可以尝试从urllib2 标准库中继承或复制修改代码。
【讨论】: