修改Chrome扩展程序中的HTTP响应
P粉038161873
P粉038161873 2023-08-21 23:44:53
0
2
682
<p>是否有可能创建一个能够修改HTTP响应体的Chrome扩展程序?</p> <p>我已经查看了Chrome扩展API,但没有找到可以实现这个功能的内容。</p>
P粉038161873
P粉038161873

全部回复(2)
P粉311464935

我刚刚发布了一个Devtools扩展,可以做到这一点:)

它叫做tamper,基于mitmproxy,它允许你查看当前标签页发出的所有请求,修改它们,并在下次刷新时提供修改后的版本。

这是一个相当早期的版本,但应该与OS X和Windows兼容。如果对你不起作用,请告诉我。

你可以在这里获取它:http://dutzi.github.io/tamper/

工作原理

正如下面的@Xan评论所说,该扩展通过与扩展了mitmproxy的Python脚本进行本机消息传递来通信。

该扩展使用chrome.devtools.network.onRequestFinished列出所有请求。

当你点击其中一个请求时,它使用请求对象的getContent()方法下载其响应,然后将该响应发送给保存在本地的Python脚本。

然后,它使用call(对于OSX)或subprocess.Popen(对于Windows)在编辑器中打开文件。

Python脚本使用mitmproxy监听通过该代理进行的所有通信,如果检测到对已保存文件的请求,它将提供已保存的文件。

我使用了Chrome的代理API(具体来说是chrome.proxy.settings.set())将PAC设置为代理设置。该PAC文件将所有通信重定向到Python脚本的代理。

mitmproxy最棒的一点是它还可以修改HTTPS通信。所以你也可以使用它:)

P粉561323975

一般来说,您无法使用标准的Chrome扩展API更改HTTP请求的响应体。

此功能正在104058: WebRequest API: 允许扩展编辑响应体上进行请求。收藏该问题以获取更新通知。

如果您想编辑已知的XMLHttpRequest的响应体,请通过内容脚本注入代码,以覆盖默认的XMLHttpRequest构造函数,使用自定义(功能完整的)构造函数在触发真实事件之前重写响应体。确保您的XMLHttpRequest对象与Chrome内置的XMLHttpRequest对象完全兼容,否则会导致AJAX-heavy网站出现问题。

在其他情况下,您可以使用chrome.webRequestchrome.declarativeWebRequest API将请求重定向到data:-URI。与XHR方法不同,您将无法获取原始请求的内容。实际上,请求永远不会到达服务器,因为重定向只能在实际请求发送之前完成。如果您重定向main_frame请求,用户将看到data:-URI而不是请求的URL。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板