小 cookie,大作用:探索网站中的隐私追踪器(上)

在这里插入图片描述

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6
🍨 阿珊和她的猫_CSDN个人主页
🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》
🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入门到实战全面掌握 uni-app》

文章目录

  • 一、引言
    • 介绍 `cookie` 的概念和作用
  • 二、 `cookie` 的基础知识
    • 解释 `cookie` 的定义和工作原理
    • 介绍 `cookie` 的类型:会话 `cookie` 和持久 `cookie`
    • 讨论 `cookie` 的用途,如会话管理、个性化设置等
  • 三、 `cookie` 的设置和获取
    • 演示如何在服务器端设置 `cookie`
    • 介绍如何在客户端通过 JavaScript 获取和操作 `cookie`

一、引言

介绍 cookie 的概念和作用

Cookie一种由服务器发送给客户端(通常是浏览器)的小文本文件,用于存储一些与用户相关的信息Cookie通常包含一个唯一的标识符(Cookie ID)以及一些其他的元数据,如过期时间、创建时间、路径等。

Cookie的主要作用包括:

  1. 会话管理Cookie可以用于在服务器端跟踪用户的会话。当用户登录到一个网站时,服务器可以向用户的浏览器发送一个包含登录信息的Cookie。在后续的请求中,浏览器会自动将该Cookie发送给服务器,以便服务器验证用户的身份。

  2. 个性化设置:网站可以使用Cookie来存储用户的偏好设置,如语言、字体大小、主题等。这样,当用户再次访问该网站时,网站可以根据Cookie中存储的信息为用户提供个性化的体验。

  3. 广告追踪:广告商可以使用Cookie来跟踪用户在多个网站上的浏览行为,以便向用户展示相关的广告。

  4. 分析和统计:网站所有者可以使用Cookie来收集用户的浏览行为数据,如访问页面的数量、停留时间等,以便进行网站分析和统计。

需要注意的是,Cookie可能会涉及到用户的隐私问题,因此一些浏览器提供了隐私设置,允许用户控制是否接受Cookie以及如何处理Cookie。同时,网站也需要在使用Cookie时遵循相关的法律法规,如欧盟的《通用数据保护条例》(GDPR)等。

二、 cookie 的基础知识

解释 cookie 的定义和工作原理

Cookie是由服务器发送到用户浏览器并保存在本地的一小段文本数据。它包含了一个唯一的标识符(Cookie ID)以及一些其他信息,如过期时间、创建时间、路径等。

Cookie的工作原理如下:

  1. 当用户首次访问一个网站时,服务器会在响应中发送一个Set-Cookie头部,其中包含了一个Cookie的值。

  2. 浏览器接收到该响应后,会将Cookie存储在本地。在后续的请求中,浏览器会自动将该Cookie包含在请求的Cookie头部中,发送给服务器。

  3. 服务器接收到请求后,可以通过解析Cookie头部获取到之前发送的Cookie值。服务器可以使用该Cookie值来识别用户、跟踪用户的会话或存储用户的偏好设置等信息。

  4. Cookie的过期时间决定了它在浏览器中保留的时间。当过期时间到达时,浏览器会自动删除该Cookie。如果没有设置过期时间,则Cookie会在浏览器关闭时被删除。

需要注意的是,Cookie是基于浏览器的,并且只能被发送给设置了Cookie的同一域名下的服务器。此外,浏览器通常会限制每个域名可以存储的Cookie数量以及总大小。因此,在使用Cookie时需要考虑到这些限制。

介绍 cookie 的类型:会话 cookie 和持久 cookie

根据过期时间的不同,Cookie可以分为两种类型:会话Cookie和持久Cookie

  1. 会话Cookie:会话Cookie是一种临时的Cookie,它在用户关闭浏览器或会话结束时自动失效。会话Cookie用于在用户的会话期间保持状态,例如在购物车中添加商品或登录到网站时。

  2. 持久Cookie:持久Cookie是一种在浏览器中保存较长时间的Cookie,它的过期时间可以设置为几天、几个月甚至几年。持久Cookie常用于存储用户的偏好设置、登录状态等信息,以便用户在下次访问网站时可以自动恢复这些设置。

无论是会话Cookie还是持久Cookie,它们都可以在浏览器中被访问和修改。然而,需要注意的是,用户可以通过浏览器设置来禁用Cookie,或者在使用完浏览器后清除Cookie。因此,在开发网站时,需要考虑到Cookie的使用和用户的隐私问题。

