gpt4 book ai didi

javascript - 使用无法在页面上工作的书签注入(inject) jQuery

转载 作者:可可西里 更新时间:2023-11-01 13:18:31 26 4
gpt4 key购买 nike

我正在尝试使用这个书签:

javascript:void((function(doc){if(typeof jQuery=='undefined'){var script_jQuery=document.createElement('script');script_jQuery.setAttribute('src','https://code.jquery.com/jquery-latest.min.js');document.body.appendChild(script_jQuery);console.log('jQuery included ^_^');}else{console.log('jQuery already included ...');}})(document));

将 jQuery 注入(inject)此页面:

https://cn.bing.com/dict/?mkt=zh-cn&q=test

我打开页面,然后打开开发人员控制台(我使用的是 Chrome),切换到网络选项卡,然后点击小书签,我注意到 Chrome 没有请求 https://code.jquery.com/jquery-latest.min.js ,而是请求以下 url:

https://cn.bing.com/fd/ls/l?IG=EE977A4E38924F57B34A1371C04323C1&Type=Event.ClientInst&DATA=[{%22T%22:%22CI.AntiMalware%22,%22FID%22:%22CI%22,%22Name%22:%22AC%22,%22Text%22:%22S%3Ahttps%3A//code.jquery.com/jquery-latest.min.js%22}]

有谁知道为什么小书签在这个页面上不起作用?此页面如何重定向请求?

最佳答案

那个特定的网站有 monkeypatched appendChild,你可以看到如果你运行

document.body.appendChild.toString()

进入控制台:它给你

function(n){return t(n,"AC")?u.apply(this,arguments):null}

返回而不是 [native code],这意味着 native 函数已被覆盖。

请注意,打补丁的原型(prototype)对象是 Element.prototype,但是 appendChild 原生存在于 Node.prototype 上,它仍未打补丁:

Node.prototype.appendChild.toString()
// gives function appendChild() { [native code] }

您可以 .call 未修补的 appendChild 代替:

(function(doc) {
if (typeof jQuery == 'undefined') {
var script_jQuery = document.createElement('script');
script_jQuery.setAttribute('src', 'https://code.jquery.com/jquery-latest.min.js');
Node.prototype.appendChild.call(
document.body,
script_jQuery
);
console.log('jQuery included ^_^');
} else {
console.log('jQuery already included ...');
}
})(document)

然后它就会被附加成功。 (typeof jQuery 然后将评估为 function 而不是 undefined,您可以看到从网络选项卡请求了正确的 URL)


如果站点已正确修补它并使所有对 Node.prototype.appendChild 的引用不可访问,唯一的解决方案是在页面的 Javascript 之前运行您自己的 Javascript运行,这可以使用像 Tampermonkey 这样的用户脚本管理器来完成,@run-at document-start,并使用即时脚本注入(inject)在它被覆盖之前保存对 Node.prototype.appendChild 的引用。

关于javascript - 使用无法在页面上工作的书签注入(inject) jQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58470603/

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