Flu*_*ffy 14 python urllib2 socks
是否可以在每个开启者基础上通过一个袜子服务器上的SOCKS代理获取urllib2的页面?我已经看过使用setdefaultproxy方法的解决方案,但我需要在不同的开启者中使用不同的袜子.
所以有SocksiPy库,它工作得很好,但它必须以这种方式使用:
import socks
import socket
socket.socket = socks.socksocket
import urllib2
socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, "x.x.x.x", y)
Run Code Online (Sandbox Code Playgroud)
也就是说,它为所有urllib2请求设置相同的代理.如何为不同的开启者设置不同的代理?
sys*_*out 16
尝试使用pycurl:
import pycurl
c1 = pycurl.Curl()
c1.setopt(pycurl.URL, 'http://www.google.com')
c1.setopt(pycurl.PROXY, 'localhost')
c1.setopt(pycurl.PROXYPORT, 8080)
c1.setopt(pycurl.PROXYTYPE, pycurl.PROXYTYPE_SOCKS5)
c2 = pycurl.Curl()
c2.setopt(pycurl.URL, 'http://www.yahoo.com')
c2.setopt(pycurl.PROXY, 'localhost')
c2.setopt(pycurl.PROXYPORT, 8081)
c2.setopt(pycurl.PROXYTYPE, pycurl.PROXYTYPE_SOCKS5)
c1.perform()
c2.perform()
Run Code Online (Sandbox Code Playgroud)
sw.*_*sw. 11
是的你可以.我重复我的答案我如何使用urllib2的SOCKS 4/5代理? 您需要为每个代理创建一个开启器,就像使用http代理一样.将此功能添加到SocksiPy的代码可以在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()
Run Code Online (Sandbox Code Playgroud)
有关更多信息,我编写了一个运行多个Tor实例的示例,其行为类似于旋转代理:具有多个Tor电路的分布式Scraping