某东滑块验证分析

编程入门 行业动态 更新时间:2024-10-07 08:26:16

某东<a href=https://www.elefans.com/category/jswz/34/1771040.html style=滑块验证分析"/>

某东滑块验证分析

目标网址:
aHR0cHM6Ly9wYXNzcG9ydC5qZC5jb20vbmV3L2xvZ2luLmFzcHg=

滑块验证成功后返回32位的validate

点击登录后触发滑块验证

此时通过抓包分析会找到一个名为".html"的数据包,类型为"script",该数据包返回的是滑块相关信息

请求参数:

appId: 1604ebb2287
scene: login
product: click-bind-suspend
e: JKVZX4U2NTPGPWXNNI7T6N…………
j:
lang: zh_CN
callback: jsonp_08313043739954284

请求中所有参数均可固定

返回数据:

jsonp_08313043739954284({

"patch": "base64"

"static_servers": "//ivs.jd/",

"bg": "base64"

"success": "1",
"y": 33,
"challenge": "f96bf44da30f4474b7561e451dd203b3",
"api_server": "//iv.jd/",
"message": "success",
"o": "loginname"
})

返回数据包是jsonp格式,正则后加载json即可调用,以下是需要提取使用的数据
patch: 缺口图片
bg: 背景图片
challenge: 滑块code

拖动滑块进行提交验证

滑动后会出现一个为".html"的数据包,类型依旧为"script",该数据包是提交验证的

请求参数:

d:02Q005VoFHqrzO10x10n00001010000027102000000710200000081040000009104000000810300000091040000007103000000910300000081030000008101000000810300000081020000009102000000810100000091010000007101000000a0000000007000000000g101000000a0000000006000000000b00000000051010000009000000000900000000071010000008101000000c0000000005101000000c0000000003101000000d000000000400000000080000000009101000000g000000000x000000000x000000000g10100000080000000008101000000810100000081010000008101000000900000000081010000008000000000810100000080000000008000000000900000000071010000009000000000g000000000p000000000y101000000e000000000h000000000b000000000g101000000g000000000h000000000f000000000n0000000008101000000p000000000o000000001200000000lp
c: f96bf44da30f4474b7561e451dd203b3
w: 278
appId: 1604ebb2287
scene: login
product: click-bind-suspend
e: JKVZX4U2NTPGPWXNNI7T6N…………
j:
s: 4492155849642022532
o: 213123123
o1: 0
u: .aspx
lang: zh_CNcallback: jsonp_05054829670002849

以下是需要解析的数据,其他均可固定
d:滑块轨迹
c:滑块code

返回数据:

jsonp_041183307984218875({
"success": "1",
"message": "success",
"validate": "cb9ff03009654be0b0747eb28e8af98e",
"nextVerify": "NULL_VERIFY"
})

滑块验证成功后会返回validate

由以上分析得知,只有d(轨迹)是需要分析的,其他值均是通过接口返回或固定的

分析轨迹

通过验证接口调用的最后一个堆栈下断,下断后开始滑动验证

滑动后会在此处断住,发现右侧堆栈已经生成并加密了轨迹信息,接着往上跟栈

往上跟一步栈后会发现轨迹是由a['getCoordinate'](b)进行加密的;
a['getCoordinate']:加密明文轨迹的函数
b:明文轨迹

定位a['getCoordinate']加密函数的位置

定位至此处直接将getCoordinate扣出来,下面就是运行提示缺什么补什么,此处加密也简单,只需要扣几个函数即可

加密结果与浏览器的值一致

构建请求

import requests
import json
import redef get_info():headers = {'Referer': '/','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36',}params = {'appId': '1604ebb2287','scene': 'login','product': 'click-bind-suspend','e': 'JKVZX4U2NTPGPWXNNI7T6N…………','j': '','lang': 'zh_CN','callback': 'jsonp_0024097493334980014',}response = requests.get('.html', params=params, headers=headers)json_data = json.loads(re.findall(r"\((.*?)\)", response.text)[0])# print(json_data)def get_slider():# 此处是轨迹加密函数,百度jd滑块轨迹或自行写一个,传入上面扣的JS即可加密轨迹# 计算缺口距离使用cv、4docr、打码平台print("轨迹加密")def verify():headers = {'Referer': '/','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36',}params = {'d': "加密的轨迹",'c': "滑块的code,get_info中返回的challenge",'w': '278','appId': '1604ebb2287','scene': 'login','product': 'click-bind-suspend','e': 'JKVZX4U2NTPGPWXNNI7T6N…………','j': '','s': '3766111335005275912','o': '111','o1': '0','u': '.aspx?ReturnUrl=https%3A%2F%2Fwww.jd%2F%3Fcu%3Dtrue%26utm_source%3Dbaidu-pinzhuan%26utm_medium%3Dcpc%26utm_campaign%3Dt_288551095_baidupinzhuan%26utm_term%3D0f3d30c8dba7459bb52f2eb5eba8ac7d_0_f9955416a4e64f12add82a9a1d944a32','lang': 'zh_CN','callback': 'jsonp_05886771632614731',}# time.sleep(5)#延迟,不然太快无法通过response = requests.get('.html', params=params, headers=headers)print(response.text)
 

以上代码运行后请求返回结果一直是失败,发现请求太快需要在提交验证前加个2-5秒延迟

加了延迟后还是无法返回正常的validate,在加密轨迹的地方打上断点,检查轨迹和本地进行对比

明文轨迹中,发现x的起始坐标为478、514,有点问题,一般情况下滑块的初始坐标不会这么高;测试多次后发现x的起始坐标位置基本是屏幕边缘到背景图的距离,浮动25左右,计算出缺口距离后+22~25左右即可

加上延迟以及距离后再次验证,发现请求依旧是失败的,此时有些蒙,怀疑IP、轨迹生成有问题,换了几套轨迹和IP也都不行,检查下载的滑块图片是否有问题

图片正常转码下载,但跟网页上实际渲染的尺寸有误差,清楚是缩放问题后就简单了,取出来的缺口距离按照图片同比缩放减小后+22~25(从params中就可以发现其实w的值就是滑块的真实宽度)

下面再次进行验证,一切正常

该滑块轨迹加密几乎相当于没有加密,非常适合即将入手滑块的同志,手动做一遍基本就清楚过滑块类验证的原理了,只不过有些细节需要注意

缺口距离:有25左右的浮动,应该是对鼠标点击位置有关加上的
图片缩放:需要对上面计算的缺口距离同比缩放
滑动轨迹:这个GitHub上有一套直接copy,其他的测试过程中貌似都要稍微改改,有佬也可以手写一套

技术交流"V裙"=>"Y52115F"

更多推荐

某东滑块验证分析

本文发布于:2024-02-27 20:38:59,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1766667.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:滑块

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!