2011-06-07 94 views
12

我不知道是否有某种方式做这样的事情: 如果在特定网站上的IM,我想,一些JavaScript文件直接从我的电脑装( fe file:/// c:/test.js),而不是来自服务器。Chrome扩展,响应代码替换HTML之前,浏览器显示它

对于我在想,如果有可能,使可能在其浏览器中显示它之前的权利得到响应更改HTML代码的扩展。所以整个过程应该是这样的:

  1. 请求时
  2. 浏览器会从服务器响应
  3. #response改变# - 这是一部分,当扩展进来
  4. 浏览器解析改变的反应和显示包含该新响应的页面。

它甚至不必须是一个Chrome扩展反正。它应该只是做上面描述的工作。它可以阻止原始文件并为另一个(DNS/proxy?)服务,或者在我的计算机中过滤整个HTTP流量,并将特定的代码替换为另一个匹配的响应。

回答

4

您可以使用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>元素。请注意,您只能重定向到允许Web服务器本身重定向到的URL。这意味着重定向到file:///网址是不可能的,并且您只能重定向到您的扩展中的文件,如果这些文件是web accessibledata:http:但是,网址可以正常使用。

1

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

相关问题