最后,谈谈滑动验证码。

目前,工商网站已经全面改版,全部采用了滑动验证码,上面绝大多数思路都失效了。对于滑动验证码,网上能搜到的解决方案基本都是下载图片,还原图片,算出滑动距离,然后模拟js来进行拖动解决,我们来看下能否不模拟拖动来解决这个问题。

以云南工商网站为例,首先抓包看过程。

1. http://yn.gsxt.gov.cn/notice/pc-geetest/register?t=147991678609response:

2. 下载验证码图片

3. http://yn.gsxt.gov.cn/notice/pc-geetest/validate, post如下数据:

4. http://yn.gsxt.gov.cn/notice/search/ent_info_list,post如下数据:

仔细分析,我们发现两处疑点

1. 第一步并没有返回需要下载的图片地址,那么前端怎么知道要下载哪些图片?

2. 第三步验证时,并没有告知后端下载了那些图片,后端是怎么验证post过去的数据是有效性的?

仔细阅读前端混淆的js代码,我们发现前端数据处理过程是这样的:

1. 从0到6(不含)中取随机整数,赋值给d, d=5;

2. 从0到300(不含)中取随机整数,赋值给e, e=293;

3. 将d转化为字符串并作MD5加密,加密字符串取前9位赋值给f, f=’e4da3b7fb’;

4. 将e转化为字符串并作MD5加密,加密字符串从第11位开始取9位赋值给g, g=’43be4f209’;

5. 取f的偶数位和g的奇数位组成新的9位字符串给h, h=’e3de3f70b’;

6. 取h的后4位与200做MOD运算,其结果小于40,则取40,否则取其本身赋值给x,x=51;

7. 取[x-3, x+3]以内随机数赋值给c,c=51;

8. 分别取c,d,e跟challenge做t加密(t(c,challenge), t(d, challenge), t(e,challenge))并用(_)拼接即为geetest_validate, ‘9ccccc997288_999c9ccaa83_999cc9c9999990d’

这里f, g参数决定了下载图片地址:

而x为滑块拖动的横向偏移量,至此解答了疑问1中图片下载地址怎么来的问题。

前边提到的t加密过程是这样的:

t(a,b),此处以a=51演示

1. challenge为34位16进制字符串,取前32位赋值给prefix,后2位赋值给suffix,prefix=’34173cb38f07f89ddbebc2ac9128303f’, suffix=’a8′

2. prefix去重并保持原顺序,得到列表 [‘3’, ‘4’, ‘1’, ‘7’, ‘c’, ‘b’, ‘8’, ‘f’, ‘0’, ‘9’, ‘d’, ‘e’, ‘2’, ‘a’]

3. 将2中列表循环顺序放入包含5个子列表的列表中,得到random_key_list:  [[‘3’, ‘b’, ‘d’], [‘4’, ‘8’, ‘e’], [‘1’, ‘f’, ‘2’], [‘7’, ‘0’, ‘a’], [‘c’, ‘9’]]

4. 将suffix字符串(16进制)逐位转化为10进制,得到[10, 8]

6. 将4中列表逐位与[36,0]做乘法和运算并与a的四舍五入结果相加, n= 51 + 36*10 + 0*8=419

7. q=[1,2,5,10,50], 用q对n做分解(n=50*13+10*0+5*1+2*1+1*1),将其因数倒序赋值给p,p=[0,2,1,1,8]

8. 从random_key_list右侧开始随机取值,次数为p中数值,拼成字符串sub_key,sub_key=’9ccccc997288′

至此,我们完成了整个分析过程,我们又有了新发现:

1. 按照前边的抓包过程,其实不需要真的下载图片,只需执行1、3、4步就可以得到目标数据了。步骤1也可以不要,只需3、4即可,但是少了步骤1, 我们还需要额外请求一次cookie,所以还是保留1, 这样也伪装的像一点嘛。

2. 相同的challenge,每次运算都可以得出不同的validate和seccode,那么问题来了:到底服务端是怎么根据challenge验证其他数据是否有效呢?

总结一下,对于验证码,本文只是提供了一种新的思路,利用了网站开发过程中的一点小疏漏,而最后的滑动验证码也只是分析了offline模式的验证方法。不要指望所有验证码都可以能绕过,没有阿登高地,二战德国就不打法国了么?只要觉得有价值,即使正面面对验证码,作为爬虫工程师建议也就一句话:不要怂,就是干!

