网站编辑 seo,贵州省建设厅三类人员报名网站,网站优化的方法,南宁 建网站在使用Selenium进行Web自动化时#xff0c;添加网站Cookies是实现免登录的一种高效方法。通过模拟浏览器行为#xff0c;我们可以将已登录状态的Cookies存储起来#xff0c;并在下次自动化测试或爬虫任务中直接加载这些Cookies#xff0c;从而跳过登录步骤。
Cookies简介 … 在使用Selenium进行Web自动化时添加网站Cookies是实现免登录的一种高效方法。通过模拟浏览器行为我们可以将已登录状态的Cookies存储起来并在下次自动化测试或爬虫任务中直接加载这些Cookies从而跳过登录步骤。
Cookies简介 Cookies是存储在用户本地终端上的一小块数据它会在浏览器向服务器发起请求时被携带并发送到服务器上。这些Cookies通常包含了用户的会话信息比如登录状态、用户偏好设置等。简而言之,Cookie就像是临时身份证一样,每次浏览器请求时都会携带它以便服务器识别用户身份或保持会话状态,这也是为什么我们在一个网页内登录后关闭掉网页再次进入依然能够保持登录状态的原因。 不过,为了安全起见网站开发者通常会对Cookies设置过期时间并且在过期后会被浏览器自动删除。此外Cookies的存储位置也有限制通常只能在设置它们的域名下访问这在一定程度上保护了用户的隐私安全。
这里以CSDN为例 打开浏览器开发者工具,查看当前html的cookie信息,Expire一栏是cookie过期时间,会话一般表示关闭网页后这个cookie就过期。
selenium中针对cookie的操作 在selenium中,有以下几个方法用来管理和操作当前网页内的cookie:
这里假设我们已经设定好一个webdriver对象名为browser
获取当前网页内的cookie
cookiesbrowser.get_cookies()
#cookies是List[dict],[{},{},{}]的格式
添加cookie至当前网页
browser.add_cookie(cookie字典)
删除单个cookie
browser.delete_cookie(cookie名称)
删除所有cookie
browser.delete_all_cookies()
通过cookie实现免登录
步骤 由于没有用户数据,webdriver每次打开一个网页都相当于新启动一个浏览器打开该网页 因此,在一些需要登录的网站,我们可以先试用webdriver打开该网页,接着手动扫码登录后,使用get_all_cookies()方法将登录后网页的cookies先保存到本地,建议使用json。 然后下一次使用webdriver打开该网站时再使用add_cookie()方法把先前的登录后的cookie数据添加到webdriver中,接着刷新页面,网站便会顺间恢复到已登录的状态。
源代码 这里以Edge为例,其余浏览器方法一样,将webdriver类型更换即可。 获取登录后的网页cookies import json
import time
from selenium.webdriver.edge.options import Options
from selenium import webdriver
edge_optionsOptions()
edge_options.add_argument(--disable-blink-featuresAutomationControlled)
browserwebdriver.Edge(optionsedge_options)
browser.get(URL)#请将URL替换为你要登录的网站的URL
browser.maximize_window()
time.sleep(20)#等待20秒,这20秒用来手动登录,若时间不够,请自行调整
cookiesbrowser.get_cookies()
with open(cookies.json,w) as f:f.write(json.dumps(cookies))#将cookies保存到本地cookies.json文件中
browser.quit() 将保存到本地的cookie数据添加到webdriver中
import json
from selenium.webdriver.edge.options import Options
from selenium import webdriver
edge_optionsOptions()
edge_options.add_argument(--disable-blink-featuresAutomationControlled)
browserwebdriver.Edge(optionsedge_options)
browser.get(URL)#请将URL替换为你要登录的网站的URL
browser.maximize_window()
with open(cookies.json,r) as f:cookiesjson.loads(f.read())for cookie in cookies:cookie_dict {domain: cookie.get(domain),name: cookie.get(name),value: cookie.get(value),expires: ,path: /,httpOnly: False,HostOnly: False,Secure: False}browser.add_cookie(cookie_dict)browser.refresh()
#执行后续操作
效果 webdriver刚启动打开csdn主页 添加cookie并刷新页面后
说明 不同网站的cookie有效时长各不相同,为了安全起见,很多都是会话,因此保存在本地的cookie数据也需要定时更新,对此,你可以在浏览器的开发者工具中查看cookie的expire时间来决定更新的频率。