why

更有价值的数据,往往都是付费的,或者需要注册成会员才可以查看少量数据。
针对于电商、泛娱乐等网站数据,想要抓取一些公开数据,都需要准备好网站会员。
对于想抓取这类网站的大量数据做研究用,都需要准备很多的账号,每个账号规划一些目标数据进行抓取操作。
这个时候,Cookie池就有非常大的优势。

Cookie池的优势:

  1. 海量账号信息,都可以很方便的维护。
  2. Cookie池提供接口,供爬虫以账号身份进行请求操作。
  3. 实时的统计和记录账号的使用情况。

    what

    来源

    HTTP的历史中,有一个很有意思的特定,是无状态
    当初制定HTTP协议,就是为了方便易用,满足网络传输协议,一开始也就没考虑最初的访问身份,毕竟当初玩互联网的人也少。
    早期互联网只是用于简单的浏览文档信息、查看黄叶、门户网站等等,并没有交互这个说法。
    但是随着互联网慢慢发展,宽带、服务器等硬件设施已经得到很大的提升,互联网允许人们可以做更多的事情,所以交互式Web慢慢兴起,而HTTP无状态的特点却严重阻碍其发展!
    发现缺点肯定要去解决的。
    最开始的交互,局限于表单数据的提交,表单可以有很多个输入框,且HTML支持隐藏输入框,不显示出来。
    最初的解决方案,是将需要记录的信息,放到表单的隐藏的输入框中,也叫作隐藏域
    不过呢,每次访问页面,都得提交一段表单上去,还是非常麻烦的,而且表单的赋值,在后端逻辑层面和前端页面都得处理,那就更烦了。
    那个时候,最强的浏览器还是网景浏览器,所属公司是网景公司,而网景公司当时一名员工Lou Montulli(卢-蒙特利),在1994年将“cookies”的概念应用于网络通信,用来解决用户网上购物的购物车历史记录。
    PS:果然,购物网站是刚需,推动了技术的发展。
    在网景浏览器的支持下其他浏览器也渐渐开始支持Cookie,到目前所有浏览器都支持Cookie了。

    Cookie的原理

    先来看一个POST请求包的结构:
    image.png

在Cookie技术出来之前,身份字段的信息,是放在报文体中的,每次提交数据时,把字段信息带上。
因为每次提交数据,都是POST提交表单,就变得非常的麻烦。
而且GET请求,除了报文体之外,其他的都有。
Cookie出来后,Get请求和Post请求,都可以携带身份字段信息了,是因为Cookie字段信息,存放在了报文头里面。
Cookie只有在身份验证成功下,才会生成一个身份字段信息。也就是登录成功后,服务器会给浏览器一个Cookie值,让浏览器每次访问的时候,都把这个Cookie值放报文体【请求头】上。
每次服务器看到请求头中带有Cookie字段信息,就知道这个是哪个账户发过来的请求信息。

Cookie的工作原理如下:
image.png

Cookie的重要性

Cookie是一个非常重要的信息,因为它可以保留非常多的信息,而且可以保留很久。
每个请求头中,都会有一个Cookie字段,里面放着很多对信息,每一对信息的结构是 x=x,对与对之间,用分号和空格隔开,如下示例:

  1. 'Cookie': 'a=1; b=2; c=3; ......; z=26;'

Cookie重要性在于它的作用,Cookie主要用于以下三个方面:

  • 会话状态管理(如用户登录状态、购物车、游戏分数或其它需要记录的信息)
  • 个性化设置(如用户自定义设置、主题等)
  • 浏览器行为跟踪(如跟踪分析用户行为等

这里包含着几乎我们用到的所有场景,简单举例:

  1. 登录,这个是最常见的,Cookie记录登录后的状态
  2. 淘宝,例如优选商品,永远是你搜索过的相关产品
  3. 搜索引擎,广告位置肯定是你N天前搜索过的相关内容
  4. 产品主页,根据你浏览商品页面的停留时长,打电话为你推送你看过的产品

Cookie的使用场景太多了,还有就是不同产品的信息合作,你在百度搜索了某某商品,你打开知乎、B站或者抖音,直接弹出相应的产品,推送给你。

总结

Cookie的主要内容就是记录信息,方便服务器查看你的身份,或者你的兴趣爱好。
爬虫由于涉及到身份状态,对于Cookie的了解,在后面的课程当中,也会逐步深入,了解Cookie的各种属性,以及维护方法。