极验验证码破解—超详细教程(三)
字数 1349 2025-08-29 08:31:41
极验验证码破解超详细教程(三)
一、网站http://www.gsxt.gov.cn滑动验证码概述
极验验证码是一种基于深度学习技术的人机验证系统,通过滑动拼图的方式验证用户是否为真实人类。本教程将详细讲解如何破解该验证码系统。
二、极验验证码破解-抓包分析
通过抓包分析发现,验证码相关信息主要通过get.php接口获取,其中包含"fullbg"参数,表明背景图片信息是通过该接口传输的。
三、极验验证码破解-搭建本地验证码服务
为了便于分析和测试,需要搭建本地验证码服务环境。
四、极验验证码破解-分析geetest.js,得到所需参数
通过分析geetest.js文件,可以获取验证码所需的各种参数,这些参数是后续破解过程的基础。
五、极验验证码破解-Track的获取
Track(拖动轨迹)的生成是破解的关键点之一,有两种主要方法:
1. 随机函数生成Track(不推荐)
- 根据缺口距离d,使用随机函数随机采样生成
- 控制总拖动时间t(一般小于3秒)
- 每小段时间(如10ms)移动一小段随机距离
- 最终在时刻t正好移动到d位置
- 缺点:难以模拟人类先加速后减速的特点,容易被识别为机器行为
2. 手工存储备用Track(推荐)
- 多次刷新验证码页面,获取不同缺口位置的验证码
- 手动拖动至缺口处,保存Console中的Track
- 利用缺口位置相近的Track互相替代(如d=120的Track可用于d=119和d=121)
- 将Track按个位数分类存储在10个文件中
- 最终整合为字典格式:{k1:v1},其中k1为缺口位置,v1为Track字符串
六、极验验证码破解-获取背景图片及缺口距离d的计算
1. 图片来源分析
- 背景图片通过
get.php接口获取 - 返回的图片是局部重合产生的乱码图片
- 实际展示的图片是从原始乱码图片中多次截取小段合成的
2. 图片合成原理
- 通过
background-position参数确定截取位置 - 例如
background-position: -157px,-58px表示从源图片的(157,58)位置开始截取10×58像素的区域
3. 缺口距离计算
通过比较两张图片的像素值,可以得到缺口的位置,缺口左上角横坐标即为d值。实现代码如下:
def get_dist(image1, image2):
# 合并图片使用
location_list = cPickle.load(open('location_list.pkl'))
jpgfile1 = cStringIO.StringIO(urllib2.urlopen(image1).read())
new_image1 = get_merge_image(jpgfile1, location_list)
new_image1.save('image1.jpg')
jpgfile2 = cStringIO.StringIO(urllib2.urlopen(image2).read())
new_image2 = get_merge_image(jpgfile2, location_list)
new_image2.save('image2.jpg')
for i in range(260):
for j in range(116):
if not is_similar(new_image1, new_image2, i, j):
return i # 返回缺口横坐标
七、极验验证码破解-总结
- 本教程介绍了破解极验验证码的关键技术点,包括Track获取和缺口距离计算
- 采用历史轨迹替代生成轨迹的方法,成功率接近100%,且复杂度不高
- 历史轨迹可单独存储并定期更新,防止被封
- 完整代码已开源在GitHub:https://github.com/FanhuaandLuomu/geetest_break
参考文献
- http://blog.csdn.net/paololiu/article/details/52514504
- https://zhuanlan.zhihu.com/p/22866110?refer=windev
- https://zhuanlan.zhihu.com/p/22404294
运行截图
[此处应添加相关运行截图]
注意事项
- 本教程仅供学习研究使用,请勿用于非法用途
- 验证码系统可能随时间更新,部分方法可能需要调整
- 建议定期更新Track列表以提高成功率