实战8-滑块验证,点击验证
目标网站(滑块验证)
aHR0cHM6Ly93LmR6d3d3LmNvbS8/Y2lkPTEx
1.分析
进入网站搜索一个关键词,例如:'金矿',然后手动过滑块验证,找到响应数据的请求
在测试过程得知数据请求中需要用到cookies

但是即使携带cookies请求还是获取不到数据,此时就需要校验验证码
分析校验验证码的请求,多次测试这个数字是变化的

这段滑动距离就是请求中携带的数字

2.获取cookies
搜索cookies值得知cookie是set-cookie
代码
url = "https://w.dzwww.com/?act=dzwcode&t=0.8949014516774578"
response = requests.get(url, headers=session.headers,)
cook = {}
for k, v in response.cookies.items():
cook[k] = v
print(cook)
全程请求需要会话维持
3.校验验证码
3.1先获取滑块验证需要的背景图与缺口图的二进制 这边获取到的是一整三合一图片所以需要将图一,图二用代码切割出,目前我没有什么好的方法只能讲图片保存然后再用crop方式切割
代码
with open('all.png','wb+') as f:
f.write(background_bytes)
img = Image.open("all.png")
cropped = img.crop((0, 0, 240, 150)) # (left, upper, right, lower)
cropped.save("background_bytes.png")
3.2获取距离值
使用ddddocr的方式
target_bytes:缺口二进制
background_bytes:背景图二进制
det = ddddocr.DdddOcr(det=False, ocr=False, show_ad=False)
target = det.slide_match(target_bytes, background_bytes, simple_target=True)
print(target)
offset = target['target'][0]
print(offset)
获取距离值后通过请求,如果返回response.text与浏览器中相同便是校验成功,随后请求想要的数据便可得到
4.总结
1.通过请求获取set-cookie,并会话维持2.获取滑块需要的两个图片二进制
3.通过ddddocr得到距离值,校验验证码
4.验证码校验成功后,便可以请求得到想要数据
这个是我觉得比较简单的方法,也还有可以使用reb来找出缺口,以及样本图片左右裁剪拼接等方法
目标网站(点击验证)
aHR0cDovL3d3dy55bmdwLmNvbS9wYWdlL3Byb2N1cmVtZW50L3Byb2N1cmVtZW50TGlzdC5odG1s
1.分析

验证码请求中clientUid貌似事uuid的格式,可以先用uuid试试

校验验证码中
clientUid:uuid
token:验证码请求的响应中
pointJson:需要js逆向

数据请求
captchaCheckFlag:js逆向

2.获取js
搜索pointJson,并打上断点
进入aesEncrypt,固定格式,直接调用aes模块,进入断点分析,需要传入两个参数
pointJson:这个是需要点击的文字的坐标位置,和secretKey也是验证码请求中响应的一个值

captchaCheckFlag:第一个参数需要组成(是token+坐标),第二个参数同上

3.获取坐标
在验证码请求的响应结果中获取图片的数据和需要点击的文字
通过ddddocr得到坐标,将坐标传入到所需要的参数中


浙公网安备 33010602011771号