浏览器扩展可以读取网站的 cookie 吗?

Can a browser extension read a website's cookie?

我正在创建如下所示的 cookie。我知道 website A can't read a cookie from website B,但我想知道是否有插件可以这样做?我有一个浏览器 extension/plugin,它具有极简界面并提供登录功能,但它有一个 转到仪表板 link,我不想用户再次登录。然后他们将不得不再次注销。如果这不可能,我还有什么其他选择

function create_cookie(name, value, days) {
    var expires;

    if (days) {
        var date = new Date();
        date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
        expires = "; expires=" + date.toGMTString();
    } else {
        expires = "";
    }
    document.cookie = encodeURIComponent(name) + "=" + encodeURIComponent(value) + expires + "; path=/";
}

通常是,取决于浏览器。无论如何,您必须始终以特定于浏览器的某些方式向用户请求权限。

例如,作为您的标签,Chrome 扩展允许通过 chrome.cookies (Developer Chrome) 访问一组给定来源的 cookie。您必须在扩展程序的清单中请求对 cookie 的访问权限和相对来源,以便实际设置该属性并可用于某些站点。如果您不请求权限,chrome 将保留 属性 undefined.

使用 chrome.cookies,您可以自由访问 cookie 设置、读取和写入,并且当 cookie 更改时,您还可以通过 JS 事件系统获得扩展内通知。

请注意,对于 chrome 政策,当用户安装扩展程序时,将收到有关您当前要求哪些站点提供 cookie 的通知,以及您在清单中要求的所有权限。

这也是一种很好的行为,而且我认为根据您所在的国家/地区,通常还有一项法律义务要告知您的用户您实际上是 storing/using 他们在某些网站中的 cookie,以及什么是你打算和他们一起做。

如果您打算将 cookie 仅用于存储信息,而不是用于某种站点 cookie 操作,通常浏览器(如 chrome)会公开其 localStorage/sessionStorage,或者特定的扩展存储也基于文件系统(如 chrome.storage (Developer Chrome)),允许您在用户会话之间存储信息。这种存储是可取的,因为侵犯用户隐私较少。

如果您想深入了解一些代码,可以在此处找到 chrome 实施示例:Chrome Extensions Samples - Api/Cookies (GitHub)