python + selenium 實現自動登錄網站


PS:寫了2個小時,忘記保存了,無奈只得重寫。心痛!

 

最近玩合天,必須每天登錄才有合氏幣拿,每次輸入用戶名和密碼太麻煩了;想破解某同學的QQ相冊,必須先達到登錄狀態才行啊。

 

環境:win7 64位 + python2.7 + selenium

 

一、安裝selenium

Selenium是一個WEB自動化測試工具,它運行時會直接實例化出一個瀏覽器,完全模擬用戶的操作,比如點擊鏈接、輸入表單,點擊按鈕提交等。所以我們使用它可以很方便的來登錄網站和QQ空間。

pip install selenium

二、安裝瀏覽器驅動Chromedriver

一開始測試報錯,並且Chrome瀏覽器提示:請停用以開發者模式運行的擴展程序,網址輸入框中只顯示:data;,如下圖:

 

這個問題是由於因為瀏覽器驅動Chromedriver和Chrome的版本不兼容導致無法通過driver在瀏覽器輸入網址而出現的,解決的辦法很簡單:查看你Chrome瀏覽器的版本(幫助 -> 關於Google Chrome(G)),下載對應版本的瀏覽器驅動就可以了。

下載對應Chromedriver后放到python目錄、或者system32下,就可以了。

附表:最新的Chromedriver與Chrome的版本對應關系表:

chromedriver版本 支持的Chrome版本
v2.35 v62-64
v2.34 v61-63
v2.33 v60-62
v2.32 v59-61
v2.31 v58-60
v2.30 v58-60
v2.29 v56-58
v2.28 v55-57
v2.27 v54-56
v2.26 v53-55
v2.25 v53-55
v2.24 v52-54
v2.23 v51-53
v2.22 v49-52
v2.21 v46-50
v2.20 v43-48
v2.19 v43-47
v2.18 v43-46
v2.17 v42-43
v2.13 v42-45
v2.15 v40-43
v2.14 v39-42
v2.13 v38-41
v2.12 v36-40
v2.11 v36-40
v2.10 v33-36
v2.9 v31-34
v2.8 v30-33
v2.7 v30-33
v2.6 v29-32
v2.5 v29-32
v2.4 v29-32

不同版本的Chromedriver都可以通過這里鏈接下載:

http://chromedriver.storage.googleapis.com/index.html

 

我下載的是chromedriver win32.zip

 

三、模擬登錄QQ空間

有個關鍵點得注意,在Web應用中經常會遇到frame/iframe 表單嵌套頁面的應用,QQ空間就是這樣的,由於WebDriver 只能在一個頁面上對元素識別與定位,對於frame/iframe 表單內嵌頁面上的元素無法直接定位。這時就需要通過switch_to.frame()方法將當前定位的主體切換為frame/iframe 表單的內嵌頁面中。

不廢話,直接上碼。

#-*- coding:utf8 -*-

# 導入selenium2中的webdriver庫
from selenium import webdriver

# 實例化出一個Firefox瀏覽器 
driver = webdriver.Chrome()

# 設置瀏覽器窗口的位置和大小
driver.set_window_position(20,40)
driver.set_window_size(1100,700)

# 打開一個頁面(QQ空間登錄頁)
driver.get("http://qzone.qq.com")

# 登錄表單在頁面的框架中中,所以要切換到該框架
driver.switch_to_frame('login_frame')

# 通過使用選擇器選擇到表單元素進行模擬輸入和點擊按鈕提交
driver.find_element_by_id('switcher_plogin').click()
driver.find_element_by_id('u').clear()
driver.find_element_by_id('u').send_keys('1650277972')
driver.find_element_by_id('p').clear()
driver.find_element_by_id('p').send_keys('*********')#password
driver.find_element_by_id('login_button').click()

# do something

# 退出窗口
#driver.quit()

 錄了一個gif,但是這個 gif 好慢啊,應該是錄制軟件的問題。

 

四、模擬登錄合天智匯(可以賺幣啦^_^)

通過使用選擇器選擇元素進行模擬輸入和點擊按鈕提交,不用切換frame/iframe了,要簡單一點,連form都沒有。
直接上碼
#-*- coding:utf8 -*-

# 導入selenium2中的webdriver庫
from selenium import webdriver

# 實例化出一個Firefox瀏覽器 
driver = webdriver.Chrome()

# 設置瀏覽器窗口的位置和大小
driver.set_window_position(20,40)
driver.set_window_size(1100,700)

# 打開一個頁面(合天登錄頁)
driver.get("http://www.hetianlab.com/loginLab.do")


# 通過使用選擇器選擇元素進行模擬輸入和點擊按鈕提交
driver.find_element_by_id('userEmail').clear()
driver.find_element_by_id('userEmail').send_keys('17690764155')
driver.find_element_by_id('passwordIn').clear()
driver.find_element_by_id('passwordIn').send_keys('**********')
driver.find_element_by_id('registButIn').click()

# do something

# 退出窗口
#driver.quit()
就不錄gif了,偷個懶。
 

THE END


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM