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. Vim - 基础教程
  7. 黄鼠狼偷蛋
  8. 挥斧如风
  9. 海口市琼山区童星艺术幼儿园 - 海南省幼儿园黄页
  10. 图像处理工具ImageMagick - 灰度化和二值化
  11. 沈阳市第十九中学
  12. 广州市白云区苗茵幼儿园 - 广州幼儿园黄页
  13. 定州市花张蒙中学
  14. 武汉一女子七天被骗220万
  15. 开心幼儿园 - 成都市幼儿园黄页
  16. 武汉00后大二学妹拍视频月入七十万
  17. 事发武汉农夫山泉矿泉水内惊现大量虫卵
  18. 妄发议论的狐狸
  19. 北京市通州区马驹桥镇小张湾村幼儿园 - 北京幼儿园黄页
  20. 哈尔滨市道外区小哈尼幼儿园 - 哈尔滨幼儿园黄页
  21. 三个军医
  22. 奥迪客户不满加价,被武汉4S店销售群殴
  23. 易中天给英雄武汉的一首诗 - 武汉新鲜事
  24. Python公开课 - 爬虫介绍
  25. 清流县田源初级中学
  26. 难过的弗洛格
  27. 华中科技大学附属小学
  28. Ubuntu安装X11VNC实现远程可视化桌面简明教程
  29. 韶关市乐昌市中英文学校
  30. 6个月以内的婴儿要不要喝水 - 育儿经验
  31. 沈阳市铁路第五小学
  32. 武汉推出越王勾践剑交通卡
  33. 南宁市第三中学
  34. 郑州市郑东新区外国语学校小学部
  35. 武汉女子网上做兼职被骗六十五万
  36. 快乐的藤架
  37. 上海市虹口区密云幼儿园曲阳部 - 上海幼儿园黄页
  38. 新泰市向阳实验学校
  39. 福州市第四中学
  40. 婴儿刚洗完澡能吃奶吗 - 育儿经验
  41. 佛山市逢沙小学
  42. 憋不住话的乌龟
  43. python3.5升级python3.6后出现 No module named apt_pkg 异常
  44. OpenJDK与Oracle JDK的区别
  45. 济南章丘市汇泉小学
  46. 青藤城堡
  47. 上海市杨思中学
  48. 脱单!武汉的相亲角在哪你知道吗?
  49. Python公开课 - 基础数据类型
  50. 天津市蓟县七彩阳光幼儿园 - 天津幼儿园黄页
  51. 唐山市第二十六中学
  52. 长春市二道区童乐双语幼儿园(长春市二道区民政局婚姻登记处东北) - 长春幼儿园黄页
  53. 央媒聚焦!国庆假期173.78万人次打卡大美黄陂
  54. 湖北将发放消费券 - 武汉新鲜事
  55. Ads.txt是什么
  56. 技术破解钉钉打卡考勤 - 苹果手机专用完整解决方案
  57. 汕头市汕樟中学
  58. 名人故事:丘吉尔和弗莱明
  59. 韶关市乐昌市九峰镇浆源小学
  60. Python公开课 - 标准库Decimal详解