一文详解Cookie以及Selenium自动获取Cookie

前言

以后数据获取途径以及数据资产绝对会是未来核心要素生产工具和资源之一,每个大模型都离不开更加精细化数据的二次喂养训练。不过现在来看收集大量数据的方法还是有很多途径的,有些垂直领域的专业数据是很难获取得到的,靠人力去搜寻相当费时费力,而且处理起来也很麻烦,关键是不能准确的获取强相关数据就对项目开展妹太大帮助。之前本人一直从事的是大数据算法工作,对数据获取和收集这方面也有不错的技术开展,目前将开展新的技术专栏,将把深耕到数据收集和获取这方面的技术展现复盘。

1.什么是Cookie

很多时候我们发现如果我们这网页上面登录过账号,下次再访问该网站就会发现不用再输入密码账号就能登录了。想象一下你去一家咖啡店。第一次去,你告诉店员你的名字和你喜欢的咖啡类型。店员记住了这些信息。下次你再去,店员看到你就知道你叫什么名字,也知道你喜欢什么咖啡,于是直接为你准备了你喜欢的咖啡。

在这个例子中,咖啡店就像一个网站,你就像是访问网站的用户。你提供的名字和咖啡偏好就像是你在网站上输入的信息。咖啡店员记住你的信息,这就像网站在你的电脑上存储Cookie一样。所以,Cookie就是网站为了记住用户的偏好或者身份信息而存储在用户电脑上的小型数据文件。这样,下次你访问同一个网站时,它可以快速地识别你,并根据存储的信息定制内容,就不用再次账号登录了。

在了解到了cookie具有什么样的功能以后,我们再来对cookie更加深入的了解。

2.Cookie的作用和数据形式

有时候浏览网站会出现:

在这里插入图片描述

的弹窗提示,根据弹窗提示其实我们就能够看出cookie的一些作用:能够发现我们的需求,还能分析我们的流量和网站使用情况,也就是监视我们用户的浏览习惯和活动。广告商还能使用Cookie来收集关于我们的信息,以显示更相关的广告。这是基于你的浏览历史和其他在线行为,所以这就是为什么我们之前搜了某某用品,某宝某东就直接开始推送了,还有视频网站某书和某站也会陆续推送相关视频。当然如果你开了无痕模式,那么浏览器也不会保存cookie。

总结一下cookie的作用,有以下几点:

  • 身份认证和会话管理:当你登录一个网站后,该网站会使用Cookie来记住你的登录状态,这样你就不必在每次访问新页面时都重新登录。
  • 个性化设置:网站利用Cookie存储个性化设置,比如语言偏好、主题选择等,以便在你下次访问时提供相同的定制体验。
  • 追踪和分析:网站使用Cookie来追踪用户的浏览习惯和活动。这对于网站改进其内容和结构、提供更加个性化的体验非常有用。
  • 广告定位:广告商使用Cookie来收集关于你的信息,以显示更相关的广告。这是基于你的浏览历史和其他在线行为的。
  • 过期时间:Cookie可以设置不同的过期时间。有些在关闭浏览器时就会消失(会话Cookie),而另一些则会在特定日期后才会消失(持久性Cookie)。
  • 隐私和安全:虽然Cookie对提升网站体验很重要,但它们也引发了隐私和安全上的担忧。用户通常可以在浏览器设置中管理Cookie,包括删除和禁用它们。
  • 第三方Cookie:除了由网站直接设置的Cookie(第一方Cookie)外,还有第三方Cookie,通常由广告商和分析服务提供商设置,用于跨网站追踪用户行为。

了解以上几点之后,我们再来看看cookie具体存储的数据格式是怎么样的。每个浏览器对于cookie的存储和设置都不一样,以火狐浏览器为例,直接在浏览器搜索设置就可以看到:

在这里插入图片描述

在下方可以看到浏览器存储的cookie:

在这里插入图片描述

点击管理数据

在这里插入图片描述

如果经常浏览某个网站,我这里是bilibili,就会发现存储的cookie占用内存特别多,也就是存储你的个性行为特别多。那么如何查看一个cookie呢?

根据步骤来,以CSDN为例,输入F12进入开发者模式,点击存储,在界面左边都能看到存储的Cookie:

在这里插入图片描述

一般cookie是一段不超过4KB的小型文本数据,由一个名称(Name)、一个值(Value)和其它几个用于控制Cookie有效期、安全性、使用范围的可选属性组成。有些服务端设置都cookie很复杂,关键字段就很多,有些就非常简单。

3.cookie属性

我们现了解cookie保存的数据都有哪些属性

在这里插入图片描述

