在爬虫过程有时候需要更换ip以防被封,主要有HTTP代理和socks5代理。
使用requests设置HTTP代理
1 | import requests |
如果代理需要HTTP Basic Auth,可以使用http://user:password@host:port/
。
使用requests设置socks5代理
1、全局设置
使用socks模块,需要先安装依赖库
1 | pip install PySocks |
1 | import socks |
2、局部设置
requests也支持socks5代理,跟设置HTTP代理一样,可以只作用在部分请求上。不过需要先安装第三方库
1 | pip install requests[socks] |
使用方法是之前类似,如果需要验证,格式类似:socks5://user:pass@host:port
1 | import requests |
使用urllib设置HTTP代理
1 | from urllib.error import URLError |
使用urllib设置socks5代理
1 | from urllib.request import ProxyHandler, build_opener, urlopen |
urllib也可以像requests库设置全局代理那样设置socks5代理,具体代码跟之前类似:
1 | import socks |
最后一点说明,我在本地1080端口搭了socks5代理,并用privoxy将socks5代理转为HTTP代理,端口为8118。所以测试的时候使用不同端口代表不同的代理类型。具体设置过程可以查看之前的文章《Mac终端使用代理》。