讨论 cookie 的用途,如会话管理、个性化设置等

Cookie在 Web 开发中有许多用途,包括会话管理、个性化设置、广告追踪和分析等。下面是一些常见的Cookie用途:

  1. 会话管理Cookie可以用于跟踪用户的会话。当用户登录到一个网站时,服务器可以向用户的浏览器发送一个包含会话标识符的Cookie。在后续的请求中,浏览器会自动将该Cookie发送给服务器,以便服务器识别用户的会话并保持用户的登录状态。

  2. 个性化设置:网站可以使用Cookie来存储用户的偏好设置,如语言、字体大小、主题等。这样,当用户再次访问该网站时,网站可以根据Cookie中存储的信息为用户提供个性化的体验。

  3. 广告追踪:广告商可以使用Cookie来跟踪用户在多个网站上的浏览行为,以便向用户展示相关的广告。通过分析用户的浏览历史和兴趣,广告商可以更精准地投放广告,提高广告的点击率和转化率。

  4. 分析和统计:网站所有者可以使用Cookie来收集用户的浏览行为数据,如访问页面的数量、停留时间等。这些数据可以用于分析网站的流量、用户行为和优化网站的设计和内容。

需要注意的是,Cookie可能会涉及到用户的隐私问题,因此一些浏览器提供了隐私设置,允许用户控制是否接受Cookie以及如何处理Cookie。同时,网站也需要在使用Cookie时遵循相关的法律法规,如欧盟的《通用数据保护条例》(GDPR)等。

三、 cookie 的设置和获取

演示如何在服务器端设置 cookie

在服务器端设置cookie通常使用 HTTP 响应的Set-Cookie头部。下面是一个简单的 Python 示例,演示如何在服务器端设置cookie

import http.server
import socketserver# 设置 cookie
def set_cookie(response, name, value, max_age=3600):response.headers.add("Set-Cookie", f"{name}={value}; max-age={max_age}")# 处理请求
def handle_request(client_request):response = http.server.SimpleHTTPRequestHandler(client_request)set_cookie(response, "my_cookie", "my_value")return response# 创建服务器并监听指定端口
with socketserver.TCPServer(("", 8000), handle_request) as httpd:print(f"Serving at port 8000...")# 启动服务器,按 Ctrl+C 停止try:httpd.serve_forever()except KeyboardInterrupt:print("Server stopped.")

在上面的示例中,我们使用 Python 的内置模块http.serversocketserver创建了一个简单的 HTTP 服务器。当客户端发送请求到该服务器时,我们使用set_cookie函数设置了一个名为my_cookiecookie,其值为my_value,过期时间为 3600 秒(1 小时)。然后,服务器将包含Set-Cookie头部的响应发送给客户端。

请注意,这只是一个简单的示例,用于演示在服务器端设置cookie的基本概念。在实际应用中,你可能需要使用更复杂的框架或库来处理 HTTP 请求和响应,并设置cookie

介绍如何在客户端通过 JavaScript 获取和操作 cookie

在客户端(通常是指浏览器)通过 JavaScript 获取和操作cookie的方法如下:

  1. 获取cookie 使用document.cookie属性可以获取所有存储在浏览器中的cookie。该属性返回一个包含所有cookie的字符串,每个cookie以分号(;)分隔。例如:
var cookies = document.cookie;

要获取特定的cookie,可以使用字符串的split()方法结合正则表达式来提取。例如,要获取名为"myCookie"的cookie的值,可以使用以下代码:

var cookieName = "myCookie";
var cookieValue = document.cookie.split("; ")[0].split("=")[1];console.log(cookieValue);
  1. 设置cookie 可以使用document.cookie属性来设置新的cookie或更新已存在的cookie。设置cookie时,需要指定cookie的名称、值和其他可选属性,例如过期时间、路径等。例如,要设置一个名为"myCookie"的cookie,其值为"myValue",过期时间为 7 天,可以使用以下代码:
var cookieName = "myCookie";
var cookieValue = "myValue";
var expireDate = new Date();
expireDate.setTime(expireDate.getTime() + 7 * 24 * 60 * 60 * 1000);document.cookie = `${cookieName}=${cookieValue}; expires=${expireDate.toUTCString()}; path=/`;
  1. 删除cookie 要删除已存在的cookie,可以将其过期时间设置为过去的时间。例如,要删除名为"myCookie"的cookie,可以使用以下代码:
