python2.7+selenium2實現(xiàn)淘寶滑塊自動認(rèn)證功能
本文為大家分享了python2.7+selenium2實現(xiàn)淘寶滑塊自動認(rèn)證的具體代碼,供大家參考,具體內(nèi)容如下
1.編譯環(huán)境
操作系統(tǒng):win7;語言:python2.7+selenium2;ide:pycharm;瀏覽器:IE10,chrome
2.1意外開始
今天登錄淘寶時候發(fā)現(xiàn)吧密碼搞忘了,選擇找回密碼時淘寶居然加了滑塊認(rèn)證。
恰巧自己也在學(xué)習(xí)selenium,就想試一試能不能實現(xiàn)自動拖動滑塊。
2.2 度娘查找
由于自己沒多少思路,第一選擇就是問度娘,終于找到一篇文章,該文章使用C#實現(xiàn)了該功能,并提到需要定位滑塊元素在網(wǎng)頁和桌面的坐標(biāo),而這個功能直接可以用selenium中的查找元素接口搞定,那么剩下最后一個問題就是如何得知滑塊的位移量。(原諒我忘記該文章的名字了)
2.3 開始試驗
大家在手動操作滑塊的時候會發(fā)現(xiàn)如果滑塊位移不夠,它要自動還原就不能觸發(fā)認(rèn)證成功環(huán)節(jié),所以我用一個笨方法先手動操作看看。打開瀏覽器按F12,得到代碼如下:
然后拖動滑塊位移,發(fā)現(xiàn)滑塊元素的style一直在變化如圖:
現(xiàn)在大概清楚右位移量為300px,OK開始寫代碼,經(jīng)過很多次試驗確定滑塊移動后有三種情況:
1無響應(yīng):請按住滑塊,拖到到最右邊;
2失敗:哎呀,加載失敗了,請點擊刷新頁面
3成功:請點擊圖中xx字,請在下方輸入xx字
解決思路:無響應(yīng)時,需要重復(fù)拖動滑塊,直到成功為止;失敗了,需要自動點擊刷新按鈕,使滑塊回到無響應(yīng)狀態(tài);成功了,暫時是直接退出瀏覽器,驗證碼識別還在研究中,以后補齊。
2.4 完整代碼
PS:粘貼上去的代碼,我不知道怎么對齊,如果大家直接復(fù)制運行,可能會報錯,請自動修改。
# encoding=utf-8 from selenium import webdriver from selenium.webdriver.common.action_chains import ActionChains import time #使用谷歌瀏覽器,方便查看效果,如果追求速度可以用phantomJS driver=webdriver.Chrome() #調(diào)整最大窗口,否則某些元素?zé)o法顯示 driver.maximize_window() #使用淘寶找回密碼界面做測試 driver.get('https://passport.taobao.com/ac/password_find.htm?spm=a2107.1.0.0.phBxhD&from_site=0') time.sleep(5)#等待滑動模塊和其他JS文件加載完畢! while True: try: #定位滑塊元素 source=driver.find_element_by_xpath("http://*[@id='nc_1_n1z']") #定義鼠標(biāo)拖放動作 ActionChains(driver).drag_and_drop_by_offset(source,400,0).perform() #等待JS認(rèn)證運行,如果不等待容易報錯 time.sleep(2) #查看是否認(rèn)證成功,獲取text值 text=driver.find_element_by_xpath("http://div[@id='nc_1__scale_text']/span") #目前只碰到3種情況:成功(請在在下方輸入驗證碼,請點擊圖);無響應(yīng)(請按住滑塊拖動);失?。òパ剑×?,請刷新) if text.text.startswith(u'請在下方'): print('成功滑動') break if text.text.startswith(u'請點擊'): print('成功滑動') break if text.text.startswith(u'請按住'): continue except Exception as e: #這里定位失敗后的刷新按鈕,重新加載滑塊模塊 driver.find_element_by_xpath("http://div[@id='havana_nco']/div/span/a").click() print(e) #退出瀏覽器,如果瀏覽器打開多個窗口,可以使用driver.close()關(guān)閉當(dāng)前窗口而不是關(guān)閉瀏覽器 driver.quit()
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- python實現(xiàn)身份證實名認(rèn)證的方法實例
- 微信小程序python用戶認(rèn)證的實現(xiàn)
- Python使用LDAP做用戶認(rèn)證的方法
- python連接mongodb密碼認(rèn)證實例
- python pycurl驗證basic和digest認(rèn)證的方法
- Python3中使用urllib的方法詳解(header,代理,超時,認(rèn)證,異常處理)
- 將Python的Django框架與認(rèn)證系統(tǒng)整合的方法
- Python使用htpasswd實現(xiàn)基本認(rèn)證授權(quán)的例子
- Python如何實現(xiàn)后端自定義認(rèn)證并實現(xiàn)多條件登陸
相關(guān)文章
Python的GUI編程之Pack、Place、Grid的區(qū)別說明
這篇文章主要介紹了Python的GUI編程之Pack、Place、Grid的區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-06-06python+opencv實現(xiàn)動態(tài)物體識別
這篇文章主要為大家詳細(xì)介紹了python+opencv實現(xiàn)動態(tài)物體識別,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-01-01Python爬蟲實例——爬取美團(tuán)美食數(shù)據(jù)
這篇文章主要介紹了Python爬蟲如何爬取美團(tuán)美食數(shù)據(jù),文中講解非常詳細(xì),代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-07-07Pycharm 創(chuàng)建 Django admin 用戶名和密碼的實例
今天小編就為大家分享一篇Pycharm 創(chuàng)建 Django admin 用戶名和密碼的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-05-05PyQt5 designer 頁面點擊按鈕跳轉(zhuǎn)頁面實現(xiàn)
本文主要介紹了PyQt5 designer 頁面點擊按鈕跳轉(zhuǎn)頁面實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-01-01python中列表添加元素的幾種方式(+、append()、extend())
本文主要介紹了python中列表添加元素的幾種方式(+、append()、extend()),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08python代碼實現(xiàn)邏輯回歸logistic原理
這篇文章主要介紹了python代碼實現(xiàn)邏輯回歸logistic原理,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08