首页IT科技cookie 和 session的区别(Python爬虫学习:Cookie 和 Session 的区别是什么?)

cookie 和 session的区别(Python爬虫学习:Cookie 和 Session 的区别是什么?)

时间2025-06-16 12:46:49分类IT科技浏览4684
导读:一、 含义 Cookie意为“甜饼”,是由W3C组织提出,最早由Netscape社区发展的一种机制。目前Cookie已经成为标准,所有的主流浏览器如IE、Netscape、Firefox、Opera等都支持Cookie。...

一            、 含义

Cookie意为“甜饼               ”            ,是由W3C组织提出                     ,最早由Netscape社区发展的一种机制               。目前Cookie已经成为标准      ,所有的主流浏览器如IE                     、Netscape      、Firefox         、Opera等都支持Cookie                  。

由于HTTP是一种无状态的协议         ,服务器单从网络连接上无从知道客户身份                     ,怎么办呢?就给客户端们颁发一个通行证吧          ,每人一个      ,无论谁访问都必须携带自己通行证      。这样服务器就能从通行证上确认客户身份了                    ,这就是Cookie的工作原理            。

Cookie实际上是一小段的文本信息                   。客户端请求服务器              ,如果服务器需要记录该用户状态   ,就使用response向客户端浏览器颁发一个Cookie                   ,客户端浏览器会把Cookie保存起来         。当浏览器再请求该网站时                  ,浏览器把请求的网址连同该Cookie一同提交给服务器        。服务器检查该Cookie,以此来辨认用户状态                    。所以Cookie是客户端技术            。

Session可以理解为一个抽象概念               ,即会话                     ,会话用于记录一个用户在我们网站上的一些行为                     、一些状态   ,可以理解为一个上下文            ,这些用户状态可以利用Cookie中的Session ID来标识    。

在另外的一些语境下                     ,Session又可以指在后台保存用户状态来实现会话的方式      ,它把用户状态存储在后台的内存          、数据库等介质中         ,然后我们利用请求的Cookie中保存的Session ID来为这个请求找到它对应的会话                     。

Session是服务器端技术                     ,服务器在运行时可以为每一个用户的浏览器创建一个其独享的Session对象          ,由于Session为用户浏览器独享      ,所以用户在访问服务器的web资源时                    ,可以把各自的数据放在各自的Session中              ,当用户再去访问服务器中的其它web资源时   ,其它web资源再从用户各自的Session中取出数据为用户服务               。

二      、有效时长:

Cookie的maxAge决定着Cookie的有效期                   ,单位为秒。

如果maxAge属性为正数                  ,则表示该Cookie会在maxAge秒之后自动失效                  。浏览器会将maxAge为正数的Cookie持久化,即写到对应的Cookie文件中                  。无论客户关闭了浏览器还是电脑               ,只要还在maxAge秒之前                     ,登录网站时该Cookie仍然有效   。下面代码中的Cookie信息将永远有效               。

如果maxAge为负数   ,则表示该Cookie仅在本浏览器窗口以及本窗口打开的子窗口内有效            ,关闭窗口后该Cookie即失效                  。maxAge为负数的Cookie                     ,为临时性Cookie      ,不会被持久化         ,不会被写到Cookie文件中      。Cookie信息保存在浏览器内存中                     ,因此关闭浏览器该Cookie就消失了            。Cookie默认的maxAge值为–1                   。

如果maxAge为0          ,则表示删除该Cookie         。Cookie机制没有提供删除Cookie的方法      ,因此通过设置该Cookie即时失效实现删除Cookie的效果        。失效的Cookie会被浏览器从Cookie文件或者内存中删除                    。

由于会有越来越多的用户访问服务器                    ,因此Session也会越来越多            。为防止内存溢出              ,服务器会把长时间内没有活跃的Session从内存删除    。这个时间就是Session的超时时间                     。如果超过了超时时间没访问过服务器   ,Session就自动失效了               。

三                    、面试中可能会遇到的问题点

Session 在服务器端                   ,Cookie 在客户端(浏览器) Session 默认被存在在服务器的一个文件里(不是内存) Session 的运行依赖 Session id                  ,而 Session id 是存在 Cookie 中的,也就是说               ,如果浏览器禁用了 Cookie                      ,同时 Session 也会失效(但是可以通过其它方式实现   ,比如在 url 中传递 Session_id) Session 可以放在 文件              、数据库   、或内存中都可以。 Cookie具有不可跨域名性

四                   、在反爬技术中的应用

在一些网站中            ,需要用户以个人信息登陆上去才能看到更多的信息                  。如果利用爬虫程序模拟人登陆的行为                     ,主要有以下三种:

代码里通过request.post里的参数data中      ,包含自己的用户名和密码         ,但是这样及其不安全

访问页面的时候打开开发者工具                     ,从header是中找到cookie并复制          ,写到python脚本里的headers中                  。这种方法的问题就是上文提到了Cookie是有时效性的      ,这种方法需要手动替换比较麻烦                    ,也不推荐   。

通过session方法              ,后续使用类比于request.get                   、request.post 等               。最推荐的一种方法   ,代码如下:

data = { "name": "填写用户名", "passwd": "填写登陆密码" } # python学习交流群:711312441 # 通过session模拟登录                   ,每次请求带着session s = requests.Session() f = s.post(url, data=data, headers=headers)

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
缩略图查看器thumbs.db viewer(解决DedeCMS使用中缩略图变形的问题(改配置文件或自定义尺寸缩略图)) 网上写文章怎么赚钱?哪些平台可以写文章赚钱?(如何把写的文章赚钱-网上写文章投稿月入8000的赚钱攻略)