【问题标题】:Bookmarklet for set and read cookies用于设置和读取 cookie 的书签
【发布时间】:2013-06-06 14:22:36
【问题描述】:

我需要(练习)通过网站 X 中的书签设置 cookie,并使用网站 Y 中的另一个书签来读取他。

例如,在 Google 中设置一个名为“user”且值为“Guy”的 cookie,然后从 YouTube 中读取。

我设法设置了 cookie,但不知道如何从网站 b 读取他。

谢谢!

【问题讨论】:

  • 尝试使用document.cookie 来读取cookie...如果这有帮助,请帮忙
  • document.cookie 将读取同一页面上的 cookie,而不是来自另一个域。
  • 您是否有权访问(如能够制作文件)这两个网站?因为否则这是不可能的。
  • 您正在使用跨域操作。除非您拥有该域,否则您可以忘记设置 cookie 或获取 cookie :))

标签: javascript browser bookmarklet


【解决方案1】:

根据这个 StackOverflow,how to get cookies from a different domain with php and javascript 您无法从另一个域获取 cookie,除非您有权访问它,因为这将是一个巨大的安全漏洞。

【讨论】:

    【解决方案2】:

    您需要两个小书签,一个 getter 和一个 setter。

    您访问站点 X 并使用 getter 小书签读取 cookie 并让用户将其复制到剪贴板。

    然后你去站点 Y 并使用 setter。 setter 将提示用户输入小书签,然后用户将其粘贴到提示中。然后代码将相应地设置 cookie。

    您当然可以将这两个书签组合成一个 getter/setter。提示将包含页面的当前 cookie。然后,用户可以选择复制 cookie 并取消(将其用作 getter)或选择更改 cookie 并单击“确定”(将其用作 setter)。

    【讨论】:

    • 我设法通过使用 Document.cookie 来设置 setter 小书签,我想使用前 iframe 以便从网站 B 获取我在网站 A 中设置的 cookie。
    • 如果您不控制和拥有其中一个网站,那么您所描述的就是不可能的。
    【解决方案3】:

    我正在寻找一种与朋友共享特定网站 cookie 的方法(通过书签在我的浏览器中读取它们,而我的朋友也通过书签在他的浏览器上设置它们)。不完全是你要求的,但搜索把我带到了这里。这是我的方法:

    首先有一个用于导出 cookie 的小书签。它将删除不必要的空格并将您的数据编码为 base64 字符串以进行安全传输:

    javascript:(
    function(){
        prompt("GET cookies encoded in base64", btoa(document.cookie.replace(/\s/ig, "")));
        }
    )
    ();
    

    然后是第二个小书签,用于导入字符串中编码的所有 cookie。你也可以在这里设置一个可选的生命周期(感谢https://www.quirksmode.org/js/cookies.html):

    javascript:(
    function(){
        var inputstring = prompt("SET cookies decoded from base64");
        var inputclean = atob(inputstring).replace(/\s/ig, "");
        if (confirm("These cookies will be imported:\n\n" + inputclean.replace(/;/ig, "; "))) {
        var days = prompt("Cookie lifetime in full days", "365");
        var cookiearray = inputclean.split(";");
        cookiearray.forEach(function(entry) {
            var expires = "";
            var split = entry.split("=");
            if (days) {
                var date = new Date();
                date.setTime(date.getTime() + (days*24*60*60*1000));
                expires = "; expires=" + date.toUTCString();
            }
            document.cookie = split[0] + "=" + (split[1] || "")  + expires + "; path=/";
        });
        }
        }
    )
    ();
    

    不要忘记您必须在特定网站或标签上运行它们。它不会导出浏览器存储的整个 cookie 集合。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-01
      • 2012-07-05
      • 2016-11-06
      • 2018-04-12
      • 1970-01-01
      • 1970-01-01
      • 2013-12-19
      相关资源
      最近更新 更多