极验验证码破解—超详细教程(三)

极验验证码破解—超详细教程(一)

极验验证码破解—超详细教程(二)

极验验证码破解—超详细教程(三)

Gayhub:FanhuaandLuomu/geetest_break

2017.8.21 代码以上传,可供参考

[国家企业信用信息公示系统为例]

目录

一、网站http://www.gsxt.gov.cn滑动验证码概述.

二、极验验证码破解-抓包分析.

三、极验验证码破解-搭建本地验证码服务.

四、极验验证码破解-分析geetest.js,得到所需参数.

五、极验验证码破解-Track的获取.

六、极验验证码破解-获取背景图片及缺口距离d的计算.

七、极验验证码破解-总结.

参考文献.

运行截图.


五、极验验证码破解-Track的获取

1. Track的生成可以根据图片缺口的距离d,使用随机函数随机采样生成。比如d=120,则我们控制总拖动时间为t(t一般小于3s),则可以每很小的时间内(每次随机时间,如10ms)移动一小段随机距离,最后在时刻t时正好移动到d。但考虑人拖动会有先加速在减速的特点(或许还有其他特点),geetest的服务器可能会识别到时机器所为,我们很难找到人行为的轨迹特点并且难以模拟,因此生成轨迹不太可行(也许可行,但代价较大)。

2. 我们提出另一种方法替代Track的生成,即手工事先存储备用Track。验证码图片总长大概250左右,由于我们已经实现了在Console中打印Track的js,因此我们可以多次刷新http://localhost:8000/页面,得到不同缺口位置的验证码,手动拖动至缺口处,保存Console中的Track。

3. 经过试验发现,缺口位置大多停留在中间位置,并且拖动误差在3以内都可以接受。因此我们可以用当前位置d的Track来代替d-1和d+1的Track(如缺口位置120,则119和121的Track可以不用测试,直接使用120的Track)。这样大大减少了刷新页面获取Track的次数,我收集的Track列表如下:

为了方便统计,我按个位数将Track存放在10个文件中。

我们将所有的Track整合为dict(t_dict.pkl),格式如下:

{k1:v1},其中k1为缺口位置,v1为Track(字符串形式)。

至此我们得到Track备用列表,我们可以根据实际的缺口位置获得相应的Track值,下一节我们将会讲解如何得到缺口距离验证码左边的相对距离d。

六、极验验证码破解-获取背景图片及缺口距离d的计算

1. 我们首先寻找图片的来源。回忆分析get.php?的时候,看到过“fullbg”的出现,因此很大可能背景图片信息是通过get.php?传来的。查看Response如下:

根据图片的url打开图片:

可以发现图片已经乱码,这是因为返回的图片是局部重合产生的。

查看验证码图片的审查元素:

可以发现,展示的图片是从原始乱码图片中多次截取小段,合成而成的。具体的合成方式如background-position所示。如background-position:-157px,-58px。则该小段图片为源乱码图片的(157,58,157+10,58+58)。根据上述分析,我么可以还原bg和fullbg的非乱码图片(即所看见的背景图片)。

我们通过比较两张图片的像素值,即可得到缺口的位置,缺口左上角横坐标的值即为d。我们封装了get_dist函数如下:

函数其它细节请参见项目源码。

七、极验验证码破解-总结

1. 至此,geetest验证码的关键技术点已经讲解完,有没有感觉号称使用深度学习技术进行人机验证的滑动验证码也不过如此。最近我会在Github上开源所有代码,希望得到大家的指点。

2. 当时做这个项目大概断断续续做了两星期左右(2017.03),开始是参照网上教程使用selenium控制鼠标来实现,后来发现鼠标移动的速度太机械化,成功率太低(滑动到缺口处,但被识别为机器行为)。所以,我采取了退而求其次的方法,避免对轨迹路径的生成,直接使用已经成功验证的历史轨迹来作为当前轨迹。经过试验,这种方法成功率接近100%,且复杂度不高,历史轨迹单独存在硬盘,可定期更新(以防止轨迹被封)。

3. 最近(2017.07)突然想写个文档教程分享技术,算是个学习笔记,也算是对自己曾经努力的记载。该文档断断续续写了4个晚上的时间,欢迎大家阅读并指正。

4. 最后附上Github地址,里面有一些小爬虫和NLP相关的项目,欢迎围观。https://github.com/FanhuaandLuomu

参考文献

1.http://blog.csdn.net/paololiu/article/details/52514504

2.https://zhuanlan.zhihu.com/p/22866110?refer=windev

3.https://zhuanlan.zhihu.com/p/22404294

(向以上参考文章的作者致谢~)

运行截图

Python geetest_spider.py

注意:要爬取的企业列表写在searchword_list。

(THE END,如果对您有帮助,请点个赞~~~)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,670评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,928评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,926评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,238评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,112评论 4 356
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,138评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,545评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,232评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,496评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,596评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,369评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,226评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,600评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,906评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,185评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,516评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,721评论 2 335

推荐阅读更多精彩内容