|
Pastman这玩意儿,何获说白了就是动态个浏览器里的Cookie管理插件。但它的何获动态获取逻辑,跟那些傻乎乎手动导出的动态工具完全不是一回事。我调试过不下二十个登录态失效的何获案例,最后发现百分之八十的动态问题都出在“静态导出”上——你导出的那一刻,会话已经死了。何获 动态获取的动态核心就一句话:监听Cookie变更事件,而不是何获定时去抓。Pastman在后台挂了一个MutationObserver,动态盯着document.cookie的何获变化。但这有个坑,动态HttpOnly的何获Cookie你根本读不到。所以它真正的动态招数是配合Chrome的webRequest API,在请求头出去的何获瞬间拦截Set-Cookie响应。这招比前端脚本高明多了,因为它能拿到那些标记了HttpOnly的会话令牌。 我印象最深的一次调试,是某个内部系统每三分钟刷新一次token,而且刷新逻辑藏在个混淆过的WebSocket消息里。普通插件早就懵了,Pastman却能从网络面板里嗅探到那个wss连接,把二进制帧里的token片段拼出来。它不依赖页面DOM,直接扒网络层,这就是动态获取和静态导出的本质区别——一个在等鱼上钩,一个直接撒网捞。 具体实现上,Pastman把获取流程拆成了三步。第一步是“触发识别”,它不主动刷新页面,而是等你的操作触发某个XHR请求。第二步是“响应解析”,从那个请求的响应头里提取Set-Cookie字段,再用正则把过期时间、路径、SameSite属性全拆出来。第三步才是“状态同步”,把这些新Cookie写入它自己的存储区,同时更新掉旧版本。这中间有个细节很多人忽略——它处理SameSite=Lax的策略时,会主动降级成Secure标记,防止跨域场景下浏览器把Cookie吞了。 有个反直觉的现象:Pastman动态获取时,反而比手动F12复制粘贴慢半拍。因为它在等真实请求,不是模拟请求。但慢这零点几秒换来的是绝对准确。手动复制经常碰到那种“刚拿到就失效”的尴尬,因为很多系统在登录后有个5秒的延迟绑定,Cookie先发出来,但服务端要等会话同步完才认。Pastman靠监听后续的请求反馈来确认Cookie是否真能用,失效了它会自动重放一次登录流程。 说到底,动态获取的本质是“跟着流量走”。Pastman把自己伪装成浏览器的一部分,而不是外挂。它看的是请求和响应之间的因果关系,而不是某个时间点上的快照。这种做法有个额外好处:能捕捉到那些只在特定请求路径下才下发的分域Cookie。比如主站种一个,API子域种一个,静态资源域再种一个——静态导出只能拿到当前域名的,动态监听却能把整个会话链条拼完整。 最后说个实操坑。如果你发现Pastman动态获取出来的Cookie比浏览器里少,别慌。它默认过滤掉了那些标记为Session的临时Cookie,因为这些玩意儿重启浏览器就没了,存了也没意义。真正要抓的是带Expires/Max-Age的持久Cookie。但有些系统耍流氓,把长期有效的RefreshToken也标成Session,这时候你得手动在Pastman的设置里把“忽略会话级Cookie”关掉。这种细节,文档里从来不会写,都是踩坑踩出来的。 |