首页
论坛
课程
招聘
[原创]Python 阿里云盾滑块验证
2022-4-23 02:29 10815

[原创]Python 阿里云盾滑块验证

2022-4-23 02:29
10815

<table><tr><td bgcolor=orange>本文仅供学习交流使用,如侵立删!</td></tr></table>


记一次阿里云盾滑块验证分析并通过

操作环境

  • win10 、 mac
  • Python3.9
  • selenium、pyautogui

分析

最近在做中国庭审公开网数据分析的时候发现每次打开一个新的页面都会触发滑块验证,就长下面这个样子
在这里插入图片描述
本以为使用selenium定位到滑块元素拖动即可,满心欢喜开始写代码,测试后发现还是高兴太早了~~~

 

请添加图片描述
貌似有点东西,原以为是因为检测到了selenium的原因,添加防检测代码

1
2
3
# 最新版本谷歌浏览器 绕过检测
chrome_options.add_experimental_option('excludeSwitches', ['enable-automation'])
chrome_options.add_argument('--disable-blink-features=AutomationControlled')

后陆续尝试过,降低chrome版本,修改chromedriver驱动文件,均不成功。
现在看来是真的有点东西!!!正在一筹莫展时,直到看到了这个
在这里插入图片描述
经过分析网页源码发现原来是使用了阿里云盾的人机效验,详细介绍请参考官方产品文档:阿里云验证码产品文档
在这里插入图片描述
分析了一波效验规则及原理,搞明白原理就好办了

