13

我想知道是否有某种方法可以做这样的事情:如果我在一个特定的站点上,我希望直接从我的计算机(fe file:///c:/test.js)加载一些 javascript 文件,而不是从服务器。

为此,我在考虑是否有可能制作一个扩展程序,该扩展程序可以在响应中更改 HTML 代码,浏览器在显示它之前得到正确的响应。所以整个过程应该是这样的:

  1. 提出请求
  2. 浏览器从服务器获取响应
  3. #response is changed# - 这是扩展进入的部分
  4. 浏览器解析更改的响应并使用该新响应显示页面。

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

4

2 回答 2

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"]);

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

于 2011-06-07T09:28:18.693 回答
1

在 Windows 中,您可以使用 Proxomitron (proxomitron.info),它是一个本地代理,可以拦截正在加载到浏览器中的任何页面或文件,并使用正则表达式(无 DOM 解析)在它被渲染之前更改它。浏览器。

于 2012-04-06T23:02:37.530 回答