【问题标题】:Access cookies from Google Chrome extension从 Google Chrome 扩展程序访问 cookie
【发布时间】:2010-11-29 04:33:51
【问题描述】:

有没有办法从 Chrome 扩展程序访问 cookie? 这段代码

document.cookie.length

总是返回 - 0。

【问题讨论】:

  • 你想窃取cookies吗?

标签: javascript cookies google-chrome


【解决方案1】:

如果您更改 manifest.json,您必须删除 google chrome 扩展并重新添加。

试试这些步骤:

  1. 点击 Chrome 浏览器顶部的扩展程序 -> 管理扩展程序。
  2. 删除扩展
  3. 点击Load Unpacked -> 导航到扩展项目文件夹。

对 manifest.json 的更改已加载。

【讨论】:

    【解决方案2】:

    目前在扩展中获取站点 cookie 的最佳(最简单)方法是这样的:

    chrome.cookies.get({ url: 'http://example.com', name: 'somename' },
      function (cookie) {
        if (cookie) {
          console.log(cookie.value);
        }
        else {
          console.log('Can\'t get cookie! Check the name!');
        }
    });
    

    所以现在您不需要为此编写内容脚本,但不要忘记在清单中包含权限:

    "permissions": [
      "cookies",
      "*://*.example.com/*"
    ]
    

    【讨论】:

    • 这对我有用。值得一提的是,需要将这段代码放在后台脚本中。
    【解决方案3】:

    如果您希望在用户不必访问该站点的情况下操作 cookie 信息(对于像 FireFox 的 TACO 这样的东西很有用),那么您目前不走运。不过看起来谷歌正在努力:他们最近在实验性 API 中添加了一个相对完整的 cookie 处理程序: chrome.experimental.cookies

    希望这将很快升级为受支持的 API。

    【讨论】:

      【解决方案4】:

      这是我第一次在这个网站上读到一些真正错误的东西。 确实可以从扩展中获取实际的文档 cookie。

      你只需要在你的清单中做这两件事:

      "content_scripts": [
          {
            "matches": ["http://*/*", "https://*/*"],
            "js": ["cookie_handler.js"]
          }
        ],
        "permissions": [
          "tabs",
          "http://*/*",
          "https://*/*"
        ],
      

      您的 cookie_handler.js 将在每个加载器页面/框架/iframe 的相同上下文中执行。 尝试放一行:

      alert(document.cookie);
      

      你会看到:)

      【讨论】:

      • 这是否意味着可以从 Firefox 制作像 Permit Cookies 这样的扩展?该扩展允许每个站点的用户始终允许、允许会话、阻止、删除。还是不能为 Chrome 做这样的扩展?
      • 它给出错误:cannot load javascript cookie_handler.js for content_scripts
      • @MuhammadAdeelZahid 您需要在那里编写您的 cookie 处理程序脚本:P
      【解决方案5】:

      更好的是,您可以使用 HTML5 Localstorage:

      localStorage.setItem("itemid", "hello" );   // write
      value = localStorage.getItem("itemid");     // read
      

      如果您真的想读取用户正在观看的任何网站的 cookie,正如 Dan 所写,这是不可能的,因为可能会做一些非常糟糕的事情。

      您可以从页面中获取的只是页面 DOM 内容。

      【讨论】:

      • 现在我们应该使用chrome.storage.local。无论如何,这是 5 年前的答案。
      猜你喜欢
      • 1970-01-01
      • 2014-02-07
      • 2013-11-20
      • 1970-01-01
      • 1970-01-01
      • 2016-09-13
      • 2013-03-15
      • 1970-01-01
      • 2017-03-08
      相关资源
      最近更新 更多