var cookieName = "myCookie";
var expireDate = new Date();
expireDate.setTime(expireDate.getTime() - 1);document.cookie = `${cookieName}=; expires=${expireDate.toUTCString()}; path=/`;

需要注意的是,通过 JavaScript 设置或删除cookie可能会受到浏览器的安全设置和同源策略的限制。某些浏览器可能会限制第三方脚本对cookie的操作,或者要求cookie的域名与当前页面的域名相同。在实际应用中,需要考虑这些因素,并确保你的代码在目标浏览器和环境中正常工作。

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

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

相关文章

大华 DSS 数字监控系统 itcBulletin SQL 注入漏洞复现

0x01 产品简介 大华 DSS 数字监控系统是大华开发的一款安防视频监控系统,拥有实时监视、云台操作、录像回放、报警处理、设备管理等功能。 0x02 漏洞概述 大华 DSS存在SQL注入漏洞,攻击者 /portal/services/itcBulletin 路由发送特殊构造的数据包,利用报错注入获取数据库…

springboot——定时任务、异步任务

springboot——定时任务、异步任务 一、定时任务1、创建一个定时任务、时间配置文件2、springboot主程序开启定时任务 EnableScheduling3、使用 Scheduled 注解 二、定时任务、异步执行。1、springboot主程序开启异步任务 EnableAsync2、方法上增加 Async 注解,标识…

【JAVA日志框架】JUL,JDK原生日志框架详解。

前言 Java日志体系混乱?Java日志框架系列,清晰简洁整理好整个Java的日志框架体系。第一篇,JDK原生日志框架——JUL。 目录 1.概述 2.日志级别 3.配置 4.继承关系 1.概述 日志框架的核心问题: 日志是用来记录应用的一些运行…

nodejs+vue+微信小程序+python+PHP校园二手交易系统的设计与实现-计算机毕业设计推荐

(2)管理员 进行维护,以及平台的后台管理工作都依靠管理员,其可以对信息进行管理。需具备功能有;首页、个人中心、学生管理、物品分类管理、物品信息管理、心愿贴、系统管理、订单管理等功能。系统分成管理员控制模块和学生模块。 本系统有良好…

maven+spock

pom配置 话说JunitMockito的组合用起来是真难用&#xff0c;还是Spock的简单&#xff0c;尤其是参数化的测试。junit的Parameter是鸡肋&#xff0c;杂恶心&#xff1b;Theories用来也不爽。 <?xml version"1.0" encoding"UTF-8"?><project xm…

Spring容器中scope为prototype类型Bean的回收机制

文章目录 一、背景二、AutowireCapableBeanFactory 方法 autowireBean 分析三、Spring 容器中 scope 为 prototype 类型 Bean 的回收机制四、总结 一、背景 最近做 DDD 实践时&#xff0c;遇到业务对象需要交给 Spring 管理才能做一些职责内事情。假设账号注册邮箱应用层代码流…

Flask学习三:模型操作

ORM flask 通过Model操作数据库&#xff0c;不管你的数据库是MySQL还是Sqlite&#xff0c;flask自动帮你生成相应数据库类型的sql语句&#xff0c;所以不需要关注sql语句和类型&#xff0c;对数据的操作flask帮我们自动完成&#xff0c;只需要会写Model就可以了 flask使用对象关…

第十五章总结

一.输入/输出流 1.输入流 InputStrema类是字节输入流的抽象类&#xff0c;它是所有字节输入流的父类。 该类中所有方法遇到错误都会引发IOException异常。 read()方法&#xff1a;从输入流中读取数据的下一个字节。返回0~255的int字节值。如果因为已经到达流末尾而没有可用的…

【模块化】 js 模块化(CommonJS, AMD, UMD, CMD, ES6)

目录 js 的演变模块化1. CommonJS 规范commonJs伪代码⭐CommonJS优缺点 2. AMD 规范⭐AMD 优缺点 3. UMD 规范⭐UMD AMD CommonJS 4. CMD 规范⭐CMD 优缺点 5. ES6 模块化符号绑定⭐ESM 优缺点 AMD 和 CMD 的区别ES6 模块与 CommonJS 模块的差异参考 将介绍几种 js 模块化的规…

新能源汽车的“一池春水”,或许不再由价格战掀起波澜?

