HTTP——Cookie

HTTP——Cookie

  • 什么是Cookie
  • 通过Cookie访问网站

我们之前了解了HTTP协议,如果还有小伙伴还不清楚HTTP协议,可以点击这里:

https://blog.csdn.net/qq_67693066/article/details/136895597

我们今天来稍微了解一下HTTP里面一个很小的部分:Cookie

什么是Cookie

Cookie是一种小型的文本文件,由网站服务器发送到用户的浏览器,并存储在用户的计算机上。它包含着网站的相关信息,如用户的偏好设置、登录状态等。
Cookie的组成包括一个名称(Name)、一个值(Value)和其它几个用于控制Cookie有效期、安全性、使用范围的可选属性。Cookie的尺寸通常不超过4KB。
Cookie的工作原理是,当用户访问一个网站时,网站服务器会在HTTP响应头中添加一个Set-Cookie标头,其中包含了Cookie的信息。浏览器接收到响应后,会将这些Cookie保存在本地。之后,当用户再次访问该网站时,浏览器会在HTTP请求头中添加一个Cookie标头,将之前存储的Cookie信息发送给服务器。服务器通过解析这些Cookie信息,可以获取用户的状态、偏好等信息。
Cookie的发明可以追溯到1994年,由网景公司的程序员Lou Montulli发明。他为了解决HTTP协议无状态的限制而创建了Cookie,以便在用户和网站之间共享信息。
Cookie的主要作用包括跟踪用户行为、保存用户状态、记录用户偏好、实现购物车功能等。它广泛应用于登录状态管理、个性化内容推荐、购物体验改善、广告投放以及网站流量分析等领域。

比如我现在在写博客,如果我们是第一次打开这个网页,我们可以打开浏览器的检查功能,找到“网络”,然后点进去一个GET请求:
在这里插入图片描述

关闭再次打开,这个时候我们可以再次点击检查,再次查看请求头:
在这里插入图片描述
这个时候我们的浏览器就有了Cookie,这个Cookie帮我们存储了一些信息:

在这个Cookie字符串中,有几个重要的字段。以下是这些字段的详细解释:

  1. uuid_tt_dd:这个字段表示用户的唯一标识符。它通常用于跟踪用户的活动和会话。在这个例子中,uuid_tt_dd的值是10_6637840340-1670159414905-338951
  2. log_Id_pv:这个字段表示页面浏览次数。它用于记录用户在网站上浏览的页面数量。在这个例子中,log_Id_pv的值是587
  3. Hm_lvt_6bcd52f51e9b3dce32bec4a3997715ac:这个字段是一个用于跟踪用户访问网站的时间戳。它通常用于分析用户在网站上的停留时间和访问模式。在这个例子中,Hm_lvt_6bcd52f51e9b3dce32bec4a3997715ac的值是1711556895,1711576221,1711577673,1711578178
  4. Hm_up_6bcd52f51e9b3dce32bec4a3997715ac:这个字段包含了用户的一些属性,如是否登录、是否在线、是否是VIP等。这些属性通常用于个性化推荐和用户分析。在这个例子中,Hm_up_6bcd52f51e9b3dce32bec4a3997715ac的值是%7B%22islogin%22%3A%7B%22value%22%3A%221%22%2C%22scope%22%3A1%7D%2C%22isonline%22%3A%7B%22value%22%3A%221%22%2C%22scope%22%3A1%7D%2C%22isvip%22%3A%7B%22value%22%3A%220%22%2C%22scope%22%3A1%7D%2C%22uid_%22%3A%7B%22value%22%3A%22qq_67693066%22%2C%22scope%22%3A1%7D%7D
  5. dc_sid:这个字段表示用户的会话ID。它通常用于跟踪用户的会话状态和身份验证。在这个例子中,dc_sid的值是6d962e108e2c139d8e435550a8a4d5c3

这些字段只是Cookie字符串中的一部分,实际上还有其他字段。这些字段通常用于跟踪用户的行为、分析用户的兴趣和偏好,以及提供个性化的服务。

通过Cookie访问网站

我们这里通过Cookie来访问香港的淘宝,进入淘宝(香港版):
在这里插入图片描述
将Cookie的文本内容存放在txt文件中,这里我保存在桌面上:
在这里插入图片描述
然后在pycharm中编写以下代码:

