Selenium-免登錄的實現


場景:

  經常會遇到登錄需要驗證碼這樣類似的情況

解決方案:

  1.萬能驗證碼

  2.利用cookies來實現,問開發哪個cookies值是登錄后需要的,把這個值帶上即可

  3.利用火狐瀏覽器的profile文件來實現(首先需要手工登錄一次,且勾選記住信息)

  4.手工輸入(需要輸入的地方sleep一會)

實例一:

  利用cookies登錄百度帳號

    1\獲取到cookies,取得登錄的cookie

      cookies = driver.get_cookies()

    2\添加cookies,登錄帳號

      driver.add_cookie(cookie值)

 

獲取到cookies值

#! /usr/bin/env python
#coding=utf-8

from selenium import webdriver
import time

driver = webdriver.Firefox()
driver.get("https://www.baidu.com/")
time.sleep(3)

driver.find_element("linkText","登錄").click()
driver.find_element("name","userName").send_keys("13560459046")
driver.find_element("name","password").send_keys("xr199122")
time.sleep(20)
#手動輸入驗證碼
driver.find_element("id","TANGRAM__PSP_10__submit").click()
time.sleep(5)

#獲取cookies值
cookies = driver.get_cookies()
print(cookies)
driver.quit()

#刪除cookies值
#driver.delete_all_cookies()

結果:

  

[
{'value': '828211617093E523BC5EDFE05AB3EA39:FG=1', 'expiry': 3651917680, 'path': '/', 'name': 'BAIDUID', 'httpOnly': False, 'secure': False, 'domain': '.baidu.com'},
{'value': '828211617093E523BC5EDFE05AB3EA39', 'expiry': 3651917680, 'path': '/', 'name': 'BIDUPSID', 'httpOnly': False, 'secure': False, 'domain': '.baidu.com'},
{'value': '1504433526', 'expiry': 3651917680, 'path': '/', 'name': 'PSTM', 'httpOnly': False, 'secure': False, 'domain': '.baidu.com'},
{'value': 'B490B5EBF6F3CD402E515D22BCDA1598', 'expiry': 1504520438, 'path': '/', 'name': 'BDORZ', 'httpOnly': False, 'secure': False, 'domain': '.baidu.com'},
{'value': 'eee17f0ccd81747c87f3b9e5f43712eb', 'expiry': 2556057600, 'path': '/', 'name': 'FP_UID', 'httpOnly': False, 'secure': False, 'domain': '.baidu.com'},
{'value': 'N2YTVzQX5aTWl4THpFWGhOMFp4VDk2T1MyQ0Z5bWRwRDMtcnhSN0lkQ1pZdE5aSVFBQUFBJCQAAAAAAAAAAAEAAAC~pSxhu-HF3LXE0NwyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJnVq1mZ1atZdk', 'expiry': 1763634068, 'path': '/', 'name': 'BDUSS', 'httpOnly': True, 'secure': False, 'domain': '.baidu.com'},
{'value': '1', 'expiry': None, 'path': '/', 'name': 'BD_HOME', 'httpOnly': False, 'secure': False, 'domain': 'www.baidu.com'},
{'value': '1439_12897_21089_22160', 'expiry': None, 'path': '/', 'name': 'H_PS_PSSID', 'httpOnly': False, 'secure': False, 'domain': '.baidu.com'},
{'value': '13314352', 'expiry': 1505298070, 'path': '/', 'name': 'BD_UPN', 'httpOnly': False, 'secure': False, 'domain': 'www.baidu.com'},
{'value': '1', 'expiry': 2450514070, 'path': '/', 'name': 'sugstore', 'httpOnly': False, 'secure': False, 'domain': '.www.baidu.com'}
]

剩下的如何取到登錄的cookie,需要自己去嘗試,如果是開發中,就去問開發就行,更方便

利用cookie值,登錄百度帳號

#! /usr/bin/env python
#coding=utf-8
from selenium import webdriver
import time

'''
利用cookies值登錄百度
{'value': 'N2YTVzQX5aTWl4THpFWGhOMFp4VDk2T1MyQ0Z5bWRwRDMtcnhSN0lkQ1pZdE5aSVFBQUFBJCQAAAAAAAAAAAEAAAC~pSxhu-HF3LXE0NwyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJnVq1mZ1atZdk', 
'expiry': 1763634068, 
'path': '/', 
'name': 'BDUSS', 
'httpOnly': True, 
'secure': False, 
'domain': '.baidu.com'}
'''
driver = webdriver.Firefox()
driver.get("https://www.baidu.com/")
time.sleep(3)

#設置cookies值,基本格式
c1 = {'value': 'N2YTVzQX5aTWl4THpFWGhOMFp4VDk2T1MyQ0Z5bWRwRDMtcnhSN0lkQ1pZdE5aSVFBQUFBJCQAAAAAAAAAAAEAAAC~pSxhu-HF3LXE0NwyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJnVq1mZ1atZdk', 
    'expiry': 1763634068, 
    'path': '/', 
    'name': 'BDUSS', 
    'httpOnly': True, 
    'secure': False, 
    'domain': '.baidu.com'}

#添加cookies
driver.add_cookie(c1)
time.sleep(3)

#刷新之后觀察是否已經登錄成功
driver.refresh()
time.sleep(5)

driver.quit()

結果:

  

 

 

 

 

實例二:利用火狐瀏覽器的profile文件來實現(首先需要手工登錄一次,且勾選記住信息),登錄百度帳號

#! /usr/bin/env python
#coding=utf-8
from selenium import webdriver
import time

'''
自己的火狐瀏覽器的profile文件路徑查看方法
火狐瀏覽器-幫助-故障排除信息-顯示文件夾
必須手工登錄一次,並記住密碼之后再運行此代碼才可以
'''

profile_ff = "C:/Users/Administrator/AppData/Roaming/Mozilla/Firefox/Profiles/2e4p97lg.default"

fp = webdriver.FirefoxProfile(profile_ff)

driver = webdriver.Firefox(fp)

driver.get("https://www.baidu.com/")
time.sleep(5)
driver.quit()

也可以實現免登錄


免責聲明!

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



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