Javascript 更新的chrome扩展启动太晚
早上好 我尝试使用chrome扩展或userscript在他被执行之前删除一个脚本。 我试过了Javascript 更新的chrome扩展启动太晚,javascript,google-chrome,google-chrome-extension,Javascript,Google Chrome,Google Chrome Extension,早上好 我尝试使用chrome扩展或userscript在他被执行之前删除一个脚本。 我试过了 chrome.tabs.onUpdated.addListener(function(tabid, info, tab) { chrome.tabs.executeScript(tabid, {file:"test.js"}); //if (info.status == "complete") { // // } }); 在test.js中,我删除了第一个脚本元素(
chrome.tabs.onUpdated.addListener(function(tabid, info, tab) {
chrome.tabs.executeScript(tabid, {file:"test.js"});
//if (info.status == "complete") {
//
// }
});
在test.js中,我删除了第一个脚本元素(仅用于示例)
即使第一次调用test.js也太晚了,页面中的脚本已经执行完毕。
有没有办法在解释之前替换HTML或在执行之前删除脚本
我还尝试了userscript的“run\u at”:“document\u start”
,但该脚本是在我要删除的脚本加载到dom之前运行的,因此我无法删除它。
在过去,beforeload事件是可能的,但它已从chrome中删除。
我还尝试了chrome.runtime.onMessage.addListener
和chrome.webRequest.onBeforeRequest.addListener
,但当我重新加载页面时,它们不会被触发。
谢谢最后,我使用mitmproxy,它是一个允许修改内容的代理,而不是一个扩展 mitmproxy的安装:
sudo apt install pip
pip3 install beautifulsoup4
#pip3 uninstall mitmproxy #uncomment if already installed
sudo pip3 install mitmproxy==3.0.4
sudo sysctl -w net.ipv4.ip_forward=1 #maybe facultative
创建名为insertJs.py的python修改器脚本:
以下脚本将替换$('html,body').animate({.encode('utf-8')
)by;[]在包含tfarjo
的站点上推送({.encode('utf-8')
)
def response(flow):
if 'tfarjo' in flow.request.url: #here filter url that you want modify
#here make the replacement you want
flow.response.content = flow.response.content.replace(
"$('html, body').animate({".encode('utf-8'),
";[].push({".encode('utf-8')
)
def read_file(filename):
with open(filename) as f:
return f.read()
使用修改器脚本启动mitmproxy:
sudo mitmdump -p 8081 -s "insertJs.py"
杀死chrome:file->quit或“杀死所有chrome
”两次
现在我们必须配置代理,创建一个添加mitmproxy的chrome shorcut(在linux mint上,它是桌面上的clic,并创建新的启动器):
尝试http页面而不是https,如果可以,请配置https:
铬
执行相同操作并安装pem(可能是兼性的)
然后按照这些说明去做
(对于firefox,只需点击操作系统并配置https即可实现)那没用。你必须重写整个页面的html。当然,你还需要在executeScript中使用runAt:“document\u start”。谢谢你。这个方法的问题是请求发出了两次,但如果我可以先阻止第一个请求,它就是解决方案。不幸的是,在Chrome中,这是唯一的方法。window.stop()这还不够,我已经用document.close();window.stop();替换了它,即使我们损失了一点时间,它仍然可以工作。
sudo mitmdump -p 8081 -s "insertJs.py"
/usr/bin/google-chrome-stable %U --proxy-server=127.0.0.1:8081