# 防止 Cookie 失效的常用方法

在爬虫的时候,有时候需要用到 Cookie 去网站爬取一些数据,Cookie 不失效当然是最开心的,但常常会遇到 Cookie 失效导致爬取失败,大概有以下常用方法可供参考:

  • 直接用帐号密码登录获取最新 Cookie。 有一些网站的 Cookie 每隔一段时间必定失效,这时候通常只能通过帐号密码获取最新 Cookie,但是一般都会遇到验证码,所以破解验证码也是需要考虑的。

  • 对 Cookie 进行改造。 有一些网站的 Cookie 里包含了有效期字段,那么可以把有效期字段删除或更改到无限长,则可以让 Cookie 不过期。此外,一般 Cookie 也只会与几个关键字段有关,所以可以只留下关键字段,把无关字段删除,也是不会影响 Cookie 的有效期的。

  • 采用心跳包机制。 有一些网站刷新了页面可以让 Cookie 不失效,实质是刷新了 Cookie 的过期时间,所以,可以每隔一段时间发起一下请求,激活一下,这样就可以不断刷新 Cookie 的过期时间。

  • 发起某些能返回最新 Cookie 的请求。 有一些网站刷新了页面也可以让 Cookie 不失效,但它与心跳包机制不同,它是在 Cookie 失效的时候会发起一系列请求来刷新 Cookie,这时候通常会返回最新的 Cookie 回来,所以,可以通过浏览器的 F12 或者抓包工具来找到这些请求,在需要最新 Cookie 的时候发起这些请求来获取。

  • 使用无头浏览器。 使用传统的模拟请求的方法可能会存在可维护性低的问题,所以可以直接用无头浏览器(PhantomJS、Nightmare)来模拟真实用户行为暴力解决。

  • 使用真实浏览器。 如果连无头浏览器都无法解决的话,那么可以直接使用真实浏览器(Google Chrome Extensions)来巧妙解决。