在使用 Python 进行爬虫时,很有可能因为一些异常行为被封 IP,这主要是因为一些爬虫时产生的异常行为导致的。
在曾经的一次数据爬取的时候,我尝试去爬取Google地图上面的商家联系方式和地址信息做营销,可是很不幸,还只是爬取少量数据就被google的反爬机制把我的IP直接封了。经过各种测试,总结了一些避免踩雷反爬机制的方法,以及被封后如何解决。
一、为什么会踩雷反爬机制
主要原因之一、是同 IP 数据访问频繁。
某个网站一个IP原先几乎不会怎么访问,突然产生了大量的请求,请求数量超过了平均用户访问频率的许多倍,这样反爬机制就会发现异常。如果持续频繁访问,IP就会被封。
主要原因之二、爬虫时产生了异常行为
在编写爬虫程序时,无法注意到所有的请求参数。
比如在写爬虫程序时,发现了一个参数,不知道是怎么计算出来的,但是把这个字段去了发现接口也可以正常调通,然后就顺其自然的忽略这个字段。
但可能其中某个参数是用于检测是否是爬虫程序的关键,频率高了就被反爬程序封禁。
还有其他的一些反爬的设置,比如验证码输错太多次等等,都有可能触发反爬程序。
二、踩雷了怎么办
踩雷了解决方法其实很简单,反爬机制都是基于 IP 地址进行封禁的,换个 IP 就可以解决所有问题,可以采用动态 IP 的方案。
下面记录几家海外动态住宅IP代理的平台,将从速度、数量、稳定性、特色服务分别对比,避免后续再次探索。
1、Brightdata
Bright Data.CC 前身是Luminati,是一家以色列的公司,是最大和最先进的住宅代理网络,拥有覆盖全球的 72+ 百万个 IP。 通过我们的数据中心、静态住宅、动态住宅和移动网络,Luminati(Bright Data)可以满足您所有需求,提供最优化的解决方案。
Luminati(Bright Data) 的四个网络包含超过 9 种 IP 类型,能够使用规则在9种ip类型之间轻松切换。 同时 Luminati(Bright Data) 提供免费的开源代理管理器和内置代理插件等自动化辅助工具帮助您轻松集成到任何第三方软件中。
速度也挺快,优势很明显,是目前做得最大的一家。唯一的缺点就是:价格太贵!一般团队用不起。
而且以色列人的冷酷是了名了,域名访问限制严格,价格混乱,经常业务和风控团队意见不统一。
2. IPHTML
IPHTML.COM是一家纯正的美国公司,目前已与全球多个网络运营商达成合作,拥有全球197+国家和地区的真实住宅IP资源,他的动态住宅IP拥有全球197+国家和地区的真实住宅IP资源,是来自世界各个国家地区超过2.3+亿的真实家庭住宅代理,可以实现从指定位置访问,避免地理限制。
支持无限并发请求,99.9%成功率,极其稳定的运行时间,可以轻松提高业务整体效率,降低业务成本。凭借其高速稳定、安全隐私、无限流量、经验丰富的客服技术研发团队、全天候多方位的业务场景支持等优势。
在公共数据收集领域,IPHTML正广泛应用在大数据分析、抓取和索引、跨境电商、竞争对手情报、SEO监控优化等领域。
不少中国公司的选品工具、数据挖局工具,背后的提供商是IPHTML。最重要的是,没有任何限制!这家也是我最后选用完成工作的一个平台。
使用方法找了官方的文档:https://github.com/IPHTML/DOC
官网链接:https://iphtml.com/?aff_id=24299
3、Oxylabs
Oxyslab.COM是一家立陶宛的公司,他们代理IP覆盖全球195个国家,超5000+万个纯净优质IP,海外HTTP/HTTPS/SOCKS5代理,企业级IP套餐定制服务,动静态IP,高匿稳定原生IP,代理池稳定。
性能测试
在计费灵活度方面,Brightdata
和 Oxylabs
是订阅的模式,到了月底没使用完的流量就会清0,重新计费,IPHTML
这方便要人性很多,没有要求一定要当月把流量使用完。
价格方面比上面两家稍贵,速度和稳定性还是很不错。缺点是域名限制,我充值之后才发现google的域名默认是被他屏蔽的,需要提交各种说明才能
4、Eastproxy
Eastproxy.COM 也是美国的一家公司,全球动态IP覆盖195+国家,不限国家和城市,支持HTTP/HTTPS/SOCKS5 协议,而且注册不需要KYC。是后起新秀,所以价格是这几家中最划算的。除了动态住宅IP,还有很多静态IP,产品很丰富。
优点价格非常便宜,没有并发和域名限制。缺点是没有中文版网站使用起来不是很顺手但熟悉一下就好了。
这家是我爬虫业务做完之后发现的,目前国内还知道的人并不多。后面有机会实战尝试一下他的IP质量。
四家的价格相对国内一些小厂确实很贵,但一分钱一分货的道理我们还是懂的,为什么贵下面我们再说。
在计费灵活度方面,Brightdata、Oxylabs、Eastproxy是订阅的模式,到了月底没使用完的流量就会清0,重新计费,IPHTML这方便要人性很多,没有要求一定要当月把流量使用完。
还有很重要的一点是 IP 重复率,每家都号称几千万和上亿的IP数量,其实他们都是有侧重点的,有的主要IP在美国,有的在印尼,有的均匀在全球等。还有一点,重复率是指一定时间内同一国家内的IP重复情况。
这是经过几个小时测试的不同平台的重复率情况:
综合的看的的话,IPHTML会更合适大陆的多账号代理业务,这也是最终选择这个平台的原因。
附上测试代码
curl -s -o /dev/null -w "dns: %{time_namelookup}\ntime_connect: "%{time_connect}"\ntime_appconnect: "%{time_appconnect}"\ntime_pretransfer: "%{time_pretransfer}"\ntime_starttransfer: "%{time_starttransfer}"\ntime_redirect: "%{time_redirect}"\ntime_total: "%{time_total}"\n" -x "代理用户名:代理密码@代理服务器:代理端口" ipinfo.io