84669 Lernen von Personen
152542 Lernen von Personen
20005 Lernen von Personen
5487 Lernen von Personen
7821 Lernen von Personen
359900 Lernen von Personen
3350 Lernen von Personen
180660 Lernen von Personen
48569 Lernen von Personen
18603 Lernen von Personen
40936 Lernen von Personen
1549 Lernen von Personen
1183 Lernen von Personen
32909 Lernen von Personen
Ist es möglich, eine Chrome-Erweiterung zu erstellen, die den HTTP-Antworttext ändern kann?
Ich habe mir die Chrome-Erweiterungs-API angesehen und nichts gefunden, was diese Funktionalität implementieren würde.
我刚刚发布了一个Devtools扩展,可以做到这一点:)
它叫做tamper,基于mitmproxy,它允许你查看当前标签页发出的所有请求,修改它们,并在下次刷新时提供修改后的版本。
这是一个相当早期的版本,但应该与OS X和Windows兼容。如果对你不起作用,请告诉我。
你可以在这里获取它:http://dutzi.github.io/tamper/
工作原理
正如下面的@Xan评论所说,该扩展通过与扩展了mitmproxy的Python脚本进行本机消息传递来通信。
该扩展使用chrome.devtools.network.onRequestFinished列出所有请求。
chrome.devtools.network.onRequestFinished
当你点击其中一个请求时,它使用请求对象的getContent()方法下载其响应,然后将该响应发送给保存在本地的Python脚本。
getContent()
然后,它使用call(对于OSX)或subprocess.Popen(对于Windows)在编辑器中打开文件。
call
subprocess.Popen
Python脚本使用mitmproxy监听通过该代理进行的所有通信,如果检测到对已保存文件的请求,它将提供已保存的文件。
我使用了Chrome的代理API(具体来说是chrome.proxy.settings.set())将PAC设置为代理设置。该PAC文件将所有通信重定向到Python脚本的代理。
chrome.proxy.settings.set()
mitmproxy最棒的一点是它还可以修改HTTPS通信。所以你也可以使用它:)
一般来说,您无法使用标准的Chrome扩展API更改HTTP请求的响应体。
此功能正在104058: WebRequest API: 允许扩展编辑响应体上进行请求。收藏该问题以获取更新通知。
如果您想编辑已知的XMLHttpRequest的响应体,请通过内容脚本注入代码,以覆盖默认的XMLHttpRequest构造函数,使用自定义(功能完整的)构造函数在触发真实事件之前重写响应体。确保您的XMLHttpRequest对象与Chrome内置的XMLHttpRequest对象完全兼容,否则会导致AJAX-heavy网站出现问题。
XMLHttpRequest
在其他情况下,您可以使用chrome.webRequest或chrome.declarativeWebRequestAPI将请求重定向到data:-URI。与XHR方法不同,您将无法获取原始请求的内容。实际上,请求永远不会到达服务器,因为重定向只能在实际请求发送之前完成。如果您重定向main_frame请求,用户将看到data:-URI而不是请求的URL。
chrome.webRequest
chrome.declarativeWebRequest
data:
main_frame
我刚刚发布了一个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通信。所以你也可以使用它:)
一般来说,您无法使用标准的Chrome扩展API更改HTTP请求的响应体。
此功能正在104058: WebRequest API: 允许扩展编辑响应体上进行请求。收藏该问题以获取更新通知。
如果您想编辑已知的
XMLHttpRequest
的响应体,请通过内容脚本注入代码,以覆盖默认的XMLHttpRequest
构造函数,使用自定义(功能完整的)构造函数在触发真实事件之前重写响应体。确保您的XMLHttpRequest对象与Chrome内置的XMLHttpRequest
对象完全兼容,否则会导致AJAX-heavy网站出现问题。在其他情况下,您可以使用
chrome.webRequest
或chrome.declarativeWebRequest
API将请求重定向到data:
-URI。与XHR方法不同,您将无法获取原始请求的内容。实际上,请求永远不会到达服务器,因为重定向只能在实际请求发送之前完成。如果您重定向main_frame
请求,用户将看到data:
-URI而不是请求的URL。