随着互联网的发展进步,现在互联网上也有许多网络爬虫。网络爬虫通过自己爬虫程序向目标网站采集相关数据信息。当然互联网的网站会有反爬策略。比如某电商网站就会限制一个用户IP的访问频率,从而出现验证码。就算验证码通过了,也不会采集到数据,这也就是所谓的反爬虫策略。所以这种情况下,越来越多的网络爬虫会利用代理IP去进行采集。目标网站限制了一个IP,可以换一个代理IP继续进行业务采集。当然每个人的爬虫程序不同,使用爬虫代理用法也不同。
互联网也有常见的爬虫代理使用方式:
1、传统的API提取的优质代理(传统API提取式代理,通过URL定时获取代理IP信息,需验证IP的可用性、更换代理设置,同时需要设计多线程异步IO,实现代理IP并发处理,不仅繁琐,而且影响效率。)
2、自动转发的爬虫代理(自动转发的爬虫代理IP”通过固定云代理服务地址,建立专线网络链接,代理平台自动实现毫秒级代理IP切换,保证了网络稳定性和速度,避免爬虫客户在代理IP策略优化上投入精力。)
以上是市面上常见的使用爬虫代理方式,针对每个爬虫应用环境和接口不同,需要选择适合自己程序的代理使用方式。
很多爬虫都会选择通过代理商提供的API链接获取代理IP,放在自己的搭建的IP池内进行管理,从而发出请求进行数据采集。当然也有很多爬虫不愿意自己做IP池管理,觉得那种方式使用麻烦。想直接利用代理IP去发出请求获取数据。这时候就需要用自动转发的爬虫代理,代理供应商就会提供一个代理服务器域名信息和用户名、密码。就是比传统的API代理,多了一个认证信息。
在nodejs爬虫中,可以用axios中的proxyhost和proxyport来设置代理服务器,proxyUser和proxyPass设置用户名和密码进行认证。
以下是关于nodejs爬虫使用axios如何配置爬虫代理dmeo:
const axios = require('axios');// 要访问的目标页面const targetUrl = "http://httpbin.org/ip";// 代理服务器(产品官网
www.16yun.cn)const proxyHost = "t.16yun.cn";const proxyPort = 31111;// 代理验证信息const proxyUser = "username";const proxyPass = "password";var proxy = { host: proxyHost, port: proxyPort, auth: { username: proxyUser, password: proxyPass }};axios.get(targetUrl,{proxy:proxy}) .then(func
tion (response) { // handle success console.log(response.data); }) .catch(function (error) { // handle error console.log(error); }) .finally(function () { // always executed });
每个爬虫的程序使用的语言框架都不同,以上是比较偏门的爬虫语言框架配置爬虫代理的demo。其他语言配置爬虫代理的demo可以参考以上demo分析百度。