You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何提取外部域名设置的Cookie信息并确认其来源域名?

提取外部脚本设置的Cookie并追踪来源

核心结论

Cookie本身的属性(比如domain、path)不会记录创建它的脚本来源域名(即你提到的domain B),但可以通过浏览器工具或主动监测的方式精准追踪到设置Cookie的脚本来源。


具体实现方法

1. 用浏览器开发者工具的Network面板追踪

  • 打开浏览器DevTools(快捷键F12/ Ctrl+Shift+I),切换到「Network」面板,勾选「Preserve log」(避免刷新后日志丢失)
  • 刷新页面,在Network面板的筛选栏输入domain B的域名,找到来自domain B的脚本请求
  • 查看该脚本的响应内容,确认是否包含document.cookie = ...这类设置Cookie的代码;同时可以切换到Network面板的「Cookies」标签,对比脚本加载前后的Cookie列表,找到新增的目标Cookie
  • 另外,Network面板的「Initiator」列会显示脚本的发起来源,可直接确认该脚本来自domain B

2. 用Performance面板定位设置Cookie的代码位置

  • 打开DevTools的「Performance」面板,点击录制按钮(圆形图标),然后刷新页面,页面加载完成后停止录制
  • 在搜索栏输入document.cookie,找到涉及设置Cookie的调用记录
  • 点击该记录查看调用栈,找到执行设置操作的脚本文件路径,确认其域名是否为domain B

3. 代码层面主动监测Cookie设置行为

  • 可以通过重写document.cookie的setter方法,监听所有Cookie设置操作,并捕获执行上下文的调用栈,从而拿到脚本来源:
    // 保存原生的cookie setter
    const originalCookieSetter = Object.getOwnPropertyDescriptor(document, 'cookie').set;
    // 重写setter
    Object.defineProperty(document, 'cookie', {
      set: function(cookieString) {
        // 生成调用栈,从中提取脚本来源
        const callStack = new Error().stack;
        console.log('Cookie已设置:', cookieString);
        console.log('设置来源调用栈:', callStack);
        // 调用原生setter完成Cookie设置
        return originalCookieSetter.call(this, cookieString);
      }
    });
    
  • 运行这段代码后,当domain B的脚本设置Cookie时,控制台会输出调用栈,其中包含该脚本的完整URL,直接提取domain B即可

补充说明

domain B的脚本能在domain A上设置Cookie,必须满足两个前提:

  • domain A和domain B属于父子域名关系(比如domain A是a.example.com,domain B是b.example.com)
  • 设置Cookie时指定了domain属性为domain A(或其上级公共域名),同时path属性符合浏览器的同源策略要求

内容的提问来源于stack exchange,提问作者FEDEV

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 08:07:13