亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

方法

難易程度

通過(guò)抓包工具分析出cookie來(lái),然后將cookie添加到對(duì)應(yīng)的頁(yè)面中去

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

先運(yùn)行一次通過(guò)驅(qū)動(dòng)器對(duì)象中的get_cookies方法獲取當(dāng)前項(xiàng)目的所有cookie

麻,準(zhǔn)確性高

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

第一種方式

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

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

python接口測(cè)試:1.5 使用cookie完成驗(yàn)證碼跳過(guò)登陸操作_php

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

python接口測(cè)試:1.5 使用cookie完成驗(yàn)證碼跳過(guò)登陸操作_php_02

并且具體還可以得知該cookie是基于session的狀態(tài)上存在的,也就是只要建立好會(huì)話,后期實(shí)際只要把cookie信息添加進(jìn)入,即可獲取到會(huì)話狀態(tài)了,所以具體實(shí)現(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所對(duì)應(yīng)的值通過(guò)add_cookie()進(jìn)行添加
        self.driver.add_cookie({"name": "PHPSESSID", "value": "ejgbevl453upavmjd42nr8bq9v"})

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

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


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

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

第二種方式

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

# 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信息存儲(chǔ)到j(luò)son格式文件中。

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

# Crm_NoLogin.py

#通過(guò)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進(jìn)行添加到當(dāng)前的會(huì)話中
        self.driver.add_cookie(self.read_cookie())
        #添加完后,則再次訪問(wèn)獲取此url地址的話則可以直接處于登陸狀態(tài),此處注意,訪問(wèn)的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項(xiàng)目并不是基于session會(huì)話鏈接的,所以第二次發(fā)送請(qǐng)求時(shí)不能夠刷新操作,否則無(wú)法處于登陸態(tài),必須重新發(fā)送一次登陸成功后的請(qǐng)求才能夠處于登陸狀態(tài)。這里就需要大家注意:刷新和重新發(fā)送請(qǐng)求的區(qū)別了。

總結(jié)

實(shí)踐:大家可以通過(guò)以上方法完成OA項(xiàng)目的免登陸操作哦,OA項(xiàng)目的訪問(wèn)地址:http://123.57.71.195:9999/login.html,這是我給大家部署在阿里云上的項(xiàng)目,可以練習(xí)練習(xí)下哦~~

說(shuō)明:

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

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

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

相關(guān)文章

最新評(píng)論