您的位置:首页 > 新闻资讯 >文章内容
大量采集数据,遇到验证码和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人/秒 的速度在访问这个网站。至此,效率问题也解决了。


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


相关文章内容简介
推荐阅读
  • 07 2020-04
    代理IP的选择方法

    现在很多企业都用采集数据的方法,来分析数据并制定营销方案,这种数据采集需要爬虫程序并且要代理IP的辅助。关于选择有很多,下面给大家简单介绍。

  • 24 2019-03
    数据采集不了?代理精灵提供充足代理ip资源

    虽说爬虫代码不难学,但要学代码没有那么快,要能写出真正能用的爬虫采集数据并不容易。所以很多人都是使用采集工具的,但用过的都不知道其实也并不是很好用,有时候还采集不了,这是

  • 22 2019-03
    Scrapy爬取知乎------配置代理IP和UA

    爬虫们要想进行大规模的爬取数据,这并不容易,因为网站大量的反爬虫也不是摆设的,要想获取到这些数据,势必要伪装好自己的数据,那么需要伪装什么数据呢?

  • 24 2019-06
    动态代理IP爬虫采集数据的首选

    动态代理IP爬虫采集数据的首选,由于爬虫经常被限制的,如果使用了动态代理IP,这样可以快速切换IP,帮助爬虫继续访问,提高抓取网站信息的效率,这是非常有好处的。

  • 13 2019-06
    代理ip按照什么分类?

    代理ip按照什么分类?代理ip的分类跟我们有什么关系?这当然是有关系的,如果不清楚,选择了不多的代理ip类型使用,就达不到需要的效果,例如平台是https协议的,而我们使用http代理ip去突

  • 08 2019-04
    代理IP可以用于下载加速么?

    代理IP主要是用于换IP的场景,其实除了换IP,代理IP还有其他的作用,比如提高下载速度,这是因为代理IP可以有效降低网络延迟。

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

大客户经理微信

微信公众号

微信公众号

回到顶部