打开浏览器开发者工具(F12),网页切到Network标签,网页刷新页面,网页随便点一个请求,网页在Headers面板里往下拉,网页你会看到一串像 sessionid=abc123; user_token=xyz789 这样的网页东西。那就是网页cookies,服务器塞给你的网页身份凭证。就这么简单。网页
但你要是网页以为抓包复制粘贴就完事了,那可就太天真了。网页我见过太多人栽在细节上——比如某个cookie带了个 HttpOnly 标记,网页你用JavaScript的网页 document.cookie 根本读不到它。这时候得靠开发者工具或者浏览器插件硬取。网页还有的网页cookie设了 SameSite=Lax,跨域请求时直接被浏览器拦掉,你代码里手动带上反而触发反爬。
说个我自己的例子。去年帮朋友写个自动签到脚本,目标站点登录后生成三个cookie,其中一个叫 csrf_token,每次请求都要动态刷新。我一开始傻乎乎地固定写死在代码里,结果第二天就失效了。后来改成登录后先抓首页,从返回的HTML里正则提取那个token,再拼到cookie串里,这才稳定跑了一个月。
获取cookies的路径其实分三条。第一条是浏览器开发者工具,适合手动调试和快速验证。第二条是写代码模拟登录,用requests或axios发POST请求,带上用户名密码,服务器返回的 Set-Cookie 响应头里就有你要的东西。Python里这样写:
import requests session = requests.Session() resp = session.post('https://example.com/login', data={ 'user': 'me', 'pass': '123'}) print(session.cookies.get_dict()) 第三条最冷门但也最实用——直接用headless浏览器(比如Playwright或Puppeteer)打开页面,等它跑完JS,再调用 context.cookies() 方法全量导出。这招对付那些先加载JS再种cookie的现代网站特别管用。普通HTTP客户端模拟不了的动态加密流程,headless浏览器全帮你扛了。
有一点必须提醒你:cookie是有生命周期的。有些是会话级,关浏览器就没了;有些带 Expires 字段,能活几个月。你抓的时候得看清 Expires 或 Max-Age 的值,不然过两天脚本突然报401,你还在那傻乎乎排查代码逻辑,其实只是cookie过期了。
还有个小坑——域名和路径。cookie的 Domain 属性决定了它发给谁。你从 www.example.com 抓到的cookie,不一定能用在 api.example.com 上。真要跨子域用,得手动修改cookie的domain字段,或者干脆用 requests.Session 统一管理,让它自动处理。
最后说句掏心窝的话。别为了拿cookie去搞什么“自动登录”就乱存用户密码,更别拿别人账号的cookie乱来。这玩意儿就跟钥匙一样,能开门,也能开别人的门。技术本身没对错,但用的人得有点数。我自己写脚本都只碰自己有权限的账号,不然哪天被安全团队找上门,哭都来不及。