前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >将验证码识别功能集成到现有的爬虫框架

将验证码识别功能集成到现有的爬虫框架

作者头像
fengzhizi715
发布2018-08-24 17:26:05
6940
发布2018-08-24 17:26:05
举报
文章被收录于专栏:Java与Android技术栈

蜘蛛网.jpg

验证码的识别

过年期间我曾经写过一篇文章《一次简单的验证码识别以及思考》, 目前已经对该功能做了一些优化,可以支持几种类型的验证码识别。其核心思想仍然是上一篇文章所提到的,使用tensorflow来训练标注过的验证码。目前,多种类型的验证码训练完之后可以放到一个模型中。未来,有新增的验证码类型通过训练之后也可以整合到这个模型中。

通过多次训练得到的经验大致是,一种类型的验证码标注4000-5000个数据,就能获得90%以上的识别准确率。

集成到爬虫框架

爬虫框架NetDiscovery,github地址:https://github.com/fengzhizi715/NetDiscovery

对于验证码的识别,最终暴露出来是一个web服务。该web服务采用Vert.x进行开发,对于爬虫而言,只需知道它是一个web服务即可,无需知道后面的逻辑。而且,web服务的地址也可能会更换。

最终的架构.png

所以,我在爬虫框架中封装了一个工具方法,只需要传入图片的url地址就能够返回验证码的内容。

代码语言:javascript
复制
    /**
     * 返回验证码的内容
     * @param imageUrl 验证码的url
     * @return
     */
    public static String getCaptcha(String imageUrl) 

测试几张图片

代码语言:javascript
复制
        System.out.println(Utils.getCaptcha("http://47.97.7.119/qianmou/images/captcha/1.png"));

        System.out.println(Utils.getCaptcha("http://47.97.7.119/qianmou/images/captcha/2.png"));

        System.out.println(Utils.getCaptcha("http://47.97.7.119/qianmou/images/captcha/3.png"));

        System.out.println(Utils.getCaptcha("http://47.97.7.119/qianmou/images/captcha/4.png"));

        System.out.println(Utils.getCaptcha("http://47.97.7.119/qianmou/images/captcha/5.png"));

        System.out.println(Utils.getCaptcha("http://47.97.7.119/qianmou/images/captcha/6.png"));

执行结果:

代码语言:javascript
复制
862FF
7FA88
F3686
6D964
FE9FC
6494A

经过测试后,发现只有第一个验证码是识别错误的,其余五个都能够正确地识别出验证码中的数字和字母。

第一个验证码正确的值应该是862DF,而不是862FF。

验证码.jpeg

识别完验证码之后,爬虫就可以模拟“用户”的登录行为,登录成功后记录下Header中的“Set-Cookie”的值,后面的操作就可以使用这个Cookie的值。

NetDiscovery的未来

首先,NetDiscovery需要增加多种类型验证码的识别,需要不断的标注数据。

其次,NetDiscovery打算做成一个比较通用的爬虫框架,虽然最近工作比较繁忙,但是每周仍然会有代码的提交。

下一个比较大的功能,应该是完成跟图像框架的结合。目前NetDiscovery的selenium模块可以实现对网页的截图,未来打算实现从截取的图片中提取有用的信息。这样从一定程度上能够对抗反爬虫。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.03.25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 验证码的识别
  • 集成到爬虫框架
  • NetDiscovery的未来
相关产品与服务
验证码
腾讯云新一代行为验证码(Captcha),基于十道安全栅栏, 为网页、App、小程序开发者打造立体、全面的人机验证。最大程度保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下业务安全的同时,提供更精细化的用户体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档