selenium可以幫助我們驅(qū)動(dòng)瀏覽器打開網(wǎng)頁,并進(jìn)行一些特定的操作。但是現(xiàn)在越來越多的網(wǎng)站,也會(huì)識(shí)別selenium,并且限制了訪問條件,比如:必須登錄。
在selenium中,get_cookies()方法可以幫助我們獲取cookie。這里以知乎為例演示一下使用。
這里用到的瀏覽器驅(qū)動(dòng)對(duì)象為?undetected_chromedriver 模塊生成,他的作用可以讓selenium繞過檢測(cè)。詳情課看我另一條筆記
?基本操作步驟:
一、
1、使用selenium驅(qū)動(dòng)打開網(wǎng)頁,設(shè)置一定的等待時(shí)長(zhǎng),方便我們手動(dòng)輸入賬戶信息
2、當(dāng)我們手動(dòng)登錄成功之后,瀏覽器中便會(huì)生成我們的cookie信息
3、調(diào)用selenium方法獲取cookie,并保存到本地,這樣我們就可以直接讀取本地的cookie值進(jìn)行登陸即可。不需要每打開一次這個(gè)網(wǎng)頁進(jìn)行登陸
二、攜帶cookie進(jìn)行登陸
一、獲取cookie并保存
# 相關(guān)模塊導(dǎo)入
import time
from selenium import webdriver
import json
def save_cookie():
"""獲取cookie并保存"""
# 設(shè)置20秒的等待時(shí)長(zhǎng),以便手動(dòng)進(jìn)行登陸
time.sleep(20)
# 使用驅(qū)動(dòng)對(duì)象獲取cookie,并保存在本地
with open("cookies.json", "w") as f:
json.dump(driver.get_cookies(), f)
if __name__ == '__main__':
# selenium 4版本必須要設(shè)置瀏覽器選項(xiàng),否則會(huì)閃退
option = webdriver.EdgeOptions()
option.add_experimental_option("detach", True)
# 實(shí)例化瀏覽器驅(qū)動(dòng)對(duì)象,并將配置瀏覽器選項(xiàng)
driver = webdriver.Edge(options=option)
url = "https://www.zhihu.com/"
driver.get(url=url)
save_cookie()
可以發(fā)現(xiàn)已經(jīng)生成了一個(gè)cookies.json的文件
二、攜帶本地的cookies訪問網(wǎng)頁
需要注意的是,這個(gè)cookie我們是需要修改的,如何確定要修改的參數(shù)?
可以看到下面,我們獲取下來的cookie是保存在列表當(dāng)中的多個(gè)字典,每個(gè)字典都是一個(gè)cookie。所以我們需要變量列表,以字典的形式向?yàn)g覽器中添加。
添加的格式按照一下格式就好。文章來源:http://www.zghlxwxcb.cn/news/detail-850817.html
"expiry"字段需要?jiǎng)h除,否則會(huì)報(bào)錯(cuò),他代表的是cookie的有效時(shí)長(zhǎng)
文章來源地址http://www.zghlxwxcb.cn/news/detail-850817.html
def cookie_login():
with open("cookies.json", "r", encoding="utf-8") as f:
listCookies = json.load(f)
for cookie in listCookies:
# print(cookie)
cookie_dict = {
"domain": cookie.get("domain"),
"name": cookie.get("name"),
"value": cookie.get("value"),
# "expiry": "",
"path": cookie.get("path"),
"httpOnly": False,
"sameSite": "Lax",
"secure": False,
}
driver.add_cookie(cookie_dict)
driver.refresh()
if __name__ == '__main__':
driver = uc.Chrome()
url = "https://www.zhihu.com/"
driver.get(url=url)
# save_cookie()
# 清除已有cookie
driver.delete_all_cookies()
time.sleep(2)
cookie_login()
time.sleep(3)
三、登錄成功
到了這里,關(guān)于使用selenium驅(qū)動(dòng)瀏覽器時(shí)攜帶cookie實(shí)現(xiàn)模擬登陸的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!