问题讨论:https://v2ex.com/t/138479
应用场景:
防止机器批量登,爬,刷。在识别到安全风险时返回一个滑块对抗机器。
滑块原理:
从客户端提取信息,加密后上传 后端识别这些是否机器或者是恶意行为。
1.最终停止位置xpos
每次验证请求都会得到三张图,fullbg:完整的验证图形、slice:拼图那一小块、bg:拼图对应那一块加阴影的fullbg,对比fullbg和bg,哪一列像素上开始发生较大变化那就是xpos
如果以后不提供fullbg,只要得到几张不同的bg,求它们的交集即可得到fullbg,不需要机器学习算法
2.鼠标移动轨迹a
根据xpos可以确定大概需要生成多少帧
x随帧编号产生不均匀增加,直至xpos,开始是用arctan函数模拟的,后来发现完全没必要,建个bitmap[xpos],从里面随机挑选不重复项选就行了
y用长周期小振幅的sin函数模拟
t随时间产生不均匀增加,并加入一些跳变
用以上方法填充a
3.加密
不需要破解,从js中剥离加密相关的函数,放入js虚拟机,传入xpos和a并执行,获得加密后结果
说明
go run geetest-bypass.go -c=次数 -gt=“站点的gtid” 默认尝试豆瓣的验证码100次
success = 1 message = blahblahblah 通过
success = 0 message = failed 未通过
forbidden 判定为机器人
实现方式:
https://github.com/rejiejay/captcha-slider
https://github.com/yeild/jigsaw
https://m.php.cn/article/398849.html
https://github.com/google/recaptcha/blob/master/tests/ReCaptcha/RequestMethod/PostTest.php
https://github.com/binwind8/tncode/blob/master/TnCode.class.php
破解方案
https://lengyue.me/index.php/2018/10/16/shumei/
https://medium.com/@filipvitas/how-to-bypass-slider-captcha-with-js-and-puppeteer-cd5e28105e3c
https://github.com/fvitas/slider-anti-captcha?source=post_page---------------------------