48

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

4

3 回答 3

67

您可以使用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,更多详细信息,请单击此处

于 2010-02-26T03:06:52.037 回答
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()
于 2011-11-11T22:44:52.963 回答
4

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

于 2010-02-23T13:50:59.357 回答