如何在urllib2中使用SOCKS 4/5代理?

时间:2010-02-23 11:55:58

标签: python proxy urllib2 socks

如何使用带urllib2的SOCKS 4/5代理下载网页?

3 个答案:

答案 0 :(得分:66)

您可以使用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

答案 1 :(得分:21)

当您需要同时使用许多不同的代理时,添加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()

答案 2 :(得分:4)

由于SOCKS是套接字级代理,您必须替换urllib2使用的套接字对象。请看一下this解决方案。如果猴子补丁对您来说不够好,那么您可以尝试从urllib2标准库中对代码进行子类化或复制修改。