我正在从事数字艺术项目,该项目涉及从我访问的一组网站收集Cookie。我正在编写一些代码来帮助我解决这个问题,但总的来说,我只是在寻找最简单/最快捷的方法来收集在一次访问中丢弃的cookie的所有内容。 - 稍后使用。
现在 - 我在JavaScript书签中使用这个脚本,用一个数组中的cookie内容替换我所在的页面(我后来将这个数组放入一个python中脚本我写了......)。
小书签的内容如下所示,但问题是它只返回单个域中cookie的内容。
所以例如 - 如果我在NYTimes.com主页上运行这个脚本,我会得到大约48个被域名删除的cookie。但是,如果我查看Chrome,我会发现所有第三方跟踪脚本都有数百个Cookie。我如何收集所有这些?不只是NYtimes.com的那些?
这是我目前通过书签运行的当前JavaScript代码:
/logout
我从输出中删除了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中的数组中。我承认这是一个黑客攻击。如果有人有任何更好的想法我全都耳朵!
答案 0 :(得分:1)
我会写一个简单的小HTTP代理。然后将浏览器设置为使用代理,并让它记录所有cookie。
这里有一个关于编写简单代理的问题,seriously simple python HTTP proxy? 这可能会让你开始。
你需要扩展它以读取标题,并提取cookie,但这相对容易,如果你对python感到满意,你会发现你已经完成大部分工作的库。你也想记录相关的标题,所以你知道哪个cookie来自哪个页面请求,但你可以非常简单地记录和整个浏览会话。