极验验证码(6.0.9)破解(一) 之 抓包分析

开篇寄语

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

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

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

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

抓包分析

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

1. StartCaptchaServlet 链接


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

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

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

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

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

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

总结

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

文档仅作学习和记录使用,请不要用于商业和违法用途,如有侵权,请告知删除。

猜你喜欢

转载自blog.csdn.net/SpiritedAway1106/article/details/97036932
今日推荐