gpt4 book ai didi

javascript - 使用 tampermonkey 获取与页面相关的所有请求的 header

转载 作者:行者123 更新时间:2023-12-03 10:05:00 25 4
gpt4 key购买 nike

我正在尝试编写一个 tampermonkey 脚本,该脚本将 document.location 和标题收集到字典中。谷歌搜索了一下,发现我应该使用某种全局变量,但它没有按我想要的方式工作。

这是脚本:

// ==UserScript==
// @name My Fancy New Userscript
// @namespace http://your.homepage/
// @version 0.1
// @description enter something useful
// @author You
// @match *://*/*
// @grant none
// ==/UserScript==


if (unsafeWindow.resources == undefined) {
var unsafeWindow.resources = [];
}

var host = window.location;
unsafeWindow.resources.push(host);
console.log(unsafeWindow.resources);

运行时出现以下错误:

ERROR: Execution of script 'My Fancy New Userscript' failed! unsafeWindow is not defined

也许我想做的事情根本不可能实现?

更新:试图说得更清楚一点。最终结果应该生成一个以 document.location 作为键的字典,以及一个包含该位置的 header 名称和 header 值作为值的字典。

{document.location = {"Headername" = "Header value", "Headername" = "Header value"}}

最终结果将用于生成包含字典中信息的表格。像这样的事情:

enter image description here

/帕特里克

最佳答案

请将此作为您应该完成的任务的简短示例,并注意您在继续项目时可能会遇到一些问题,因为有时 document.location 检索起来可能有点棘手。

除此之外,代码:

// ==UserScript==
// @name My Fancy New Userscript
// @namespace http://use.i.E.your.homepage/
// @version 0.1
// @description enter something useful
// @match *://*/*
// @copyright 2015+, You
// ==/UserScript==

var storage = (function(win){
var localDrive = win.localStorage;

return {
save: function (/* <string> */ key, /* <string | JSONstringified object> */ value) {
localDrive.setItem(key, value);
},
destroy: function (/* <string> */ key) {
return localDrive.removeItem(key) ? true : false;
},
get: function (/* <string> */ key) {
return localDrive.getItem(key) == '' || localDrive.getItem(key) == null ? false : localDrive.getItem(key);
}
}
})(window);

window.storage = storage;

document.addEventListener("DOMContentLoaded", function(e) {
// Dom ready, start:

// Check whether the array exists or not :
if (!storage.get("myDataList")) {
storage.save("myDataList", JSON.stringify(
[{
'href' : document.location.href,
'location' : document.location,
'test1' : 'test',
'test2' : 'test2'
}]
)
);
}
else {
// If exists, log every single object:
var currentStorageList = JSON.parse(storage.get("myDataList"));
for (var i = 0; i < currentStorageList.length; ++i) {
console.log(currentStorageList[i]);
}
}

// Check whether this element exists in the current list, else add :

var currentStorageList = JSON.parse(storage.get("myDataList"));

var elementExists = currentStorageList.some(function(el,i,arr) {
return el.href === document.location.href;
});

if (!elementExists) {
console.log("current elements doesn't exist, let's push it!");
storage.save("myDataList", JSON.stringify(JSON.parse(storage.get("myDataList")).push({
'href' : document.location.href,
'location' : document.location,
'test1' : 'test',
'test2' : 'test2'
})));
}
});

这是纯 JavaScript,因为我没有看到你使用 jQuery。

我在那里提供了:

  1. 一个舒适的 DOM 对象(存储),具有三个主要方法:save(存储 key => value,其中 value 必须是字符串或 json 字符串化元素,因为不能在本地存储中存储数组)、get(获取从 key )并销毁(从 key )。
  2. 位于 domready 开头的构造函数:如果保存元素的键不存在,它将创建它并填充当前文档位置,并使用文档的 href 来标识它。
  3. 一些可用于保存/检索您需要的内容的示例。

请注意,这只是一个示例(但它确实有效)。

此外,在您的 tampermonkey 脚本设置中,不要忘记将其设置为在文档结束运行。

xkcd 上的输出(用于测试)是这样的:

enter image description here

http://prntscr.com/784zw7 (图片直达链接)

希望这对您的项目有帮助;)

关于javascript - 使用 tampermonkey 获取与页面相关的所有请求的 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30399995/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com