Cookies Chrome扩展获取所有标签cookie

Cookies Chrome扩展获取所有标签cookie,cookies,google-chrome-extension,google-chrome-devtools,Cookies,Google Chrome Extension,Google Chrome Devtools,尝试使用chrome扩展从页面获取所有Cookie 例如,页面操作系统 这是我的密码: chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { var domain = getDomain(tabs[0].url); chrome.cookies.getAll({ domain: domain }, function(cookies) { consol

尝试使用chrome扩展从页面获取所有Cookie

例如,页面操作系统

这是我的密码:

chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
    var domain = getDomain(tabs[0].url);

    chrome.cookies.getAll({
        domain: domain
    }, function(cookies) {
        console.log(cookies);
    });

});
此代码将返回域ya.ru的所有cookie(8)。 但问题是,当我打开浏览器控制台时,我看到的不仅仅是ya.ru域的cookies:

谷歌和其他网站也存在同样的情况。所以我在一个页面上有多个域cookie。如何获取页面上的所有cookie


感谢您的时间。

Devtools显示页面()请求的所有资源URL的cookies,因此我们可以通过访问将在页面中执行的内容脚本代码来执行相同的操作:

chrome.tabs.executeScript({
代码:“performance.getEntriesByType(“resource”).map(e=>e.name)”,
},数据=>{
if(chrome.runtime.lastError | | | |!数据| |!数据[0])返回;
常量url=data[0].map(url=>url.split(/[#?]/)[0]);
const uniqueUrls=[…新集合(URL).values()]过滤器(布尔);
我保证(
uniqueUrls.map(url=>
新承诺(解决=>{
chrome.cookies.getAll({url},resolve);
})
)
)。然后(结果=>{
//将阵列阵列转换为经过重复数据消除的平面cookie阵列
常数cookies=[
…新地图(
[].concat(…结果)
.map(c=>[JSON.stringify(c),c])
).values()
];
//在这里做点饼干
console.log(唯一URL、cookie);
});
});
重要注意事项:

  • 您的manifest.json应该在
    权限“
    中有
    ,或者有一个明确的URL匹配模式列表,允许在chrome.cookies.getAll中得到相应的结果

  • 当存在数千个Cookie时,上面的Cookie重复数据消除代码可能会很慢

  • 我们正在读取URL的cookie,而不是域,因为这是为i.stack.imgur.com之类的东西获取包含cookie(imgur.com)的唯一可靠方法


要使用Cookie API,您必须在清单中声明“Cookie”权限,以及您要访问其Cookie的任何主机的主机权限。因此,您必须声明清单文件中您要读取其Cookie的所有域。抱歉,有时会出现奇怪的错误,也许您可以回答为什么?我已经修改了代码,所以当错误发生时它什么也不做。请注意,这个答案只从资源加载cookie。如果您的所有资源都是非主域(即CDN),那么您的主URL的Cookie将不会显示在结果中。将performance.getEntriesByType(“资源”)与performance.getEntriesByType(“导航”)或与getDomain()合并