首先,开篇之前我先说点废话吧,本人平时在公司上班,工作也挺忙的,并没有太多时间静下心来调试js,特别是极验这种,太费心费力了 ,当然也有很大原因是我太菜,哈哈
其次,这次开篇,计划是分篇介绍下每个参数的处理方式,并改写成python3版本,对我个人来说,是个不小的工程,我自己都不敢保证最后我会成功或者坚持走到最后
至于为什么还要选择开篇,主要是我怕我目前零星时间堆积下来的东西,被我遗忘了,记录下来如果还可以帮助学习python及爬虫的同学,对那些摩拳擦掌,想要和极验对拼一波的勇士,能够有点作用,甚至激发点小灵感,想想还是很开心的
最后简单介绍下极验吧,武汉极意网络科技有限公司(简称极验),是一家以技术为核心,数据为驱动,从安全,运营,产品层面赋能业务发展的解决方案提供商,创立于2012年10月24日,开创"行为式验证"技术,利用生物特征与人工智能技术解决交互安全问题,抵御恶意攻击,保护企业资产,这些是官网描述,在我看来,极验验证是大数据产物,把传统的任务式验证,变成了有趣的游戏式验证,创意十足。
我这里就不介绍我的目标网站了哈,原因是和这个网站相爱相杀了两年,从最开始每天采集他们百万数据,到后来不得已使用代理IP,adsl拨号机器,极验打码平台,前段时间打码平台被封了,才决定要立志自己研究,期间和目标网站共同‘学习和进步’,倍感开心, 哈哈,所以这里暂不介绍目标网站,直接进入正题
{"success":1,"gt":"a7989708fd71c409a267f4f12897d794","challenge":"512e49df5ad673f6c28b3f5d2ddc4385"}
gt: a7989708fd71c409a267f4f12897d794
callback: geetest_1563886619164
返回该版本极验所使用的js路径,也引出了我们的主角 path: “/static/js/geetest.6.0.9.js”
geetest_1563886619164(
{
"status": "success",
"data": {
"beeline": "/static/js/beeline.1.0.1.js",
"maze": "/static/js/maze.1.0.1.js",
"path": "/static/js/geetest.6.0.9.js",
"static_servers": ["static.geetest.com", "dn-staticdown.qbox.me"],
"type": "slide",
"voice": "/static/js/voice.1.2.0.js",
"pencil": "/static/js/pencil.1.0.3.js"
}
})
gt: a7989708fd71c409a267f4f12897d794
challenge: 512e49df5ad673f6c28b3f5d2ddc4385
product: embed
offline: false
protocol: https://
beeline: /static/js/beeline.1.0.1.js
maze: /static/js/maze.1.0.1.js
path: /static/js/geetest.6.0.9.js
type: slide
voice: /static/js/voice.1.2.0.js
pencil: /static/js/pencil.1.0.3.js
callback: geetest_1563886621229
不难发现,这个请求的参数,来自于链接1和2的返回值,该链接返回当前极验的各种配置,这些参数在破解时几乎都是有用的,这里就全给展示了
geetest_1563886621229(
{
"theme": "golden",
"challenge": "512e49df5ad673f6c28b3f5d2ddc4385b7",
"hide_delay": 800,
"gt": "a7989708fd71c409a267f4f12897d794",
"static_servers": ["static.geetest.com/", "dn-staticdown.qbox.me/"],
"benchmark": false,
"clean": false,
"bg": "pictures/gt/6121c49a0/bg/6d26754d1.jpg",
"s": "525a464f",
"https": true,
"api_server": "https://api.geetest.com/",
"fullbg": "pictures/gt/6121c49a0/6121c49a0.jpg",
"id": "a512e49df5ad673f6c28b3f5d2ddc4385",
"show_delay": 250,
"feedback": "https://www.geetest.com/contact#report",
"product": "embed",
"template": "",
"c": [12, 58, 98, 36, 43, 95, 62, 15, 12],
"type": "slide",
"fullpage": false,
"ypos": 10,
"version": "6.0.9",
"i18n_labels": {
"refresh":"刷新验证",
"voice":"视力障碍",
"success":"sec 秒的速度超过 score% 的用户",
"forbidden":"哇哦~怪物吃了拼图请 3 秒后重试",
"tip":"请完成下方验证",
"cancel":"取消",
"loading":"加载中...",
"error":"出现错误, 请关闭验证重试",
"logo":"由极验提供技术支持",
"slide":"拖动左边滑块完成上方拼图",
"close":"关闭验证",
"fail":"拖动滑块将悬浮图像正确拼合",
"feedback":"帮助反馈"
},
"slice": "pictures/gt/6121c49a0/slice/6d26754d1.png",
"height": 116,
"logo": true,
"mobile": false,
"so": 0,
"xpos": 0,
"link": "",
"theme_version": "3.2.0"
})
gt: a7989708fd71c409a267f4f12897d794
challenge: 512e49df5ad673f6c28b3f5d2ddc4385fo
w: aOIzh70iaN)jtEQR)9oq4)ROOwRTTh0uJcPPn5NZmoYxXG9lePgzFzouUk1byZ)R2gZhLWn8FiXuR2jss3mtn9Cxyc28MPz47IlaI2Tv0pyNNx8gF2sBdRfjHbMd0mUOv(pZ1nH4amhMS)rVaDZpEqJ12jPWAv2Jf3AgVgeQJ7YMkv9wDFZAfGBzlycBPTwy8kbEYSIOKCJN7AEJ0euhzIaGNHZllmyRo)uZVC(8qbJy46gfxc12XZ4v8sSSKKDjI1y48Kcg55iULvmn7W0U7Bs5)fwWrLy6JyEPd9mRO0qQgmETp4k77Gp4ZC2Rdvl)zAr9(gLIzS0bkN3Pm6ZhH(5Ov5PbWcPrwNul7t)I6nI.612cf2c5a911d1994db6f27f18e42da67125611db92b674102fe471331ca58c4ef295a26d9d8bf4845d68b711a9ea60b9713d4ef19a7066b7ff0e8a7dca0a901f1e557e2a48e40dae36e38773e7f84e0022cb2f347ec08dd343e77c1fb035ac79f89d1c51c070b924b7ec0fdc254c09f1995b64ff04d53d0ee08998fca1eb51b
callback: geetest_1563888591297
该请求参数的w值,是我们完成极验破解的关键,该链接返回结果信息和validate参数
geetest_1563888591297({"success": 1, "validate": "86498aa6abab95b11509c8a8e4bc261d", "score": "3", "message": "success"})
gt: a7989708fd71c409a267f4f12897d794
challenge: 512e49df5ad673f6c28b3f5d2ddc4385fo
w: aOIzh70iaN)jtEQR)9oq426XCeOuuREDA1HRt7H7O7OJGxW15VlYdNGAJ1NcniZFLEoOoBj33QUssLV3XSHHWgGSGe2)3nNIvLO8lTE7)(bJajs(RZp98Opdd8sibMY9OERiPulJN03pDQFqINVeu61UNKmkkX18RFLBUDe7ag3w2Obc(kaSlMriwMfWiYY398PAnjfUsYsvul)ovfAcCFi48K1w0WWZ39bc3JyVSPDSMT6jHcbpNLfK4v4JnGFa4ZRpAPZvnHmlfharqD9PByZ9JO7UsXkUQ6)XlOnCor7s870LKEJ3QI(g1B2C8Ws2KBMH1)e9fsDg5UNW8YPWB)P6dIhkmYeDl(OdgCub5O1zPeHAl2DA7zn26uwH006wVifCKGPKx7c0ufohbHGlxg..8e090b119198624496757a509be31f61fc2ee61fea3d351434c0b8bdd85c7f6c43c303cb848d5388948c86a9b07c7e0fecef639dc39b8e18d2372dd5dd3bc23e45ccd754fc79bf35071ec24951659e50aef735a9b381dc7cbf1931c3283268eb751f22fd6ea524fe9c50afd83d2a8e8ad3a63aa794ef71e68dd6005f787305c7
callback: geetest_1563888325048
返回滑动结果信息
geetest_1563888325048({"success": 0, "message": "fail"})
- 首先通过抓包分析,大致了解了极验的请求过程,以及出现的各种参数和配置信息
- 我们认识到了gt和challenge,极验相关的各种js路径,极验的各种详细配置,以及滑动时生成的参数w
- 接下来我们要开始进行js分析,从而解析出w的值,完成破解
文档仅作学习和记录使用,请不要用于商业和违法用途,如有侵权,请告知删除。