Chrome扩展程序,在浏览器显示之前替换响应代码中的HTML

luk*_*asz 13 html replace google-chrome inject google-chrome-extension

我不知道是否有某种方式做这样的事情:如果在特定网站上的IM,我想,一些JavaScript文件直接从我的电脑装(FE文件:/// C:/test.js),而不是从服务器.

为此,我想是否有可能进行扩展,可以在显示它之前浏览器正确的响应中更改HTML代码.所以整个过程应该是这样的:

  1. 提出要求
  2. 浏览器从服务器获取响应
  3. #response已更改# - 这是扩展程序进入时的部分
  4. 浏览器解析更改了响应并显示具有该新响应的页面.

它甚至不必是Chrome扩展.它应该只是完成上述工作.它可以阻止原始文件并提供另一个(DNS /代理?)或过滤我的计算机中的整个HTTP流量,并将特定代码替换为另一个匹配的响应.

Wla*_*ant 3

您可以使用WebRequest API来实现这一点。例如,您可以添加onBeforeRequest侦听器并重定向一些请求:

chrome.webRequest.onBeforeRequest.addListener(function(details)
{
  var responseData = "<div>Some text</div>"
  return {redirectUrl: "data:text/html," + encodeURIComponent(responseData)};
}, {urls: ["https://www.google.com/"]}, ["blocking"]);
Run Code Online (Sandbox Code Playgroud)

这将显示一个<div>带有文本“some text”的元素,而不是 Google 主页。请注意,您只能重定向到 Web 服务器本身允许重定向到的 URL。这意味着重定向到file:///URL 是不可能的,并且您只能重定向到扩展程序内的文件(如果这些文件可通过网络访问)data:http:URL 工作正常。