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

python使用Selenium和cookie繞過驗證碼實現(xiàn)登錄示例代碼

 更新時間:2025年01月25日 10:41:28   作者:anxiaolili  
文章介紹了如何使用Selenium獲取登錄過程中的cookie信息,并通過抓包工具獲取cookie,通過示例展示了如何在Dsmall和CRM系統(tǒng)中實現(xiàn)免登陸操作,總結(jié)了兩種方法:一種是在獲取到cookie后直接添加到當前會話中,另一種是將cookie存儲到本地文件并在后續(xù)請求中使用

利用selenium中獲取登陸過程所涉及的cookie信息:

方法

難易程度

通過抓包工具分析出cookie來,然后將cookie添加到對應(yīng)的頁面中去

有技術(shù)要求,簡單

先運行一次通過驅(qū)動器對象中的get_cookies方法獲取當前項目的所有cookie

麻,準確性高

下面的實例主要以dsmall和crm系統(tǒng)為例。

第一種方式

http://192.168.141.100/index.php/home/login/login.html

首先抓取dsmall登陸的相關(guān)數(shù)據(jù)信息進行分析,下面是dsmall的首頁需要輸入驗證碼才能夠登陸成功

python接口測試:1.5 使用cookie完成驗證碼跳過登陸操作_php

使用fiddler進行抓取dsmall的登陸請求響應(yīng)數(shù)據(jù),具體分析得到下面結(jié)果:

python接口測試:1.5 使用cookie完成驗證碼跳過登陸操作_php_02

并且具體還可以得知該cookie是基于session的狀態(tài)上存在的,也就是只要建立好會話,后期實際只要把cookie信息添加進入,即可獲取到會話狀態(tài)了,所以具體實現(xiàn)代碼如下:

# cookieTest.py
# 使用cookie完成免登陸的操作

from selenium import webdriver


class DsmallCookie(object):
    def __init__(self):
        self.driver = webdriver.Chrome()

        #與服務(wù)器建立連接
        self.driver.get("http://192.168.141.100/index.php/home/member/index.html")

        # 將cookie所對應(yīng)的值通過add_cookie()進行添加
        self.driver.add_cookie({"name": "PHPSESSID", "value": "ejgbevl453upavmjd42nr8bq9v"})

        # 刷新頁面或重新發(fā)送一次請求都可以完成登陸操作
        # 刷新頁面
        self.driver.refresh()

        # 重新發(fā)送一次請求
        self.driver.get("http://192.168.141.100/index.php/home/member/index.html")


if __name__ == '__main__':
    dsmall = DsmallCookie()

注意:add_cookie中傳入的參數(shù)必須是字典對象,可以通過分析源代碼得知具體傳入的類型。

第二種方式

 可以先使用selenium完成一次登陸操作,然后通過驅(qū)動器調(diào)用get_cookies方法將獲取的cookie信息存儲到對應(yīng)的本地文件中,最后后續(xù)調(diào)用cookie信息即可。以CRM項目為實例。

# Get_Cookie.py

from selenium import webdriver
import json
class GetCookie(object):
    def __init__(self):
        self.driver=webdriver.Chrome()
        self.driver.get("http://192.168.141.100/index.php/login")


    def login(self):
        self.driver.find_element_by_name("username").send_keys("admin")
        self.driver.find_element_by_name("userpwd").send_keys("admin888")
        self.driver.find_element_by_class_name("logindo").click()

    def get_cookie(self):
        with open("cookie.json",mode="w") as fp:
            for value in self.driver.get_cookies():
                json.dump(value,fp)

if __name__ == '__main__':
    get=GetCookie()
    #get.login()
    #get.get_cookie()

將登陸獲取到的cookie信息存儲到j(luò)son格式文件中。

然后不用輸入用戶名、密碼即可獲取登錄態(tài),

# Crm_NoLogin.py

#通過cookie完成登陸操作,直接調(diào)用已經(jīng)保存好的cookie文件中的cookie內(nèi)容
from selenium import webdriver
import json
class CrmNoLogin(object):
    def __init__(self):
        self.driver=webdriver.Chrome()
        self.driver.get("http://123.57.71.195:7878/")
        #將之前保存的cookie進行添加到當前的會話中
        self.driver.add_cookie(self.read_cookie())
        #添加完后,則再次訪問獲取此url地址的話則可以直接處于登陸狀態(tài),此處注意,訪問的url必須是登陸成功后的url地址
        self.driver.get("http://123.57.71.195:7878/")
    
    #聲明讀cookie的方法
    def  read_cookie(self):
        with open("cookie.json") as fp:
            return json.load(fp)


if __name__ == '__main__':
    crm=CrmNoLogin()

注意:此處的crm項目并不是基于session會話鏈接的,所以第二次發(fā)送請求時不能夠刷新操作,否則無法處于登陸態(tài),必須重新發(fā)送一次登陸成功后的請求才能夠處于登陸狀態(tài)。這里就需要大家注意:刷新和重新發(fā)送請求的區(qū)別了。

總結(jié)

實踐:大家可以通過以上方法完成OA項目的免登陸操作哦,OA項目的訪問地址:http://123.57.71.195:9999/login.html,這是我給大家部署在阿里云上的項目,可以練習練習下哦~~

說明:

1.如果第一次訪問獲取的cookie存在多個字典的形式的話,則每個字典都需要保存到cookie文件中,然后進行讀取的時候需要遍歷每個字典,并使用add_cookie將每個字典進行添加對應(yīng)的cookie信息   

2.refresh和重新發(fā)送請求的區(qū)別:刷新就是基于現(xiàn)有的頁面基礎(chǔ)上進行檢查當前頁面是否存更新的內(nèi)容;地址欄中的回車又分兩種情況:一種就是請求的url在瀏覽器中的緩存未過期;另一種就是已過期;建議后期如果是使用cookie完成免登陸狀態(tài)的話,大家如果不懂什么時候使用refresh的話,則全部實用重新發(fā)送請求;

到此這篇關(guān)于python使用cookie繞過驗證碼實現(xiàn)登錄示例代碼的文章就介紹到這了,更多相關(guān)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論