【验证码识别】(二)京东滑块验证码**---纯js非selenium方式 java版本

时间:2024-05-21 08:56:16

接下来一步步分析jd的滑块验证码

声明:本文章纯属技术探讨学习
防止不法用途
轨迹代码为旧版本需要自行优化

你在本篇文章可以学习到什么?

  • 滑块分析的思路(纯js调用,非selenium)
  • java爬虫常用的方法
  • java调用js引擎的方法
  • 如何分析一个网页,对网页进行调试

首先看一下结果(成功率还是非常的高)

【验证码识别】(二)京东滑块验证码**---纯js非selenium方式 java版本

分析正文

爬虫思路

首先说一下我对爬虫的思路。

分析的过程主要是一个控制变量的过程,不断减少影响的因素,这样就能出得出分析的结果

看一下jd登录页面的

有一个请求是只要接触页面就不断发送的

【验证码识别】(二)京东滑块验证码**---纯js非selenium方式 java版本

https://seq.jd.com/jseq.html请求

去除这个请求,整个滑块过程一共只有三个请求

分别是

  • https://iv.jd.com/slide/g.html
  • https://iv.jd.com/slide/s.html

可以看到g请求是用来获取图片的base64编码的。

那s请求就是验证图片验证码的一个请求了。

非常清晰明了。

那问题来了。

jseq请求有用吗?

做什么用?

是不是进行验证的关键请求

当然我也不知道?

但我们可以进行测试

这里就要用到其他的工具进行测试了

相信大家都回有Fiddler这个工具,没有的话青花瓷也可以。

1、打开Fiddler

2、拦截jseq请求

对就是这么简单!

不清楚请求的是否起作用,我们就将它拦截不让他进行请求。

我们发现滑块验证照样通过了。

这样我们减少了一个分析的请求

减少了一个爬虫影响的因素。

就是这样不断减少因素

最后再构造需要构造的请求即可完成一个爬虫

回到正题

g请求我们上篇文章已经有分析过了

【验证码识别】(二)京东滑块验证码**---纯js非selenium方式 java版本

我们现在看一下s请求。也就是验证的请求。
首先Get请求
参数在url后面

【验证码识别】(二)京东滑块验证码**---纯js非selenium方式 java版本
参数非常多

我们一个个分析

d:做过滑块的应该很容易看出d就是轨迹的加密密文。比较长且是乱码,一般是一个数组分别为 x,y,t 加密的结果

c:我们通过浏览器的全局搜索、是每个验证码的唯一的id(每个验证码不同,用于服务器去识别哪个验证码)

剩下的基本都是可以写死 或者是用户名(o)这些都是可以全局搜索通过分析得出的

我们看一下js的处理

火狐浏览器有一个
【验证码识别】(二)京东滑块验证码**---纯js非selenium方式 java版本

堆栈跟踪

点一下请求

第二个就是加密的过程

【验证码识别】(二)京东滑块验证码**---纯js非selenium方式 java版本

打个断点分析一下

【验证码识别】(二)京东滑块验证码**---纯js非selenium方式 java版本
d加密的果然是一串轨迹,我们后续需要自己构造这一段数组

后面就是简单的扣出js代码 然后放入java引擎执行

后面会上传github代码
本文章纯属技术探讨学习
防止不法用途
轨迹代码为旧版本需要自行优化