获取与当前标签相关的所有Cookie

 lanshan1126141 发布于 2023-02-05 11:06

我现在一直在尝试各种各样的事情,但无法让它发挥作用.我想要所有与当前标签相关的cookie(也就是那些在不同域上的那些,例如google).以下仅为我提供了与标签域匹配的内容.设置getAll({})为我提供了与访问过的任何页面相关的所有cookie.

document.addEventListener('DOMContentLoaded', function () {
  var cookies2=[];
  chrome.tabs.query({currentWindow:true,active:true},function(tab) {
      console.log(tab[0]);
      chrome.cookies.getAll({url:tab[0].url},function(cookies) {
        for (var i in cookies) {
            console.log(cookies[i].domain,cookies[i].path,cookies[i].name);
        }
      });
    });

});

Rob W.. 6

"与当前标签相关的所有Cookie"究竟是什么意思?

通过网络加载的任何资源都可以与cookie相关联.如果您只想获取选项卡中所有帧的cookie,请使用该chrome.webNavigation.getAllFrames方法获取与选项卡关联的URL列表.这是获取所有cookie的一种非常天真的方法.

chrome.tabs.query({
    currentWindow: true,
    active: true
}, function(tabs) {
    chrome.webNavigation.getAllFrames({
        tabId: tabs[0].id
    }, function(details) {
        // Get unique list of URLs
        var urls = details.reduce(function(urls, frame) {
            if (urls.indexOf(frame.url) === -1)
                urls.push(frame.url);
            return urls;
        }, []);
        // Get all cookies
        var index = 0;
        var cookies = [];
        urls.forEach(function(url) {
            chrome.cookies.getAll({
                url: url
            }, function(additionalCookies) {
                cookies = cookies.concat(additionalCookies);
                if (++index === urls.length) {
                    // Collected all cookies!
                    // TODO: Use cookies.
                    // Note: The array may contain duplicate cookies!
                }
            }); // chrome.cookies.getAll
        }); // urls.forEach
    }); // chrome.webNavigation.getAllFrames
}); // chrome.tabs.query

以前的方法是幼稚的,因为得到的饼干阵列可能包含重复的条目(例如,如果页面包含http://example.comhttp://example.com/index.htm,然后你会得到一个cookie的两个条目.example.com).
有许多方法可以在JavaScript数组中过滤重复项,您可以在此问题中看到一些方法.

如果您希望逐字地获取与选项卡关联的所有cookie,则需要使用chrome.webRequestAPI 收集它们.使用webRequest事件来检测网络请求以及Cookie请求标头Set-CookieSet-Cookie2响应标头.您必须手动解析cookie.

如果您想快速查看与选项卡关联的所有cookie(仅限框架,如第一种方法),您还可以打开开发人员工具并查看参考资料 - > Cookies).

(图片来源:https://developers.google.com/chrome-developer-tools/docs/resources)

1 个回答
  • "与当前标签相关的所有Cookie"究竟是什么意思?

    通过网络加载的任何资源都可以与cookie相关联.如果您只想获取选项卡中所有帧的cookie,请使用该chrome.webNavigation.getAllFrames方法获取与选项卡关联的URL列表.这是获取所有cookie的一种非常天真的方法.

    chrome.tabs.query({
        currentWindow: true,
        active: true
    }, function(tabs) {
        chrome.webNavigation.getAllFrames({
            tabId: tabs[0].id
        }, function(details) {
            // Get unique list of URLs
            var urls = details.reduce(function(urls, frame) {
                if (urls.indexOf(frame.url) === -1)
                    urls.push(frame.url);
                return urls;
            }, []);
            // Get all cookies
            var index = 0;
            var cookies = [];
            urls.forEach(function(url) {
                chrome.cookies.getAll({
                    url: url
                }, function(additionalCookies) {
                    cookies = cookies.concat(additionalCookies);
                    if (++index === urls.length) {
                        // Collected all cookies!
                        // TODO: Use cookies.
                        // Note: The array may contain duplicate cookies!
                    }
                }); // chrome.cookies.getAll
            }); // urls.forEach
        }); // chrome.webNavigation.getAllFrames
    }); // chrome.tabs.query
    

    以前的方法是幼稚的,因为得到的饼干阵列可能包含重复的条目(例如,如果页面包含http://example.comhttp://example.com/index.htm,然后你会得到一个cookie的两个条目.example.com).
    有许多方法可以在JavaScript数组中过滤重复项,您可以在此问题中看到一些方法.

    如果您希望逐字地获取与选项卡关联的所有cookie,则需要使用chrome.webRequestAPI 收集它们.使用webRequest事件来检测网络请求以及Cookie请求标头Set-CookieSet-Cookie2响应标头.您必须手动解析cookie.

    如果您想快速查看与选项卡关联的所有cookie(仅限框架,如第一种方法),您还可以打开开发人员工具并查看参考资料 - > Cookies).

    (图片来源:https://developers.google.com/chrome-developer-tools/docs/resources)

    2023-02-05 11:09 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有