欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python Selenium Cookie 繞過驗證碼實現(xiàn)登錄示例代碼

 更新時間:2018年04月10日 14:49:04   作者:Blue·Sky  
這篇文章主要介紹了Python Selenium Cookie 繞過驗證碼實現(xiàn)登錄示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

之前介紹過通過cookie 繞過驗證碼實現(xiàn)登錄的方法。這里并不多余,會增加分析和另外一種方法實現(xiàn)登錄。

1、思路介紹 

1.1、直接看代碼,內(nèi)有詳細注釋說明

# FileName : Wm_Cookie_Login.py
# Author  : Adil
# DateTime : 2018/3/20 19:47
# SoftWare : PyCharm
from selenium import webdriver
import time
url = 'https://system.address'
def login():
  '''先定義一個正常登錄的方法,獲取登錄前和登錄后的cookie'''
  driver = webdriver.Chrome()
  driver.get(url)
  driver.maximize_window()
  cookieBefore = driver.get_cookies()
  # 打印登錄前的cookie
  print(cookieBefore)
  time.sleep(2)
  driver.find_element_by_id("new-username").clear()
  driver.find_element_by_id("new-username").send_keys("username")
  driver.implicitly_wait(5)
  driver.find_element_by_id("new-password").clear()
  driver.find_element_by_id("new-password").send_keys("password")
  driver.find_element_by_id('home-right-login').click()
  driver.implicitly_wait(5)
  # 加一個休眠,這樣得到的cookie 才是登錄后的cookie,否則可能打印的還是登錄前的cookie
  time.sleep(5)
  print("登錄后!")
  cookiesAfter = driver.get_cookies()
  print("cookiesAfter:")
  print(cookiesAfter)
  # cookie 存放到了list,其中是dict
  # 對比發(fā)現(xiàn)登錄后的cookie比登錄前多了4個dict。
  # 如下代碼分別是 1、4 、7、 8 
  len1 = len(cookiesAfter)
  print("len:%d" %len1)
  cookie1 = cookiesAfter[0]
  cookie2 = cookiesAfter[3]
  cookie3 = cookiesAfter[-2]
  cookie4 = cookiesAfter[-1]
  print("cookie1:%s" %cookie1)
  print("cookie2:%s" %cookie2)
  print("cookie3:%s" %cookie3)
  print("cookie4:%s" %cookie4)
  driver.quit()
  # 將獲取的這四個cookie作為參數(shù),傳遞給,使用cookie登錄的函數(shù),如下
  cookieLogin(cookie1,cookie2,cookie3,cookie4)
def cookieLogin(cookie1,cookie2,cookie3,cookie4):
  print("+++++++++++++++++++++++++")
  print("cookieLogin")
  print("cookie2:%s" % cookie2)
  print("cookie4:%s" % cookie4)
  driver = webdriver.Chrome()
  driver.maximize_window()
  # 清除一下cookie
  driver.delete_all_cookies()
  time.sleep(3)
  driver.get(url)
  # 打開瀏覽器后添加訪問地址后,添加cookie
  driver.add_cookie(cookie1)
  driver.add_cookie(cookie2)
  driver.add_cookie(cookie3)
  driver.add_cookie(cookie4)
  print("cookies")
  # 打印一下cookie,與上面正常登錄的cookie對比一下
  print(driver.get_cookies())
  time.sleep(5)
  # 刷新頁面,可以看到已經(jīng)是登錄狀態(tài)了,至此完成的使用cookie 的登錄。
  driver.refresh()
  time.sleep(5)
  driver.quit()

if __name__ == "__main__":
  login()

1.2、代碼介紹

如圖,可以查看到登錄前與登錄后的cookie,將其拷貝出來,進行對比

如圖,對比可以,登錄后多余四個cookie

查看多余cookie的位置,是list 的1、4、7、8g額元素,所以將其取出,作為參數(shù)給cookie登錄函數(shù)。