import requests
from urllib.parse import unquote
import urllib.parse# 打开txt文件并读取内容
url = 'https://world.taobao.com/?spm=a2141.241046-hk.logo.1.41ca5adbDMl5rh' # 香港淘宝地址
with open('C:\\Users\\luoshui\\Desktop\\cookie.txt','r',encoding='utf-8') as file:cookie_str = file.read().strip()  # 读取内容并去除两端的空白字符decoded_cookie_str = unquote(cookie_str)# 使用分号将字符串分割成单独的Cookie
decoded_cookie_str = decoded_cookie_str.split(';')# 创建一个字典来存储Cookie键值对
cookies_dict = {}# 遍历分割后的Cookie列表,并添加到字典中
for cookie in decoded_cookie_str:# 去除每个Cookie两端的空格,并使用等号分割键和值key, value = cookie.strip().split('=', 1)# 在循环内解码值value = urllib.parse.quote(value.encode('utf-8'))# 将Cookie添加到字典中cookies_dict[key] = value# 打印分割后的Cookie字典
print(cookies_dict)# 发起请求
response = requests.get(url, cookies= cookies_dict)# 检查请求是否成功
if response.status_code == 200:# 请求成功,可以处理响应内容print("请求成功!")print(response.text)  # 打印网页的HTML内容
else:# 请求失败,打印错误信息print(f"请求失败,状态码:{response.status_code}")

运行:
在这里插入图片描述
点击url:
在这里插入图片描述
在这里插入图片描述
我们还可以切换地址到韩国,访问韩国的淘宝(把url地址换为韩国的,同时cookie也换成韩国的):

import requests
from urllib.parse import unquote
import urllib.parse# 打开txt文件并读取内容
url = 'https://world.taobao.com/?spm=a2141.241046-kr.logo.1.41ca5adbMdFW4f' # 地址换为韩国的
with open('C:\\Users\\luoshui\\Desktop\\cookie.txt','r',encoding='utf-8') as file:cookie_str = file.read().strip()  # 读取内容并去除两端的空白字符decoded_cookie_str = unquote(cookie_str)# 使用分号将字符串分割成单独的Cookie
decoded_cookie_str = decoded_cookie_str.split(';')# 创建一个字典来存储Cookie键值对
cookies_dict = {}# 遍历分割后的Cookie列表,并添加到字典中
for cookie in decoded_cookie_str:# 去除每个Cookie两端的空格,并使用等号分割键和值key, value = cookie.strip().split('=', 1)# 在循环内解码值value = urllib.parse.quote(value.encode('utf-8')).replace('%3B', ';').replace('%3D', '=')# 将Cookie添加到字典中cookies_dict[key] = value# 打印分割后的Cookie字典
print(cookies_dict)# 发起请求
response = requests.get(url, cookies= cookies_dict)# 检查请求是否成功
if response.status_code == 200:# 请求成功,可以处理响应内容print("请求成功!")print(response.text)  # 打印网页的HTML内容
else:# 请求失败,打印错误信息print(f"请求失败,状态码:{response.status_code}")

在这里插入图片描述
如果不行,大家记得点一下“淘宝”旁边的名字:
在这里插入图片描述

在这里插入图片描述

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

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

相关文章

面试题:RabbitMQ 消息队列中间件

1. 确保消息不丢失 生产者确认机制 确保生产者的消息能到达队列,如果报错可以先记录到日志中,再去修复数据持久化功能 确保消息未消费前在队列中不会丢失,其中的交换机、队列、和消息都要做持久化消费者确认机制 由spring确认消息处理成功后…

算法基础--递推

😀前言 递推算法在计算机科学中扮演着重要的角色。通过递推,我们可以根据已知的初始条件,通过一定的规则推导出后续的结果,从而解决各种实际问题。本文将介绍递推算法的基础知识,并通过一些入门例题来帮助读者更好地理…

Redis 全景图(2)---- 关于 Redis 的三“高”

前言 我们继续写第一篇文章没写完的。其实我也不想将我写的一篇 Redis 文章分成几篇中短文来写,但是没办法,我一次写个1万字,会限流,所以将就一下吧。 上篇文章我用了 Redis 的6大模块这个思路来描绘我脑子中的 Redis。其实这6大…

AI学习-线性回归推导

线性回归 1.简单线性回归2.多元线性回归3.相关概念熟悉4.损失函数推导5.MSE损失函数 1.简单线性回归 ​ 线性回归:有监督机器学习下一种算法思想。用于预测一个或多个连续型目标变量y与数值型自变量x之间的关系,自变量x可以是连续、离散,但是目标变量y必…

SQLynx发布3.0.0版本:带来更流畅便捷的SQL开发体验

作为新一代的一站式数据库管理开发工具, SQLynx自发布上线以来,一直受到广大用户的好评与鼓励。 为了给用户提供更高效、更便捷、更可靠的数据库管理开发体验,SQLynx今日正式发布3.0.0版本,同步在麦聪软件官网上线,全…

通知中心架构:打造高效沟通平台,提升信息传递效率

随着信息技术的快速发展,通知中心架构作为一种关键的沟通工具,正逐渐成为各类应用和系统中必不可少的组成部分。本文将深入探讨通知中心架构的意义、设计原则以及在实际场景中的应用。 ### 什么是通知中心架构? 通知中心架构是指通过集中管…

【零基础学数据结构】顺序表

