scrapy代理ip之使用动态转发IP设置

2019-02-21  本文已影响0人  越大大雨天

以阿布云提供的ip动态转发为例,在python3中接入随机动态ip只需要在middleware中添加如下代码:

import base64

# 代理服务器

proxyServer = "[http://http-dyn.abuyun.com:9020](http://http-dyn.abuyun.com:9020/)"

# 代理隧道验证信息

proxyUser="H01234567890123D"       #用户名

proxyPass = "0123456789012345"        #密匙

proxyAuth = "Basic" + base64.urlsafe_b64encode(bytes((proxyUser + ":" + proxyPass), "ascii")).decode("utf8")

class ProxyMiddleware(object):

    def  process_request(self,request,spider):

        request.meta["proxy"] = proxyServer 

        request.headers["Proxy-Authorization"] = proxyAuth

在使用Basic认证的代理ip时,scrapy不同于python的requests包,这里不能直接把用户名和密码与代理ip放在一起。正确的做法是应该将验证消息加到headers的Proxy-Authorization中。

最后只需将ProxyMiddleware添加进settings的DOWNLOAD_MIDDLEWARES中即可。
注意根据ip请求限制设置DOWNLOAD_DELAY。
完美避开ip限制,动态转发ip价格便宜,可通过爬取规模来选择使用套餐。

上一篇 下一篇

猜你喜欢

热点阅读