返回全部文章
数据采集

什么是 HTTP Cookies 和 Web Storage?它们如何影响我的数据采集?

Cookies、localStorage 和 sessionStorage 决定了网站把你当成回头客还是陌生人。以下是处理它们的方法。

阅读约 6 分钟
分享
什么是 HTTP Cookies 和 Web Storage?它们如何影响我的数据采集?

状态存在的三个地方

Cookies 是服务器设置、浏览器在每次匹配的请求中都会带上的小型键值对。它们承载着会话信息、同意标志和反机器人令牌。

localStorage 会一直保存在浏览器中直到被清除,且不会被自动发送——需要 JavaScript 主动读取并将其值放入请求中。

sessionStorage 工作方式相同,但会随着标签页关闭而消失。

如果你的采集程序只处理 cookies,那你复现的大约只是真实浏览器所携带信息的三分之一。

为什么这会导致采集失败

许多网站会在首次访问时下发一个令牌,期望在第二次请求时收到它,如果缺失就悄悄返回一个不同的页面。同意横幅会设置一个解锁真实内容的 cookie。反机器人层会把挑战结果写入存储,稍后再进行检查。把这些统统去掉,你得到的页面在响应体里看起来完全正常,却不包含任何数据。

Cookies 与代理轮换

这是大家最容易搞错的地方。在网站眼中,一个会话 cookie 是与接收它的那个 IP 绑定的。如果下一次请求就换了 IP,你看起来就像是盗用了别人的会话——而这恰恰是反欺诈系统重点排查的模式。规则很简单:一个身份对应一个出口 IP。在 cookie jar 存活期间保持粘性会话,并且两者要同时重置。

一种可行的模式

  1. 每个 worker 建立一个全新的 cookie jar,而不是每个请求都新建。
  2. 将该 worker 固定绑定到一个粘性代理会话上。
  3. 让网站随意设置它想要的内容;把所有内容都存下来,如果你在跑真实浏览器,也要包含存储中的值。
  4. 任务结束或会话过期时,丢弃该 cookie jar,并在同一时刻轮换 IP。

何时该用真实浏览器

如果一个网站严重依赖 localStorage 或运行了 JavaScript 挑战,HTTP 客户端将永远慢半拍。用 Playwright 或 Puppeteer 驱动的无头 Chrome,配合一个粘性住宅会话,虽然单页速度更慢,却能在原始请求循环反复碰壁的地方成功拿到数据。

亲自试试

60 秒内跑通你的第一个会话。

使用 Google 注册即赠 250 MB 流量,无需绑定信用卡。覆盖 195+ 个国家的真实住宅与移动 IP。