如何将会话中的所有 cookie 作为 txt 文件获取?

How to get all of the cookies dropped in a session as a txt file?

我正在从事一个数字艺术项目,该项目涉及从我访问的一组网站收集 cookie。我正在尝试编写一些代码来帮助我解决这个问题,但总的来说,我只是在寻找 easiest/fastest 方法来将一次访问中丢弃的 cookie 的所有内容收集到一个文本文件中以供重复使用稍后。

现在 - 我在 JavaScript 小书签中使用这个脚本,它用数组中的 cookie 内容替换我所在的页面(稍后我将这个数组放入 python 我写的脚本...).

下面是小书签的内容,但现在的问题是它只是 returns 来自单个域的 cookie 的内容。

例如 - 如果我在 NYTimes.com 主页上 运行 这个脚本,我会收到域丢弃的大约 48 个 cookie。但是如果我查看 Chrome,我会发现所有第 3 方跟踪脚本都有数百个 cookie。我如何收集它们?不只是 NYtimes.com 个?

这是我现在 运行 通过小书签获取的当前 JavaScript 代码:

function get_cookies_array() {

var cookies = { };

    if (document.cookie && document.cookie != '') {
        var split = document.cookie.split(';');
        for (var i = 0; i < split.length; i++) {
            var name_value = split[i].split("=");
            name_value[0] = name_value[0].replace(/^ /, '');
            cookies[decodeURIComponent(name_value[0])] = decodeURIComponent(name_value[1]);
        }
    }

    return cookies;

}

function quotationsanitize(cookie){
    if(cookie.indexOf('"') === -1)
        {
          return cookie;
        }
        else{
            alert("found a quotation!");
            return encodeURIComponent(cookie);
        }
}


function sanitize(cookie){
    if(cookie.indexOf(',') === -1)
        {
          return quotationsanitize(cookie);
        }
        else{
            alert("found a comma!");
            return quotationsanitize(encodeURIComponent(cookie));
        }
}

function appendCookies(){
    $("body").empty();
    var cookies = get_cookies_array();
    $("body").append("[");
        for(var name in cookies) {
            //$("body").append(name + " : " + cookies[name] + "<br />" );
            var cookieinfo = sanitize(cookies[name]);
            $("body").append('"' + cookieinfo + '",<br />' );

        }
    $("body").append("]");
}


var js = document.createElement('script');
js.src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js";
document.head.appendChild(js);

jqueryTimeout = window.setTimeout(appendCookies, 500);

我要从输出中删除 ",,因为我要通过复制和粘贴将这些数据放入 Python 中的数组中。我承认这是一个黑客。如果有人有更好的想法,我会洗耳恭听!

我会编写一个简单的小型 HTTP 代理。然后将浏览器设置为使用代理,并让它记录所有通过的 cookie。

这里有个写简单代理的问题,seriously simple python HTTP proxy? 这可能会让你开始。

您需要扩展它以读取 header 并提取 cookie,但这相对容易,如果您对 python 感到满意,您会发现已经完成大部分你想要的事情的图书馆。您可能还想记录相关 header,这样您就知道哪些 cookie 来自哪个页面请求,但您随后可以非常简单地记录和整个浏览 session。