暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

极验验证码(6.0.9)破解系列一:抓包分析

Python爬虫和数据挖掘 2021-07-08
5525

文章目录


  • 文章目录

    • 1. 开篇寄语

    • 2. 抓包分析

    • 3. 总结


1. 开篇寄语


  1. 首先,开篇之前我先说点废话吧,本人平时在公司上班,工作也挺忙的,并没有太多时间静下心来调试js,特别是极验这种,太费心费力了 ,当然也有很大原因是我太菜,哈哈

  2. 其次,这次开篇,计划是分篇介绍下每个参数的处理方式,并改写成python3版本,对我个人来说,是个不小的工程,我自己都不敢保证最后我会成功或者坚持走到最后

  3. 至于为什么还要选择开篇,主要是我怕我目前零星时间堆积下来的东西,被我遗忘了,记录下来如果还可以帮助学习python及爬虫的同学,对那些摩拳擦掌,想要和极验对拼一波的勇士,能够有点作用,甚至激发点小灵感,想想还是很开心的

  4. 最后简单介绍下极验吧,武汉极意网络科技有限公司(简称极验),是一家以技术为核心,数据为驱动,从安全,运营,产品层面赋能业务发展的解决方案提供商,创立于2012年10月24日,开创"行为式验证"技术,利用生物特征与人工智能技术解决交互安全问题,抵御恶意攻击,保护企业资产,这些是官网描述,在我看来,极验验证是大数据产物,把传统的任务式验证,变成了有趣的游戏式验证,创意十足。

2. 抓包分析


我这里就不介绍我的目标网站了哈,原因是和这个网站相爱相杀了两年,从最开始每天采集他们百万数据,到后来不得已使用代理IP,adsl拨号机器,极验打码平台,前段时间打码平台被封了,才决定要立志自己研究,期间和目标网站共同‘学习和进步’,倍感开心, 哈哈,所以这里暂不介绍目标网站,直接进入正题,抓包过程不再介绍,这里主要介绍抓包过程中的几个关键的链接

2.1 StartCaptchaServlet 链接

参数:无 该链接返回极验的gt和challenge值

{"success":1,"gt":"a7989708fd71c409a267f4f12897d794","challenge":"512e49df5ad673f6c28b3f5d2ddc4385"}

复制

2.2 gettype.php 链接

参数:

 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"
 }
})

复制

2.3 get.php 链接

参数:

 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": [125898364395621512],
 "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"
})

复制

2.4 ajax.php 滑动极验成功

参数:

 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"})

复制

2.5 ajax.php 滑动极验失败

参数:

 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"})

复制

3. 总结


  1. 首先通过抓包分析,大致了解了极验的请求过程,以及出现的各种参数和配置信息
  2. 我们认识到了gt和challenge,极验相关的各种js路径,极验的各种详细配置,以及滑动时生成的参数w
  3. 接下来我们要开始进行js分析,从而解析出w的值,完成破解


文章转载自Python爬虫和数据挖掘,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论