目录 1.了解数据结构 什么是数据结构? 为什么要进行数据管理? 2.顺序表 顺序表概要解析: ​编辑顺序表的分类: 差别和使用优先度: 1.创建顺序表 1.1顺序表分为静态顺序表和动态顺序表 1.2顺序表的初始化…

【C++STL详解(二)】——string类模拟实现

目录 前言 一、接口总览 二、默认成员函数 1.构造函数 2.拷贝构造 写法一:传统写法 写法二:现代写法(复用构造函数) 3.赋值构造 写法一:传统写法 写法二:现代写法(复用拷贝构造) 4.析构函数 三、…

JVM原理

java 代码执行过程 ● 1.用javac代码编译为class ● 2.装载class ClassLoader ● 3.执行class,包括解释执行和编译执行 内存管理 jvm 内存区域 程序计数器(线程私有) 空间相对比较小,为数不多不会发送OutofMemoryError&#x…

数据文件大小扩容或缩容必备技能

欢迎关注“数据库运维之道”公众号,一起学习数据库技术! 本期将为大家分享“数据文件大小扩容或缩容必备技能” 。 关键词:Resize Datafile、ORA-03297、高水位线 表空间跟数据文件是一对多的关系,数据文件存放到磁盘或ASM磁盘组。当磁盘空间…

OSX-02-Mac OS应用开发系列课程大纲和章节内容设计

本节笔者会详细介绍下本系统专题的大纲,以及每个专题章节的组织结构。这样读者会有一个全局的概念。 在开始前还是在再介绍一下下面这个框架图,因为比较重要,在这里再冗余介绍一下。开发Apple公司相关产品的软件时,主要有两个框架…

JavaScript基础(5)之对象的方法和调用

JavaScript基础5之对象的方法和调用 对象对象使用语法属性和访问方法和调用null遍历对象 内置对象Math属性方法 基本数据类型和引用数据类型堆栈空间分配区别:简单类型的内存分配复杂类型的内存分配 对象 对象是 JavaScript 数据类型的一种,之前已经学习…

AI音乐GPT时刻来临:Suno 快速入门手册!

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…

回溯算法|78.子集

力扣题目链接 class Solution { private:vector<vector<int>> result;vector<int> path;void backtracking(vector<int>& nums, int startIndex) {result.push_back(path); // 收集子集&#xff0c;要放在终止添加的上面&#xff0c;否则会漏掉自…

Leaflet使用多面(MultiPolygon)进行遥感影像掩膜报错解决之道

目录 前言 一、问题初诊断 1、山重水复 2、柳暗花明 3、庖丁解牛 4、问题定位 二、解决多面掩膜问题 1、尝试数据修复 2、实际修复 3、最终效果 三、总结 前言 之前一篇讲解遥感影像掩膜实现&#xff1a;基于SpringBoot和Leaflet的行政区划地图掩膜效果实战&#xff0…

Docker实例

华子目录 docker实例1.为Ubuntu镜像添加ssh服务2.Docker安装mysql docker实例 1.为Ubuntu镜像添加ssh服务 (1)访问https://hub.docker.com&#xff0c;寻找合适的Ubuntu镜像 (2)拉取Ubuntu镜像 [rootserver ~]# docker pull ubuntu:latest latest: Pulling from library/ub…

开源大模型AI代理操作系统:像Windows一样,操控AI代理

去年&#xff0c;AutoGPT的出现让我们见识到了AI代理强大的自动化能力&#xff0c;并开创了一个全新的AI代理赛道。但在子任务调度、资源分配以及AI之间协作还有不少的难题。 因此&#xff0c;罗格斯大学的研究人员开源了AIOS&#xff0c;这是一种以大模型为核心的AI代理操作系…

【智能算法】蜜獾算法(HBA)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献 1.背景 2021年&#xff0c;FA Hashim等人受到自然界中蜜獾狩猎行为启发&#xff0c;提出了蜜獾算法&#xff08;(Honey Badger Algorithm&#xff0c;HBA&#xff09;。 2.算法原理 2.1算法思想 蜜獾以其…

C++重载和模板

重载与模板 函数模板可以被另一个模板或一个普通非模板函数重载。 与往常一样&#xff0c;名字相同的函数必须具有不同数量或类型的参数。 如果涉及函数模板&#xff0c;则函数匹配规则会在以下几方面受到影响&#xff1a; 对于一个调用&#xff0c;其候选函数包括所有模板…

成都欣丰洪泰文化传媒有限公司引领电商新风向

在当今数字化时代&#xff0c;电子商务行业日新月异&#xff0c;竞争激烈。然而&#xff0c;在这股浪潮中&#xff0c;成都欣丰洪泰文化传媒有限公司凭借其独特的战略眼光和创新精神&#xff0c;正引领着电商领域的新浪潮。本文将探讨成都欣丰洪泰文化传媒有限公司如何在激烈的…