trying to crack geetest
行为式验证技术是继传统码式验证技术后的新一代验证安全技术。
作为一个革命性的验证安全技术,行为式验证技术对“验证安全”进行了全新的定义与颠覆。新一代行为式验证技术的安全理论构建在多门学科的理论基础之上,具有多重复合且相互异维的高强度防御体系。行为式验证技术的核心思想是利用用户的“行为特征”来做验证安全判别。整个验证框架采用高效的“行为沙盒”主动框架,这个框架会引导用户在“行为沙盒”内产生特定的行为数据,利用“多重复合行为判别”算法从特指、视觉、思考等多重行为信息中辨识出生物个体的特征,从而准确快速的提供验证结果。
本项目作为学习项目,从技术实现上逆向分析行为式验证技术
- 进入对应省份搜索页面,并等待输入框与搜索按钮加载完成
- 填入搜索企业,点击按钮,等待滑块元素加载完成
- 截图,拖动,再截图
- 计算需要滑动的距离
- 生成滑动轨迹,并进行模拟滑动
- 检测验证结果,如不成功,点击刷新按钮重新从3开始
- 等待元素出现不要使用sleep,有wait显示隐示等待,再等待出现之后,最后最好再等待1,2秒(我在这里坑过)参考selenium文档
- 使用self.driver.maximize_window() 可以避免各浏览器的像素偏差
- 滑块轨迹比较难,使用phantomjs调用move_to_element_with_offset之后,还需要click_and_hold,否则不会成功拖动(大坑)
- 在拖动的时候,除了x的坐标需要移动,y的值也要有变动,不然会被怪物吃掉
- 直接调用 drag_and_drop_by_offset 也会被怪物吃掉
- 两张截图可以使用 StringIO 做为保存,省去了保存了文件图片到本地
生成更准确性的滑块运动轨迹(考虑机器学习)