gsxt滑动验证码的更多相关文章

  1. selenium处理极验滑动验证码

    要爬取一个网站遇到了极验的验证码,这周都在想着怎么破解这个,网上搜了好多知乎上看到有人问了这问题https://www.zhihu.com/question/28833985,我按照这思路去大概实现了 ...

  2. php 滑动验证码

    自己研究: jQuery拖拽滑动验证码插件 slideunlock.js 原理:(别人说) 响应时间,拖拽速度,时间,位置,轨迹,重试次数等.这些因素能够构成一个采样结果或者辨识特性. 只获取到滑动时 ...

  3. thinkphp整合系列之极验滑动验证码

    对于建站的筒子们来说:垃圾广告真是让人深恶痛绝:为了清净:搞个难以识别的验证码吧:又被用户各种吐槽:直到后来出现了极验这个滑动的验证码:这真是一个体验好安全高的方案:官网:http://www.gee ...

  4. 一步步实现滑动验证码,Java图片处理关键代码

    最近滑动验证码在很多网站逐步流行起来,一方面对用户体验来说,比较新颖,操作简单,另一方面相对图形验证码来说,安全性并没有很大的降低.当然到目前为止,没有绝对的安全验证,只是不断增加攻击者的绕过成本. ...

  5. selenium+java破解极验滑动验证码的示例代码

    转自: https://www.jianshu.com/p/1466f1ba3275 selenium+java破解极验滑动验证码 卧颜沉默 关注 2017.08.15 20:07* 字数 3085  ...

  6. VUE中使用geetest滑动验证码

    一,准备工作:服务端部署 下载文件gt.gs: https://github.com/GeeTeam/gt3-python-sdk 需要说明的是这里的gt.js文件,它用于加载对应的验证JS库. 1. ...

  7. vue_drf之实现极验滑动验证码

    一.需求 1,场景 我们在很多登录和注册场景里,为了避免某些恶意攻击程序,我们会添加一些验证码,也就是行为验证,让我们相信现在是一个人在交互,而不是一段爬虫程序.现在市面上用的比较多的,比较流行的是极 ...

  8. Python——破解极验滑动验证码

    极验滑动验证码 以上图片是最典型的要属于极验滑动认证了,极验官网:http://www.geetest.com/. 现在极验验证码已经更新到了 3.0 版本,截至 2017 年 7 月全球已有十六万家 ...

  9. selenium+java破解滑动验证码

    2019-04-16更新 修复极验页面改版,这次采用极验官方的demo地址:https://www.geetest.com/demo/slide-bind.html 截止2019-04-16,极验和腾 ...

随机推荐

  1. JS之理解继承

    JS之理解继承:https://segmentfault.com/a/1190000010468293 1.call继承,也叫借用构造函数.伪造对象或是经典继承.call继承回把父类的私有属性和方法继 ...

  2. P1233木棍加工

    这个题被算法标签标为DP,但其实可能只是用dp求子序列,,(n方) 给出l与w,只要是l与w同时满足小于一个l与w,那么这个木棍不需要时间,反之需要1.看到这个题,首先想到了二维背包,然后发现没有最大 ...

  3. Java 接口和多态练习

    我们鼠标和键盘实现USB接口,那么我们鼠标和键盘就变成了USB设备,这时候我们就可以把它放到笔记本电脑里面去用 package com.biggw.day10.demo07; /** * @autho ...

  4. 数学: HDU Co-prime

    Co-prime Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Subm ...

  5. 第三方模块:gulp模块

    一.Gulp的使用 1. 使用npm install  gulp  下载gulp库文件 2. 在项目根目录下简历gulpfile.js文件 3. 重构项目的文件夹架构src目录放置源代码文件,dist ...

  6. Spark Streaming整合logstash + Kafka wordCount

    1.安装logstash,直接解压即可 测试logstash是否可以正常运行 bin/logstash -e 'input { stdin { } } output { stdout {codec = ...

  7. Markov Chain Monte Carlo Simulation using C# and MathNet

    Math.Net Numerics has capability to conduct Markov Chair Monte Carlo simulations, yet the document i ...

  8. ie10兼容问题 -- 将div定位absolute在图片img上面,导致div点击事件无效

    ie10兼容问题: 将div定位absolute在图片img上面,发现div若不加背景色,导致div点击事件(任何事件)无效. <div class="paper-box"& ...

  9. Zabbix--04 自定义模版、web监控

    目录 一.自定义模版 1.创建模版 2.导出模版 3.监控TCP11种状态 3.2.重启zabbix-agent 3.3.测试监控项 4.导入模版文件 5.主机关联模版文件 6.查看最新数据 7.查看 ...

  10. 个人作业 项目alpha版本测试

    课程:https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass2 作业要求:https://edu.cnblogs.com/campus ...