今天要下载一些图片,这些图片全被墙了。就想着用python去下载,当然得用代理。
搜索一下发现urllib及urllib2模块都是支持代理的,但是要http代理。而我用Tunnelier建的是sock5代理,随即再搜索python使用sock5代理,发现也是有相关第三方模块的,叫SocksiPy。
下载后按说明使用,但一直不成功,汗,可能悟性太低了吧。
看来只有找个http代理了,要不用nginx搞个http代理?折腾了下,貌似也不成功。
又想到本博客另一作者写过一个sock5代理转http代理的帖子,立马找到其中提到的软件:Privoxy
下载后安装,最后版本是
Privoxy 3.0.17
我就下载的这个。安装后打开,在Options–Eidt Main Configuration
这时会用记事本打开配置文件,在这个文件的最下面加上:
forward-socks5 / 127.0.0.1:7070 .
注意最后面有一个点,最好复制。
我的Tunnelier在7070端口开的sock5代理,具体视个人情况修改。
保存后重启Privoxy。
然后在 127.0.0.1:8118 就有http代理了,8118是privoxy默认的端口。
urllib2使用代理:
import urllib2
proxy = ’127.0.0.1:8118′
opener = urllib2.build_opener( urllib2.ProxyHandler({‘http’:proxy}) )
urllib2.install_opener( opener )
sContent = urllib2.urlopen(url).read()
file1=open(filepath,’wb’)
file1.write(sContent)
file1.close()