浏览器开发者工具按F12,工具点开Network面板,工具刷新页面,工具随便点开一个请求,工具找到Cookie那一栏,工具复制粘贴——这套动作我闭着眼都能做完。工具但要是工具目标站点上了HttpOnly,你就只能看着cookie栏里一片空白,工具像盯着关掉的工具保险柜。
于是工具有人写工具。Python的工具requests库加个session对象,模拟登录,工具把cookie存成dict,工具再带着去访问受保护页面——这是工具最原始的玩法。稍微讲究点的工具,用selenium驱动真实浏览器,等页面完全加载完,再执行一段JavaScript把document.cookie抠出来。可HttpOnly的cookie依然拿不到,除非你黑进浏览器进程内存——那已经不是工具范畴,是犯罪范畴了。
我见过最野的获取方式,是在公共WiFi上搭个伪造热点。受害者连上来,你直接改DNS,把目标域名解析到自己的服务器,然后原样转发请求,顺手把cookie抄一份。全程零接触,受害者毫无感知。这种工具不叫“cookie获取工具”,叫“中间人攻击套件”,但原理上,它就是干这个的。
正经开发场景里,cookie获取工具更多是调试用的。我写爬虫时最烦的就是登录态过期,每半小时要手动去浏览器里复制一次cookie。后来写了个小脚本,监听Chrome的Cookies数据库文件——注意,Chrome现在加密了cookie,Windows下用DPAPI,Mac下用Keychain,你得先解密才能读。GitHub上有个叫chrome-cookies-secure的项目,封装好了这些操作,一条命令就能导出指定域名的cookie。好用是好用,但每次跑起来,杀毒软件都要弹窗警告,像在说“我知道你在偷东西”。
有个细节很多人忽略:cookie获取工具的价值不在“获取”,在“保鲜”。服务器端的session过期策略五花八门,有的15分钟,有的7天,有的看最后一次活跃时间。你费劲拿到的cookie,可能十分钟后就成废纸。所以稍微靠谱点的工具都得带自动刷新机制——定个定时器,周期性地重新登录,更新cookie池。我见过一个商业爬虫框架,光cookie管理模块就占了整个代码库的三分之一,里面全是处理各种奇葩过期策略的补丁。
最讽刺的是,cookie本身就是为了“记住你”而生的,现在却成了最容易被盗的身份凭证。你在网吧登录网银,走的时候忘了点退出,下一个人用同一个浏览器打开同一个页面,直接就是你的账户——根本不需要什么工具。真正的安全漏洞从来不在技术层,而在人的惰性里。
最后说个我自己的习惯。写工具归写工具,测试时我永远用自己搭的本地站点,往cookie里塞一串“test=hello”就算完事。真要去碰别人的cookie,先想想你愿不愿意别人这么对你——这话听着像说教,但干这行越久,越觉得技术能力跟道德约束得成正比,不然迟早翻车。