注意:該實例介紹的是無驗證碼登錄操作,但思路是一樣的。而這個demo ,僅僅是為了介紹一下使用cookie 登錄的思路,具體項目應(yīng)用中,這樣是很不方便的。

2、繞過驗證碼登錄實戰(zhàn)

接下來,介紹含有驗證碼的登錄,當(dāng)然cookie處理的思路與上介紹的基本一樣

這里增加了幾點內(nèi)容:

  a、先首次使用驗證碼正確登錄并保存登錄前、后的cookie,對比分析cookie,篩選有用的cookie

  b、將cookie 寫到y(tǒng)aml 文件中,方便后續(xù)使用cookie登錄時直接使用,而不需像上面介紹的那樣,每次都需要先正常登錄一樣。

  c、使用cookie登錄時,從yaml文件中讀取對應(yīng)cookie即可。注意:Yaml 文件操作詳見: Python Yaml 學(xué)習(xí) ,有詳細介紹yaml的讀寫操作。

注意:這里介紹的是先手動輸入驗證碼正確登錄后獲取cookie。實際應(yīng)用中可以使用其他方式獲取cookie

如:1、之前介紹的博客園登錄實例:Python - Cookie繞過驗證碼登錄  使用fiddler,查看cookie

  2、使用瀏覽器查看cookie 如,借助chrome 插件如下圖,導(dǎo)出cookie進行分析。

思路如上,代碼如下:

 2.1、正常登錄獲取有效cookie

# FileName : getLoginCookie.py
# Author  : Adil
# DateTime : 2018/3/20 21:43
# SoftWare : PyCharm
import yaml,time,os
from selenium import webdriver
url = 'https://system.address'
driver = webdriver.Chrome()
driver.get(url)
driver.maximize_window()
time.sleep(2)
driver.find_element_by_id("username").clear()
driver.find_element_by_id("username").send_keys("username")
driver.implicitly_wait(5)
driver.find_element_by_id("password").clear()
driver.find_element_by_id("password").send_keys("password")
print("請輸入驗證碼:")
# 手動輸入驗證碼
security_code = input()
time.sleep(1)
driver.find_element_by_id("security_code").send_keys(security_code)
time.sleep(1)
driver.find_element_by_id('sign_btn').click()
driver.implicitly_wait(5)
# 加一個休眠,這樣得到的cookie 才是登錄后的cookie,否則可能打印的還是登錄前的cookie
time.sleep(5)
cookiesAfter = driver.get_cookies()
len1 = len(cookiesAfter)
# 已經(jīng)知道需要第幾個cookie,這里需要第3個cookie,所以選擇cookie下標(biāo)為2
cookie1 = cookiesAfter[2]
# 獲取當(dāng)前文件所在路徑
fileNamePath = os.path.split(os.path.realpath(__file__))[0]
# 拼接config.yaml文件絕對路徑
yamlPath = os.path.join(fileNamePath,'config.yaml')
# 以覆蓋寫入打開文件
fw = open(yamlPath,'w',encoding='utf-8')
# 構(gòu)建數(shù)據(jù)
data = {"cookie1":cookie1}
# 裝載寫入yaml文件。
yaml.dump(data,fw)

driver.quit()

2.2、讀取cookie配置文件,使用cookie登錄系統(tǒng)

# FileName : stlUseCookieLogin.py
# Author  : Adil
# DateTime : 2018/3/20 21:48
# SoftWare : PyCharm
from selenium import webdriver
import time,yaml,os
url = 'https://system.address'
driver = webdriver.Chrome()
driver.maximize_window()
driver.delete_all_cookies()
time.sleep(3)
driver.get(url)

fileNamePath = os.path.split(os.path.realpath(__file__))[0]
yamlPath = os.path.join(fileNamePath,'config.yaml')
# 讀取yaml 文件
f = open(yamlPath,'r',encoding='utf-8')
cont = f.read()
conf = yaml.load(cont)
# 讀取cookie值
cookie1 = conf.get("cookie1")
# 添加cookie
driver.add_cookie(cookie1)
print("cookies")
print(driver.get_cookies())
time.sleep(5)
# 這里重新獲取地址,因為有些系統(tǒng),未登錄狀態(tài),鏈接會跳轉(zhuǎn),這里就是,登錄狀態(tài)后,才能正確打開指定網(wǎng)址,所以這里要再次指定網(wǎng)址。
driver.get(url)
# 刷新查看登錄狀態(tài)
driver.refresh()
time.sleep(5)
driver.quit()