2005年12月15日&#xff0c;丰田普锐斯混合动力车进入中国&#xff0c;拉开了国内新能源汽车发展的序幕。18年后的今天&#xff0c;国产及进口的新能源汽车已经渗透我国超三分之一的乘用车市场&#xff0c;与油车二分天下的愿景渐趋实现。 今年11月&#xff0c;随着购车需求进…

轻量封装WebGPU渲染系统示例<50>- Json数据描述材质等场景信息

当前示例源码github地址: https://github.com/vilyLei/voxwebgpu/blob/feature/material/src/voxgpu/sample/DataDrivenScene2.ts 当前示例运行效果: 此示例基于此渲染系统实现&#xff0c;当前示例TypeScript源码如下: json场景数据: {"renderer": {"mtplE…

105基于matlab的阶次分析算法

基于matlab的阶次分析算法&#xff0c;用于变转速机械故障特征提取&#xff0c;可运行&#xff0c;包含寻找脉冲时刻&#xff0c;等角度时刻。数据可更换自己的&#xff0c;程序已调通&#xff0c;可直接运行。 105阶次分析变转速信号处理 (xiaohongshu.com)

云原生之深入解析亿级流量架构之服务限流思路与方法

一、限流思路 ① 熔断 系统在设计之初就把熔断措施考虑进去&#xff0c;当系统出现问题时&#xff0c;如果短时间内无法修复&#xff0c;系统要自动做出判断&#xff0c;开启熔断开关&#xff0c;拒绝流量访问&#xff0c;避免大流量对后端的过载请求。系统也应该能够动态监测…

【Vulnhub 靶场】【VulnCMS: 1】【简单】【20210613】

1、环境介绍 靶场介绍&#xff1a;https://www.vulnhub.com/entry/vulncms-1,710/ 靶场下载&#xff1a;https://download.vulnhub.com/vulncms/VulnCMS.ova 靶场难度&#xff1a;简单 发布日期&#xff1a;2021年06月13日 文件大小&#xff1a;1.4 GB 靶场作者&#xff1a;to…

GoogLeNet(pytorch)

亮点与创新&#xff1a; 1. 引入Inception基础结构 2. 引入PW维度变换卷积&#xff0c;启迪后续参数量的优化 3. 丢弃全连接层&#xff0c;使用平均池化层&#xff08;大大减少模型参数&#xff09; 4. 添加两个辅助分类器帮助训练&#xff08;避免梯度消失&#xff0c;用于…

NXP应用随记(五):eMios功能点阅读随记

目录 1、概念点 2、eMios功能点 2.1、eMIOS - Single Action Input Capture (SAIC) 2.2、eMIOS - Single Action Output Compare (SAOC) 2.3、eMIOS - Double Action Output Compare (DAOC) 2.4、eMIOS - Pulse/Edge Counting (PEC) – Single Shot 2.5、eMIOS - Pulse/E…

K8S(五)—命名空间与资源配额

目录 命名空间(Namespace)命令计算资源配额创建命名空间绑定一个ResourceQuota资源将命名空间和资源限制对象进行绑定尝试创建第二个 Pod查看ResourceQuota 绑定第二个ResourceQuota为命名空间配置默认的 CPU 、memory请求和限制&#xff08;1&#xff09;Pod 中所有容器都没有…

[Verilog] 设计方法和设计流程

主页&#xff1a; 元存储博客 文章目录 1. 设计方法2. 设计流程 3 Vivado软件设计流程总结 1. 设计方法 Verilog 的设计多采用自上而下的设计方法&#xff08;top-down&#xff09;。设计流程是指从一个项目开始从项目需求分析&#xff0c;架构设计&#xff0c;功能验证&#…

智能客服的应用——政务领域

#本文来源清华大学数据治理研究中心政务热线数智化发展报告 &#xff0c;如有侵权&#xff0c;请联系删除。 面对地方政务热线发展所面临的挑战&#xff0c;数智化转型已经成为了热线系统突破当前发展瓶颈、实现整体提质增效的关键手段。《意见》中也明确指出&#xff0c;政务…

ChatGPT4 Excel 高级复杂函数案例实践

案例需求: 需求中需要判断多个条件进行操作。 可以让ChatGPT来实现这样的操作。 Prompt:有一个表格B2单元格为入职日期,C2单元格为员工等级(A,B,C),D2单元格为满意度分数(1,2,3,4,5)请给入职一年以上,员工等级为A级并且满意度在3分以上的人发4000元奖金,给入…