自动转发的爬虫代理使用教程

在爬虫行当,每天都要面对目标反爬虫技术,我们想要拿到数据,就需要针对它们的反爬虫来制定绕过方法,比如它识别你的UserAgent,那你可能就需要伪造、它限制IP请求次数,你可能就需要限速或者改变ip、它用验证码来识别你是人是机,你就需要模拟人的操作并且正确填写它给你弹出的验证码等等。
这里我以实际项目举例:有个项目需要采集工商网,对方使用的反爬虫手段中就有IP请求次数的限制,因为我需要的数据比较多,而且目标的数据很绕,所以我紧紧降低我爬虫的速度我觉得对我影响很大,所以我选择通过动态ip切换来应对,我需要在scrapy中实现ip自动切换,才能够在客户要求的时间内完成爬取任务。
很多用户朋友用过亿牛云代理(www.16yun.cn)的代理IP就知道,在生成API链接后发现,返回的IP:端口模式
那什么是动态转发呢?
动态转发的意思是,您指需要将您的代理设置成我们的服务器地址,比如60.191.57.78:47728,然后去请求任何一个目标网站或者服务器,我们将以一个随机的或者客户指定地区的IP地址代为请求并返回目标网站的结果,简单一点来说,你只需设置一次代理,就可以得到随机变化的IP,免去频繁更换代理的麻烦。如图:在接入服务器这端,由我们的服务器与用户交互,免去了频繁设置代理的麻烦。
爬虫代理与传统API提取代理的区别
传统API提取式代理,通过URL定时获取代理IP信息,需验证IP的可用性、更换代理设置,同时需要设计多线程异步IO,实现代理IP并发处理,不仅繁琐,而且影响效率。
“亿牛云爬虫代理IP”通过固定云代理服务地址,建立专线网络链接,代理平台自动实现毫秒级代理IP切换,保证了网络稳定性和速度,避免爬虫客户在代理IP策略优化上投入精力。
以亿牛云提供的爬虫代理动态转发为例,在python中接入随机动态ip代码:
PY3 = sys.version_info[0] >= 3
def base64ify(bytes_or_str):
if PY3 and isinstance(bytes_or_str, str):
input_bytes = bytes_or_str.encode(‘utf8’)
else:
input_bytes = bytes_or_str
output_bytes = base64.urlsafe_b64encode(input_bytes)
if PY3:
return output_bytes.decode(‘ascii’)
else:
return output_bytes
class ProxyMiddleware(object):
def process_request(self, request, spider):
# 代理服务器(产品官网 www.16yun.cn)
proxyHost = “t.16yun.cn”
proxyPort = “31111”
# 代理验证信息
proxyUser = “username”
proxyPass = “password”
request.meta[‘proxy’] = “http://{0}:{1}”.format(proxyHost,proxyPort)
# 添加验证头
encoded_user_pass = base64ify(proxyUser + “:” + proxyPass)
request.headers[‘Proxy-Authorization’] = 'Basic ’ + encoded_user_pass
# 设置IP切换头(根据需求)
tunnel = random.randint(1,10000)
request.headers[‘Proxy-Tunnel’] = str(tunnel)
配置好亿牛云提供的爬虫代理信息之后直接发出请求即可

你可能感兴趣的:(http代理,数据采集,网络爬虫)