Python 阿里云盾滑塊驗(yàn)證
?本文僅供學(xué)習(xí)交流使用,如侵立刪!
記一次阿里云盾滑塊驗(yàn)證分析并通過(guò)
操作環(huán)境
Python3.9
selenium、pyautogui
分析
最近在做中國(guó)庭審公開網(wǎng)數(shù)據(jù)分析的時(shí)候發(fā)現(xiàn)每次打開一個(gè)新的頁(yè)面都會(huì)觸發(fā)滑塊驗(yàn)證,就長(zhǎng)下面這個(gè)樣子

本以為使用selenium定位到滑塊元素拖動(dòng)即可,滿心歡喜開始寫代碼,測(cè)試后發(fā)現(xiàn)還是高興太早了~~~

貌似有點(diǎn)東西,原以為是因?yàn)闄z測(cè)到了selenium的原因,添加防檢測(cè)代碼
# 最新版本谷歌瀏覽器 繞過(guò)檢測(cè)
chrome_options.add_experimental_option('excludeSwitches', ['enable-automation'])
chrome_options.add_argument('--disable-blink-features=AutomationControlled')
后陸續(xù)嘗試過(guò),降低chrome版本,修改chromedriver驅(qū)動(dòng)文件,均不成功。 現(xiàn)在看來(lái)是真的有點(diǎn)東西?。?!正在一籌莫展時(shí),直到看到了這個(gè)

經(jīng)過(guò)分析網(wǎng)頁(yè)源碼發(fā)現(xiàn)原來(lái)是使用了阿里云盾的人機(jī)效驗(yàn),詳細(xì)介紹請(qǐng)參考官方產(chǎn)品文檔:阿里云驗(yàn)證碼產(chǎn)品文檔

分析了一波效驗(yàn)規(guī)則及原理,搞明白原理就好辦了
解決方案
1.使用selenium請(qǐng)求url,并觸發(fā)滑塊驗(yàn)證
2.使用pyautogui操控鼠標(biāo)滑動(dòng)
? ?def __init__(self):
? ? ? ?chrome_options = Options()
? ? ? ?# 最新版本谷歌瀏覽器 繞過(guò)檢測(cè)
? ? ? ?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) ?# 設(shè)置隱式等待時(shí)間
? ? ? ?self.driver.maximize_window()
? ?def run(self):
? ? ? ?"""程序入口"""
? ? ? ?print(f'打開首頁(yè):http://tingshen.court.gov.cn/preview')
? ? ? ?self.driver.get('http://tingshen.court.gov.cn/preview')
? ? ? ?# 拖動(dòng)到指定位置
? ? ? ?# 將鼠標(biāo)拖動(dòng)到指定的坐標(biāo);duration 的作用是設(shè)置移動(dòng)時(shí)間,所有的gui函數(shù)都有這個(gè)參數(shù),而且都是可選參數(shù)
? ? ? ?pyautogui.dragTo(1086, 340, duration=1)
? ? ? ?# 按方向拖動(dòng)
? ? ? ?# 向右拖動(dòng)100px,向下拖動(dòng)500px, 這個(gè)過(guò)程持續(xù) 1 秒鐘
? ? ? ?pyautogui.dragRel(260, 0, duration=0.5) ?# 第一個(gè)參數(shù)是左右移動(dòng)像素值,第二個(gè)是上下
效果

完美解決
資源下載
https://download.csdn.net/download/qq_38154948/85204671
本文僅供學(xué)習(xí)交流使用,如侵立刪!