Python公开课 - 爬虫之session和cookies

前言

在浏览网站的过程中,我们经常会遇到需要登录的情况,有些页面只有登录之后才可以访问 ,而且登录之后可以连续访问很多次网站,但是有时候过一段时间就需要重新登录。

还有一些网站,在打开浏览器时就自动登录了,而且很长时间都不会失效。

这其中的原理就涉及到session和cookie。

页面类型

一般来说对于登录,静态页面和动态页面都可以实现,但是它们也有区别。

静态页面

静态页面如之前章节所阐述,依赖html和css就可以实现。它加载速度快,编写简单,但是存在很大的缺陷,如可维护性差,不能根据URL灵活多变地显示内容等。

静态页面实现登录,主要依赖get/post请求,和页面跳转来完成。

动态页面

动态页面可以动态解析URL 中参数的变化,并根据这些参数动态呈现不同的页面内容,非常灵活。

目前绝大多数网站都是动态网站,它们不再是一个简单的 HTML,并给用户展现丰富的功能。

动态页面登录的实现相比静态页面更加灵活,可以通过ajax等方式来完成。

HTTP没有状态

HTTP的无状态是指 HTTP 协议对事务处理是没有存下来的,也就是说服务器不知道客户端是 什么状态。

当客户端向服务器发送请求后,服务器根据这个请求并做出响应。

服务器负责完成这个过程,而且这个过程是完全独立的,服务器不会记录前后状态的变化,也就是缺少状态记录。

这时就需要通过session和cookies来维持http的连接状态了。

session和cookie

session存在服务端,也就是网站的服务器,用来保存用户的会话信息; cookies存在客户端,作为客户端的识别id, 辨别身份。

会话维持

当客户端第一次请求服务器时,服务器会返回一个请求头中带有 Set-Cookie 字段的响应给客户端,用来标记是哪一个用户。

客户端浏览器会把 Cookies 保存起来。 当浏览器下一次再请求该网站时,浏览器会把此 Cookies 自动放到请求头一起提交给服务器。

cookies 携带了会话ID信息,服务器检查该 Cookies 即可找到对应的会话是什么,然后再判断会话来以此来辨认用户状态。

以登录来举例,如果用户未登录,则会话中的会存放一个未登录的状态,而登录成功,则该会话状态置位为已登录,用户登出后,该会话则置位为已登出状态。

cookies和session通过配合,一个处于客户端,一个处于服务端,二者共同协作,就实现了登录会话控制。

Cookies属性

  • Name - 该Cookie的名称。一旦创建,该名称便不可更改。
  • Value - 该 Cookie 的值。 如果值为 Unicode字符,需要为字符编码。 如果值为二进制数据,则 需要使用 BASE64 编码。
  • Domain - 可以访问该Cookie的域名
  • Max Age - 该 Cookie失效的时间,单位为秒
  • Path - 该 Cookie 的使用路径。
  • Size - 此 Cookie 的大小。
  • HTTP - Cookie 的 httponly 属性。 若此属性为 true ,则只有在 HTTP 头中会带有此 Cookie 的信息,而不能通过 document.cookie 来访问
  • Secure - 该 Cookie 是否仅被使用安全协议传输。 安全协议有 HTTPS 和 SSL 等,在网络上传 输数据之前先将数据加密。 默认为 false

小结

做web服务端开发的同学一般对session和cookies比较了解,但是对于爬虫来说,反向理解这些概念也非常重要。

相关阅读


相关推荐
  1. 南京市雨花台区灵动之星幼儿园 - 南京幼儿园黄页
  2. 鄱阳县枧田街乡珠田小学
  3. 众泰造车的沉浮
  4. 武汉动物园火烈鸟孔雀排队打疫苗
  5. 郑州金山桥学校
  6. 沙河口区西南路小学
  7. 新生儿先心病的症状 - 婴幼儿疾病百科
  8. 甜甜变成糊涂涂
  9. 辽宁省沈阳市于洪区淘气堡益智乐园 - 沈阳幼儿园黄页
  10. 乌龟的奖牌
  11. Python之机器学习入门
  12. 江门市会城梅江小学
  13. 百名网媒总编辑登上知音号欣赏武汉夜色
  14. 宝宝上颚发黄什么原因 - 育儿经验
  15. Python公开课 - 标准库Decimal详解
  16. 如火如荼
  17. 奥迪客户不满加价,被武汉4S店销售群殴
  18. 大连市甘井子区井西幼儿园 - 大连幼儿园黄页
  19. 天津师范大学第二附属小学(师大二附小)
  20. Python公开课 - 为什么选择Python
  21. 警方通报:武汉男子持刀至五死一伤,嫌犯已跳桥
  22. 脱单!武汉的相亲角在哪你知道吗?
  23. OpenJDK与Oracle JDK的区别
  24. 小兔彼得的故事
  25. Python公开课 - 爬虫识别滑动验证码
  26. 抓包工具Charles安装及使用
  27. 留得青山在,不怕没柴烧
  28. 金色摇篮幼儿园 - 石家庄幼儿园黄页
  29. Python基础教程 - 从零开始学Python
  30. 金城关回民小学
  31. 如何在Django项目中优雅的实现markdown和代码高亮
  32. 郑州先锋外国语学校
  33. 长颈鹿看病
  34. 尾巴国游记
  35. 七天新生儿一次睡多久 - 育儿经验
  36. 武汉女子网上做兼职被骗六十五万
  37. 广州市大沙头小学
  38. 呼兰区长岭镇平房小学校
  39. 滕州市荆河办金城小学
  40. 倔强的驴子
  41. 事发武汉农夫山泉矿泉水内惊现大量虫卵
  42. 柳州市柳南区伊莹幼儿园 - 柳州市幼儿园黄页
  43. 谁是孩子的真正母亲
  44. 昆明市嵩明县康乐贝幼儿园寺脚分园 - 昆明市幼儿园黄页
  45. 湖北将发放消费券 - 武汉新鲜事
  46. 武汉一女子七天被骗220万
  47. 银娘娘
  48. Python公开课 - 正则表达式
  49. 上海市虹口区西街幼儿园 - 上海幼儿园黄页
  50. 武汉00后大二学妹拍视频月入七十万