Scrapy HTTP代理身份验证
我可以通过设置 request.meta['proxy'] 来使用 HTTP 代理,但我该怎么进行代理认证呢?
这样指定用户名和密码是行不通的:
request.meta['proxy'] = 'http://user:pass@123.456.2323:2222'
我查了一下,可能需要发送 request.headers['Proxy-Authorization'],但我应该用什么格式发送呢?
2 个回答
10
用户名和密码是用一种叫做Base64的方式编码的,格式是“用户名:密码”。
import base64
# Set the location of the proxy
proxy_string = choice(self._get_proxies_from_file('proxies.txt')) # user:pass@ip:port
proxy_items = proxy_string.split('@')
request.meta['proxy'] = "http://%s" % proxy_items[1]
# setup basic authentication for the proxy
user_pass=base64.encodestring(proxy_items[0])
request.headers['Proxy-Authorization'] = 'Basic ' + user_pass