声明
本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除!
目标网站
aHR0cHM6Ly9jZmUubS5qZC5jb20vcHJpdmF0ZWRvbWFpbi9yaXNrX2hhbmRsZXIvMDMxMDE5MDAvP3JldHVybnVybD1odHRwcyUzQSUyRiUyRml0ZW0uamQuY29tJTJGMTAwMDQ4MjcyNzYyLmh0bWwmcnFob3N0PWh0dHBzJTNBJTJGJTJGYXBpLm0uamQuY29tJnJwaWQ9cnAtMTg2NTQ5NDkwLTEwMDU2LTE3MDk3MTMyMDgzNzEmZXZ0eXBlPTImZXZhcGk9Y29sb3JfcGNfZGV0YWlscGFnZV93YXJlQnVzaW5lc3Mmc291cmNlPTEmZm9yY2VDdXJyZW50Vmlldz0x
验证码分析
当出现了这个验证码的时候。代表出现了风控验证码。可能说已经检测到你是个爬虫了。
这里点快速验证。会出现两种验证码
第一种验证码 我称为t30验证码 即滑块验证码
第二种验证码 我称为t22验证码 即文字点选验证码
两种验证码 按账号等级而定。以及按风控等级来定。
一般来说大部分常遇见的都是第一种t30验证码
今天我们来简单的都分析一波。
文中JS分析与接口分析皆为t30验证码
接口分析
这里发现 我们点击上文的快速验证。这里出现验证码。
先不要着急去划。
上图有四个接口,需要我们去逆向。分别为
- api_1
- api_2
- fp
- check
这里我们挨个去看。先从下往上看。
先看check
这里看到 响应是个图片。后面肯定是提取这组图片并通过识别这个图片。来完成请求
这里请求是三个值
- si
- tk
- ct
很好。我们这里继续往上看。
fp请求
请求参数 是 si 和 ct
响应值是个fp以及st
继续往上看
第二个api请求。
响应值无内容
继续往上看
响应值好像是s1
至此 四个请求分析完毕。
这个时候我们只是出了图片。还没有滑动验证码。
这个时候我们拖动验证码
这里再次出现check请求。不同的是 这次是滑动验证码后发起的请求。
这个时候五个请求。全部过了一遍。简单捋一遍。
- 分析两次API的enbody加密前是什么
- 通过api1返回的s1 去分析tk的生成。
- 通过fp请求请求出fp 和 st
- 构造请求 分析si tk ct如何加密得来
- 构造请求。得到图片
- 得到图片。进行识别 构造请求 完成流程。
详细的流程分析 我后续会发在星球里。
JS分析
这里直接就开干了吧。
这里从JS开始。我们就直接顺着来。先从API请求开始。
第一次API请求
这里直接搜索enbody
这里发现搜不出来任何东西 只有一个webapck打包的虚拟代码
没关系 我们在这个地方打上debugger。
然后跳到另一个文件
这里路过了跳过了无数个栈(当然可以直接搜索enbody)
这里重新刷新 网页。
得到加密的值。这个加密的值。
requestID 就是请求的ID值。每次出现605会返回。
这里的话。shshfpx和encrypt算法的话。在本人星球 需要的可以自取
encrypt 自己去抠。
第二次api请求
上文得到加密的值。然后第二次API请求还有个enbody。
这里我们放开断点。
发现 这里传值好像就是第一次请求的响应值。
fp请求
fp请求 就跟栈吧。我也没想到有什么好的方法。想要快速找到同学
可以试一下搜索 f.si 加空格
这里fp请求的断点如下。
里面的JS还是很简单的。
主要方法就是围绕着这个X方法。把这个方法抠出来就行了。
这里全部抠出来的话 大概不到三百行代码。
获取check请求
这里第一次获取check请求和第二次获取check请求
所在位置都是一样的。
如下图所示。不一样的就是传入的轨迹不同。
相同的地方 也是这个X方法。同样加密就行了。
轨迹
说实话 这个整体分析下来都不难。
唯一难的就是这个轨迹。
如下图所示。
基本上对这个轨迹的检测是很严格的。
包括这是个双缺口的验证码,可能相对的会占用一些时间。
b22 文字点选验证码
上文讲过这个有两个验证码
这里t22验证码 和上文大部分地方都是大同小异。
这里唯一不同的可以就是这个轨迹。这里不是轨迹 而是点选的四个点的坐标。
结果
结语
这里需要接单的可以找一下 洋哥 m.tb.cn/h.5EBifsr?t...
另外本文某些算法 在本人星球里。有需要的小伙伴可以加一下