以上應(yīng)該算是已經(jīng)詳細的介紹了使用cookie 登錄的思路了。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • python正則表達式對字符串的查找匹配

    python正則表達式對字符串的查找匹配

    正則表達式是一種文本模式,包括普通字符(例如,a 到 z 之間的字母)和特殊字符(稱為“元字符”),下面這篇文章主要給大家介紹了關(guān)于python正則表達式對字符串的查找匹配的相關(guān)資料,需要的朋友可以參考下
    2022-09-09
  • python中for語句簡單遍歷數(shù)據(jù)的方法

    python中for語句簡單遍歷數(shù)據(jù)的方法

    這篇文章主要介紹了python中for語句簡單遍歷數(shù)據(jù)的方法,以一個簡單實例形式分析了Python中for語句遍歷數(shù)據(jù)的技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-05-05
  • Python實現(xiàn)Excel和CSV之間的相互轉(zhuǎn)換

    Python實現(xiàn)Excel和CSV之間的相互轉(zhuǎn)換

    通過使用Python編程語言,編寫腳本來自動化Excel和CSV之間的轉(zhuǎn)換過程,可以批量處理大量文件,定期更新數(shù)據(jù),并集成轉(zhuǎn)換過程到自動化工作流程中,本文將介紹如何使用Python 實現(xiàn)Excel和CSV之間的相互轉(zhuǎn)換,需要的朋友可以參考下
    2024-03-03
  • Python將一個CSV文件里的數(shù)據(jù)追加到另一個CSV文件的方法

    Python將一個CSV文件里的數(shù)據(jù)追加到另一個CSV文件的方法

    今天小編就為大家分享一篇Python將一個CSV文件里的數(shù)據(jù)追加到另一個CSV文件的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • 如何使用python提取字符串的中英文(正則判斷)

    如何使用python提取字符串的中英文(正則判斷)

    這篇文章主要給大家介紹了關(guān)于如何使用python提取字符串中英文的相關(guān)資料,主要通過正則re中的sub函數(shù)、findall函數(shù)以及compile函數(shù)判斷來實現(xiàn),需要的朋友可以參考下
    2021-05-05
  • pytest?fixtures函數(shù)及測試函數(shù)的參數(shù)化解讀

    pytest?fixtures函數(shù)及測試函數(shù)的參數(shù)化解讀

    這篇文章主要介紹了pytest?fixtures函數(shù)及測試函數(shù)的參數(shù)化解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05
  • Python numpy數(shù)組轉(zhuǎn)置與軸變換

    Python numpy數(shù)組轉(zhuǎn)置與軸變換

    這篇文章主要介紹了Python numpy數(shù)組轉(zhuǎn)置與軸變換,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11
  • python中的Reportlab模塊詳解最新推薦

    python中的Reportlab模塊詳解最新推薦

    reportlab模塊是用python語言生成pdf文件的模塊,安裝方法也簡單,這篇文章主要介紹了python中的Reportlab模塊,需要的朋友可以參考下
    2023-05-05
  • Pandas數(shù)據(jù)類型之category的用法

    Pandas數(shù)據(jù)類型之category的用法

    Pandas中有一種特殊的數(shù)據(jù)類型叫做category.它表示的是一個類別,一般用在統(tǒng)計分類中,比如性別,血型,分類,級別等等.有點像java中的enum,今天給大家詳細講解一下category的用法,需要的朋友可以參考下
    2021-06-06
  • Python decimal模塊使用方法詳解

    Python decimal模塊使用方法詳解

    這篇文章主要介紹了Python decimal模塊使用方法詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-06-06

最新評論