Web自动化之Selenium添加网站Cookies实现免登录

embedded/2025/2/26 3:30:45/

        在使用Selenium进行Web自动化时,添加网站Cookies是实现免登录的一种高效方法。通过模拟浏览器行为,我们可以将已登录状态的Cookies存储起来,并在下次自动化测试或爬虫任务中直接加载这些Cookies,从而跳过登录步骤。

Cookies简介

        Cookies是存储在用户本地终端上的一小块数据,它会在浏览器向服务器发起请求时被携带并发送到服务器上。这些Cookies通常包含了用户的会话信息,比如登录状态、用户偏好设置等。简而言之,Cookie就像是临时身份证一样,每次浏览器请求时都会携带它,以便服务器识别用户身份或保持会话状态,这也是为什么我们在一个网页内登录后关闭掉网页,再次进入依然能够保持登录状态的原因。

        不过,为了安全起见,网站开发者通常会对Cookies设置过期时间,并且在过期后会被浏览器自动删除。此外,Cookies的存储位置也有限制,通常只能在设置它们的域名下访问,这在一定程度上保护了用户的隐私安全。

这里以CSDN为例

        打开浏览器开发者工具,查看当前html的cookie信息,Expire一栏是cookie过期时间,会话一般表示关闭网页后这个cookie就过期。

selenium中针对cookie的操作

        在selenium中,有以下几个方法用来管理和操作当前网页内的cookie:

这里假设我们已经设定好一个webdriver对象名为browser

获取当前网页内的cookie

cookies=browser.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

python">
import json
import time
from selenium.webdriver.edge.options import Options
from selenium import webdriver
edge_options=Options()
edge_options.add_argument('--disable-blink-features=AutomationControlled')
browser=webdriver.Edge(options=edge_options)
browser.get('URL')#请将URL替换为你要登录的网站的URL 
browser.maximize_window()  
time.sleep(20)#等待20秒,这20秒用来手动登录,若时间不够,请自行调整
cookies=browser.get_cookies()
with open('cookies.json','w') as f:f.write(json.dumps(cookies))#将cookies保存到本地cookies.json文件中
browser.quit() 

将保存到本地的cookie数据添加到webdriver中

python">import json
from selenium.webdriver.edge.options import Options
from selenium import webdriver
edge_options=Options()
edge_options.add_argument('--disable-blink-features=AutomationControlled')
browser=webdriver.Edge(options=edge_options)
browser.get('URL')#请将URL替换为你要登录的网站的URL 
browser.maximize_window()                    
with open('cookies.json','r') as f:cookies=json.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时间来决定更新的频率。


http://www.ppmy.cn/embedded/167182.html

相关文章

关于 Grok-3 大语言模型的研究

摘要:本文深入研究埃隆・马斯克旗下 xAI 团队研发的大语言模型 Grok-3。Grok-3 依托强大的超级计算基础设施,采用独特训练数据策略与创新模型架构,在性能指标、功能特性及应用场景展现出显著优势,同时也引发技术争议与行业格局变动,对人工智能发展影响深远。 关键词:Grok…

百度百舸 DeepSeek 一体机发布,支持昆仑芯 P800 单机 8 卡满血版开箱即用

在私有云环境中成功部署 DeepSeek 满血版并实现性能调优,并不是一件容易的事情。选择合适的 GPU 配置、安装相应的环境、成功部署上线业务、加速推理任务加速、支撑多用户并发 …… 完成业务测试,成功融入生产业务中。 为了帮助企业快速实现 DeepSeek 服…

如何排查服务器 DNS 解析失败的问题

DNS(Domain Name System)解析是将域名转换为 IP 地址的过程。DNS 解析失败会导致服务器无法访问外部资源或用户无法访问服务器。以下是详细的排查步骤和方法。 1. 确认问题现象 首先,明确问题的具体表现: 服务器无法访问特定域名…

AI知识架构之AIGC

AIGC 基础概念 定义与范畴 定义:AIGC 即 Artificial Intelligence Generated Content,指利用人工智能技术生成内容。这意味着人工智能不再仅仅是分析或处理现有数据,而是能够主动创造出文本、图像、音频、视频等各种形式的内容。范畴:其涵盖范围广泛,涉及多模态内容。文本…

Python常见面试题的详解16

1. 如何强行关闭客户端和服务器之间的连接? 在网络编程中,有时需要强行中断客户端和服务器之间的连接。对于基于 TCP 协议的连接,由于其面向连接的特性,需要采取特定的步骤来确保连接被正确关闭;而 UDP 是无连接协议&a…

51单片机-AT24CXX存储器工作原理

1、AT24CXX存储器工作原理 1.1、特点: 与400KHz,I2C总线兼容1.8到6.0伏工作电压范围低功耗CMOS技术写保护功能当WP为高电平时进入写保护状态页写缓冲器自定时擦写周期100万次编程/擦除周期可保存数据100年8脚DIP SOIC或TSSOP封装温度范围商业级和工业级…

Llama 3.1 本地电脑部署 Linux系统 【轻松简易】

本文分享在自己的本地电脑部署 llama3.1,而且轻松简易,快速上手。 这里借助Ollama工具,在Linux系统中进行大模型部署~ Llama3.1,有三个版本:8B、70B、405B Llama 3.1 405B 是第一个公开可用的模型,在常识…

运行 Rancher 的建议

运行在多个节点上的多个 Rancher 实例确保了单节点环境无法实现的高可用性,所以在生产环境或者一些很重要的环境中部署 Rancher 时,应该使用至少有三个节点的高可用 Kubernetes 集群,并在这个集群上面安装 Rancher。 在专用的集群上运行 Ran…