解决方案

  • 1.使用selenium请求url,并触发滑块验证
  • 2.使用pyautogui操控鼠标滑动
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
def __init__(self):
    chrome_options = Options()
    # 最新版本谷歌浏览器 绕过检测
    chrome_options.add_experimental_option('excludeSwitches', ['enable-automation'])
    chrome_options.add_argument('--disable-blink-features=AutomationControlled')
    self.driver = webdriver.Chrome('./config/chromedriver.exe', options=chrome_options)
    self.wait = WebDriverWait(self.driver, 10, 1# 设置隐式等待时间
    self.driver.maximize_window()
 
def run(self):
    """程序入口"""
    print(f'打开首页:http://tingshen.court.gov.cn/preview')
    self.driver.get('http://tingshen.court.gov.cn/preview')
 
    # 拖动到指定位置
    # 将鼠标拖动到指定的坐标;duration 的作用是设置移动时间,所有的gui函数都有这个参数,而且都是可选参数
    pyautogui.dragTo(1086, 340, duration=1)
 
    # 按方向拖动
    # 向右拖动100px,向下拖动500px, 这个过程持续 1 秒钟
    pyautogui.dragRel(260, 0, duration=0.5# 第一个参数是左右移动像素值,第二个是上下

效果

请添加图片描述
完美解决


资源下载

https://download.csdn.net/download/qq_38154948/85204671


 

<table><tr><td bgcolor=orange>本文仅供学习交流使用,如侵立删!</td></tr></table>



【看雪培训】《Adroid高级研修班》2022年夏季班招生中!

最后于 2022-4-26 13:33 被拉灯的小手编辑 ,原因:
收藏
点赞2
打赏
分享
最新回复 (15)
雪    币: 18
活跃值: 活跃值 (631)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
crackwiki 活跃值 2022-4-26 09:38
2
0
这么简单就破解了?不需要随机化移动速度和路径吗?或者更进一步训练一个神经网络对抗吗?
雪    币: 772
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
拉灯的小手 活跃值 2022-4-26 13:32
3
0
谈不上破解,可以仔细阅读下阿里云盾的触发机制,这种只是触发了验证后的补救措施,真正检测不到不触发验证才是大成
雪    币: 5266
活跃值: 活跃值 (2329)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
尐进 活跃值 2022-4-27 15:55
4
0
阿里js里面判断了鼠标事件是否真实 如果是模拟的消息点击会被识别到  想要不触发可以通过中间人劫持技术修改js中判断真实状态的代码 伪造鼠标消息为真即可 就不会触发滑块机制 总体来说阿里的检查不复杂 整体也很容易处理
雪    币: 772
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
拉灯的小手 活跃值 2022-4-28 00:43
5
0
尐进 阿里js里面判断了鼠标事件是否真实 如果是模拟的消息点击会被识别到  想要不触发可以通过中间人劫持技术修改js中判断真实状态的代码 伪造鼠标消息为真即可 就不会触发滑块机制 总体来说阿里的检查不复杂  ...

大佬能否详细指点一下

最后于 2022-4-28 03:03 被拉灯的小手编辑 ,原因:
雪    币: 391
活跃值: 活跃值 (99)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
liyqxtu 活跃值 2022-4-28 09:01
6
0
腻害呀,向大佬学习
雪    币: 10
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
mb_dttyhgbp 活跃值 2022-4-29 15:05
7
0
tb也是这个滑块不
雪    币: 772
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
拉灯的小手 活跃值 2022-4-29 15:37
8
0
mb_dttyhgbp tb也是这个滑块不
具体可以看一下调用的js文件,如果是调用的ali云盾就是这个
雪    币: 772
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
拉灯的小手 活跃值 2022-4-29 15:53
9
0
liyqxtu 腻害呀,向大佬学习[em_63]
相互学习
雪    币: 5266
活跃值: 活跃值 (2329)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
尐进 活跃值 2022-4-29 16:30
10
0
拉灯的小手 尐进 阿里js里面判断了鼠标事件是否真实 如果是模拟的消息点击会被识别到 &nbsp;想要不触发可以通过中间人劫持技术修改js中判断真实状 ...
通过中间人劫持将js内容修改 对他的函数每个函数都加入cosole.log进行打印 然后对比手动输入和自动化时的流程 就能定位出不一样的地方 然后对其不一样的地方进行分析 查看函数流程 就能找到其判断鼠标事件的地方 然后修改js代码将其判断的逻辑修改 这样模拟事件也会走正确流程 阿里系列基本都是同一款 所以做一个也就通杀了整个系列
雪    币: 5266
活跃值: 活跃值 (2329)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
尐进 活跃值 2022-4-29 16:31
11
0
拉灯的小手 尐进 阿里js里面判断了鼠标事件是否真实 如果是模拟的消息点击会被识别到 &nbsp;想要不触发可以通过中间人劫持技术修改js中判断真实状 ...
当然别的环境也要先处理好 否则轮不到这个就已经出滑块了
雪    币: 772
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
拉灯的小手 活跃值 2022-4-29 17:02
12
0
尐进 当然别的环境也要先处理好 否则轮不到这个就已经出滑块了
好的,大佬学习了
雪    币: 175
活跃值: 活跃值 (33)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
komany 活跃值 2022-5-9 21:24
13
0
居然没检测selenium,让你逃过一劫
雪    币: 772
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
拉灯的小手 活跃值 2022-5-10 00:45
14
0
komany 居然没检测selenium,让你逃过一劫
检测了,不可能有侥幸的,绕过了检测
雪    币: 2
活跃值: 活跃值 (37)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
meixin 活跃值 2022-5-20 10:48
15
0
   # 最新版本谷歌浏览器 绕过检测
    chrome_options.add_experimental_option('excludeSwitches', ['enable-automation'])
    chrome_options.add_argument('--disable-blink-features=AutomationControlled')

光这两行代码应该过不了检测,我用了 selenium 手动滑动也不行
雪    币: 772
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
拉灯的小手 活跃值 2022-5-20 13:17
16
0
meixin # 最新版本谷歌浏览器 绕过检测 chrome_options.add_experimental_option('excludeSwitches', ['enable-automati ...
最新版可以的,实测过,关键点不是这两行代码。
游客
登录 | 注册 方可回帖
返回