您的位置:首页 > 新闻资讯 >文章内容
大量采集数据,遇到验证码和IP限制问题怎么处理
来源:互联网 作者:admin 时间:2019-02-07 09:24:00

  一些爬取过程中的小问题,就不列举了,这里主要说的是验证码和IP限制的问题。对于网站的IP限制以及验证码限制,我们爬虫还是有不少的方法去解决的。下面小编先列举出问题所在:


  首当其冲,验证码,该网站采用了数字加中文的简单四则运算作为验证码。


  查询目标路径参数经过了加密,我并不能直接通过取路径加参数的方式来直接跳过某些页面。


  IP限制,该网站对访问的IP做了访问次数计数限制。经过我的测试,一个纯净IP访问该网站一小时内最多能爬取40个有效数据(这里针对我的抓取目标来说,HTTP请求次数差不多之多200次,但是若在30s内访问次数超过25次HTTP请求,那么这个IP就直接被封掉)


  一、验证码限制解决


大量采集数据,遇到验证码和IP限制问题怎么处理


  这种的验证码难度在于字符粘连,字符随机旋转问题。首先写了一个工具来测试:


大量采集数据,遇到验证码和IP限制问题怎么处理


  做特征库,通过分割出来的字符去匹配特征库的相似度来判断图片中的文字到底是什么。这里没有使用第三方的光学识别(OCR ),因为识别汉字感觉识别率还是比较差,而且验证码中的汉字其实并不多,就是几个特定的字符,加减乘除等。所以通过特征库来识别也是绰绰有余了。


  关于验证码,我来说说我的一些问题,对于灰度计算和二值化,但是对于降噪,也就是去干扰线,需要自己根据目标来写特定的算法。我这里是通过削皮的方式来去掉的,每次给所有阴影剥掉一层1px的范围,填充为白色。当然了,我这方法不具备通用性。不同的验证码需要根据观察来用不同的方式来去除。


  分割呢,也就是直方图了,其实我的验证码也是可以根据色彩来做单色的直方图,这样来一步完成分割字符和降噪(有这想法,但是没有实际去实现。不过看有些大牛的博客说这样的方法是可行的)。我所了解到的分割方法还有滴水分割,不过我拿了论文资料,可惜看得不是很懂。下面贴了一段简单绘制直方图的方法:


大量采集数据,遇到验证码和IP限制问题怎么处理


  关于随机旋转的字符问题,我的做法是,将验证码中的字符分割成独立单位后,进行正负30度旋转,每旋转一次,计算一次投影宽度,由于我们的字体基本上都是‘方块字’,所以呢,在旋转的时候,最小宽度肯定是‘摆正’了的,不过,这里有个小问题,那就是若源字符旋转超过45°,我们将字横着放置的时候,其宽度也是最小的。不过我们让机器多学习几次,将四个方向摆放的图形都学习了,就可以了。这就是卡壳法了。


  二、IP限制问题解决


  直接通过切换访问的代理来突破,这里没有丝毫技术性含量。挂上代理后,去访问目标网站,根据返回的结果判断代理是否还有效。若是无效了,将当前查询目标回滚一次,并切换代理就行了。可以直接使用代理精灵,IP可能率高达95%以上。


  三、爬虫实现爬取工作


大量采集数据,遇到验证码和IP限制问题怎么处理


  写了一个爬虫服务端和一个爬虫客户端,服务端当做中央处理器,来分配计算量,客户端爬虫用来抓取数据。这样的情况下,各个客户端执行的速度其实是不一样的,请求响应又快又慢,验证代理是否有效也需要时间,所有,客户端爬虫完成任务的时间肯定不一样,所以我安排了这样一台电脑做作为中央处理器,分批次,小剂量的去分发任务列表。并接收客户端回传的结果,等完成所有任务之后统一导出或者进行写入数据库等其他操作。


  每个节点上的爬虫,给17个线程去跑,10个做代理IP的验证,7个爬数据。若是给10台办公室的笔记本安装软件,一起去爬数据,那么,就相当于 70人/秒 的速度在访问这个网站。至此,效率问题也解决了。


  总线方面,将任务列表根据下面的节点数进行分配(上图是之前截的图,之前是均分出去,后来发现均分的客户端并不是同时完成,有的快有的慢,结果快的弄完了,就空闲了,慢的还在慢吞吞的跑,所以,之后进行了小剂量分配,变相的达到动态的安排任务量)。


相关文章内容简介
推荐阅读
  • 03 2020-03
    如何判断ip代理软件的质量

    我们在平时上网的时候,大家都会发现这样的现象,例如最近时常浏览一个产品,搜索引擎就会自动推荐给你类似的。实际上,在网上的搜索、浏览都会被搜索引擎、网络软件等记录跟踪。无论

  • 12 2019-04
    Java面试问啥?多线程、http代理、高并发...

    Java面试问啥?Java面试中,线程池也算是一个高频的问题,此外还可能会被问到什么呢?比如数据库、http代理、高并发等等,我们一起去了解下:

  • 04 2020-01
    不要使用免费代理ip​!

    不要使用免费代理ip​!当我们需要使用到代理ip时,可能第一时间考虑的都是免费代理ip,因为是免费的,谁都想去试试。但是免费代理ip实际效果不好,关键是还不安全,这严重影响到我们的账

  • 28 2019-04
    爬虫借用代理IP获取到薪资信息

    爬虫借用代理IP获取到薪资信息,为什么要这么麻烦呢?这是因为这些数据,网站并不想随便给你爬取,但如果你想知道一个比较准的结果,那么收集大量信息再分析,这结果无疑是更加的准确

  • 21 2019-12
    爬虫时注意事项!

    爬虫时注意事项!Web是一个开放的平台,这也奠定了Web从90年代诞生至今将近30年的蓬勃发展。开放的Web同时也吸引了众多程序抓取, 这些程序通称网络爬虫。互联网中几乎所有服务端、客户端编

  • 23 2019-02
    【Python入门】一些学习Python的技巧

    学习Python相对于其他语言来说是简单许多,而且Python使用非常灵活,适用的范围比较广,很多程序都会选择去学下Python。今天小编为大家整理了一些学习Python的技巧,可以帮助新手快速的了解。

在线咨询
大客户经理
大客户经理
1829380381
13316264505

大客户经理微信

微信公众号

微信公众号

回到顶部