(1)Name/Value:名称和值设置Cookie的名称及相对应的值,对于认证Cookie,Value值包括Web服务器所提供的访问令牌。

(2)Domain属性:指定了可以访问该 Cookie 的 Web 站点或域。Cookie 机制并未遵循严格的同源策略,允许一个子域可以设置或获取其父域的 Cookie。当需要实现单点登录方案时,Cookie 的上述特性非常有用,然而也增加了 Cookie受攻击的危险,比如攻击者可以借此发动会话定置攻击。因而,浏览器禁止在Domain属性中设置.org、.com 等通用顶级域名、以及在国家及地区顶级域下注册的二级域名,以减小攻击发生的范围。

(3)Path属性:定义了Web站点上可以访问该Cookie的目录,一般csrToken就有此属性。

(4)Expires属性:设置Cookie的生存期。有两种存储类型的Cookie:会话性与持久性。Expires属性缺省时,为会话性Cookie,仅保存在客户端内存中,并在用户关闭浏览器时失效;持久性Cookie会保存在用户的硬盘中,直至生存期到或用户直接在网页中单击“注销”等按钮结束会话时才会失效。

(5)Secure属性:指定是否使用HTTPS安全协议发送Cookie。使用HTTPS安全协议,可以保护Cookie在浏览器和Web服务器间的传输过程中不被窃取和篡改。该方法也可用于Web站点的身份鉴别,即在HTTPS的连接建立阶段,浏览器会检查Web网站的[证书的有效性。但是基于兼容性的原因(比如有些网站使用自签署的证书)在检测到SSL证书无效时,浏览器并不会立即终止用户的连接请求,而是显示安全风险信息,用户仍可以选择继续访问该站点。由于许多用户缺乏安全意识,因而仍可能连接到Pharming攻击所伪造的网站

(6)HTTPOnly 属性 :用于防止客户端脚本通过document.cookie属性访问Cookie,有助于保护Cookie不被跨站脚本攻击窃取或篡改。但是,HTTPOnly的应用仍存在局限性,一些浏览器可以阻止客户端脚本对Cookie的读操作,但允许写操作;此外大多数浏览器仍允许通过XMLHTTP对象读取HTTP响应中的Set-Cookie头

这都是每一条cookie元素所自带的属性,那么我们再聚焦于cookie的名称一般都有哪些含义。

4.Cookie名称

在这里插入图片描述

Cookie的名称(Name)是用来唯一标识不同的Cookie。名称可以根据Cookie的用途来命名,以下是一些常见的Cookie名称和它们的用途:

名称(Name)用途
session_id/PHPSESSID用于标识用户的会话。这种类型的Cookie通常用于登录后保持用户状态。
user_id /uid用来标识特定用户,可能用于跟踪或个性化。
remember_me通常与长期登录功能有关,用于记住用户的登录状态。
token /auth_token用于存储身份验证令牌,通常用于API调用或维持登录状态。
preferences /settings保存用户设置和偏好,例如界面主题、语言设置等。
cart/shopping_cart对于电商网站,用来跟踪用户的购物车内容。
analytics /tracking_id用于网站分析和用户跟踪,可能用于统计用户访问行为。
csrftoken/ XSRF-TOKEN于跨站请求伪造(CSRF)保护。
ads/ ad_id广告相关的跟踪,用于个性化广告显示。
locale/ language存储用户的语言偏好。
cookie_consent/ consent记录用户对Cookie使用的同意。

以上基本是cookie包含的所有标识了,当然也有很多网站的cookie有更多其他的业务或者是其他笔记防范爬虫等机制,下面我们来利用Python Selenium来获取我们当前的cookie。

5.获取Cookie

获取Cookie的方法特别多,可以用Web浏览器中的JavaScript,可以通过document.cookie属性来访问当前页面的Cookie。也可以在HTTP请求头中接收Cookie。例如,在PHP中,可以通过$_COOKIE全局数组访问Cookie;在Node.js中,可以通过HTTP请求对象的headers.cookie属性访问。或者Python的Requests, Node.js的Axios等。这里展示如何用浏览器自动化工具Selenium来提取浏览器的cookie。如果对selenium不了解的推荐去看博主写的selenium详细介绍的博客。

首先引入库:

from selenium import webdriver

cookie登入前和登入后所存储的是不一致的,所以我们可以前后两次获取cookie看哪些值是存在变动的,这次获取的是csdn博客cookie。

def password_login(self):self.driver = webdriver.Firefox()self.driver.get("https://blog.csdn.net/")cookieBefore = self.driver.get_cookies()time.sleep(2)self.driver.find_element(By.LINK_TEXT, "登录").click()#登入后再获取一次cookietime.sleep(2)#扫码time.sleep(20)print("登录后!")cookiesAfter = self.driver.get_cookies()print("cookiesAfter:")print(cookiesAfter)

大家可以自己运行一遍,因为cookie是隐私内容这里就不作演示了。

点关注,防走丢,如有纰漏之处,请留言指教,非常感

以上就是本期全部内容。我是fanstuck ,有问题大家随时留言讨论 ,我们下期见。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/307217.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【滑动窗口】【二分查找】C++算法:和至少为 K 的最短子数组

作者推荐 动态规划 多源路径 字典树 LeetCode2977:转换字符串的最小成本 本题涉及知识点 滑动窗口 有序向量 二分查找 LeetCode862:和至少为 K 的最短子数组 给你一个整数数组 nums 和一个整数 k ,找出 nums 中和至少为 k 的 最短非空子数组 ,并返回…

安装 PyQt5 保姆级教程

作者:billy 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 前言 博主之前做应用层开发用的一直是 Qt,这次尝试一下在 python 中使用 Pyqt5 模块来开发 UI 界面,这里做一些…

[电磁学]大学物理陈秉乾老师课程笔记

主页有博主其他上万字的精品笔记,都在不断完善ing~ 第一讲 绪论,库仑定律 主要讲解了电磁学中的库伦定律和电场的相关概念,介绍了电荷和电磁相互作用的规律,并讲解了电场强度和电势的概念。 03:14 🎓 库伦定律:电势能与电荷的关…

通过学习这些技巧,让你的Python代码更加简洁和高效

文章目录 前言列表性能陷阱陷阱一陷阱二 快速合并字典通过有序字典去重最后Python技术资源分享1、Python所有方向的学习路线2、学习软件3、入门学习视频4、实战案例5、清华编程大佬出品《漫画看学Python》6、Python副业兼职与全职路线 前言 今天看到一些关于容器的使用技巧&am…

Transformer各模块结构详解(附图)

前言:基于TRANSFORMER的结构在视觉领域是承上启下的作用。刚接触会比较难,上的话需要对RNN,LSTM,ATTENTION先有初步的了解。下的话需要学习VIT,GPT,DETR等结构先了解TRANSFORMER都是必要的。 参考&#xff…

阿里云2核2G3M轻量应用服务器又降了1块钱?

阿里云和腾讯云怎么了?之前轻量应用服务器2核2G3M配置阿里云降价到63元一年,同款配置的腾讯云轻量应用服务器2核2G3M配置降价为62元一年,现在阿里云这台云服务器又降价了,现在是61元一年,真无语,阿腾云aten…

IP地址SSL证书

IP地址SSL证书是一种专门针对公网IP地址颁发的数字证书。与常规的域名SSL证书类似,其主要目标是提供数据加密和身份验证。以下几点概述了IP地址SSL证书的重要特性及其申请过程: 1. 保护直接IP访问: 当用户直接通过IP地址访问服务时&#xff…

mysql中按字段1去重,按字段2降序排序

数据举例 sql语句 按字段field4降序排序,按字段field1去重 SELECT tt1.name2,tt1.field1,tt1.field2,tt1.field4 from ( select tt2.name2,tt2.field1,tt2.field2,tt2.field4 from t2 tt2 ORDER BY tt2.field4 DESC ) tt1 GROUP BY tt1.field1执行结果

低代码平台搭建ERP系统 低代码快速开发灵活的ERP

随着数字化时代的到来,企业迫切需要高效、灵活的ERP系统来提高运营效率。在这一背景下,白码低代码平台成为了企业实现数字化转型的首选工具。本文将介绍低代码开发ERP的概念,并以白码低代码平台为例,探讨其在企业数字化转型中的重…

AIGC时代下,结合ChatGPT谈谈儿童教育

引言 都2024年了,谈到儿童教育,各位有什么新奇的想法嘛 我觉得第一要务,要注重习惯养成,我觉得聊习惯养成这件事情范围有点太大了,我想把习惯归纳于底层逻辑,我们大家都知道,在中国式教育下&a…

OpenHarmony之系统调用

背景 对于运行L0系统的硬件一般是mcu,资源有限,L0系统没有区分内核态和用户态,所有的代码都在内核态运行,所以不需要系统调用 L2系统用的是Linux内核,所以系统调用跟Linux Kernel的是一样的。 所以我们主要来看看L1系…

MFT端口报错处理手册

MFT端口主要包括:AS2,OFTP,SFTP,FTP等,覆盖当前EDI传输过程中可能会使用到的几乎所有传输协议。 知行之桥的MFT端口通过提供以下功能扩展了核心端口的文件传输功能: 安全的点对点文件传输协议,如AS2、AS4等服务器端支持FTP和SFT…