Modifier la réponse HTTP dans l'extension Chrome
P粉038161873
P粉038161873 2023-08-21 23:44:53
0
2
683
<p>Est-il possible de créer une extension Chrome capable de modifier le corps de la réponse HTTP ? </p> <p>J'ai examiné l'API de l'extension Chrome et je n'ai rien trouvé qui puisse implémenter cette fonctionnalité. </p>
P粉038161873
P粉038161873

répondre à tous(2)
P粉311464935

Je viens de publier une extension Devtools qui fait exactement cela :)

Cela s'appelle tamper, basé sur mitmproxy, et il vous permet de visualiser toutes les demandes faites par l'onglet actuel, de les modifier et de servir la version modifiée lors de la prochaine actualisation.

Il s'agit d'une version assez ancienne mais devrait être compatible avec OS X et Windows. Si cela ne fonctionne pas pour vous, faites-le-moi savoir.

Vous pouvez l'obtenir ici : http://dutzi.github.io/tamper/

Comment ça marche

Comme le dit le commentaire de @Xan ci-dessous, l'extension communique via une messagerie native avec un script Python qui étend mitmproxy.

Cette extension utilise chrome.devtools.network.onRequestFinished pour lister toutes les demandes.

Lorsque vous répondez à l'une des requêtes, il télécharge sa réponse à l'aide de la méthode getContent() de l'objet de requête, puis envoie cette réponse à un script Python enregistré localement.

Il ouvre ensuite le fichier dans un éditeur en utilisant call(对于OSX)或subprocess.Popen (pour Windows).

Le script Python utilise mitmproxy pour écouter toutes les communications passant par le proxy et s'il détecte une demande pour un fichier enregistré, il servira le fichier enregistré.

J'ai utilisé l'API proxy de Chrome (en particulier chrome.proxy.settings.set()) pour définir le PAC comme paramètres de proxy. Ce fichier PAC redirige toutes les communications vers le proxy du script Python.

La meilleure chose à propos de mitmproxy est qu'il peut également modifier la communication HTTPS. Vous pouvez donc l'utiliser aussi :)

P粉561323975

En général, vous ne pouvez pas modifier le corps de la réponse d'une requête HTTP à l'aide de l'API d'extension Chrome standard.

Cette fonctionnalité est demandée sur 104058 : API WebRequest : Autoriser l'extension à modifier le corps de la réponse . Ajoutez cette question à vos favoris pour être informé des mises à jour.

Si vous souhaitez modifier le corps de la réponse d'un XMLHttpRequest connu, veuillez transmettre le script de contenu Injecter du code XMLHttpRequest的响应体,请通过内容脚本注入代码,以覆盖默认的XMLHttpRequest构造函数,使用自定义(功能完整的)构造函数在触发真实事件之前重写响应体。确保您的XMLHttpRequest对象与Chrome内置的XMLHttpRequest pour remplacer le constructeur par défaut XMLHttpRequest et utiliser un constructeur personnalisé (fonctionnalité complète) La fonction réécrit le corps de la réponse avant de déclencher l'événement réel. Assurez-vous que votre objet XMLHttpRequest est entièrement compatible avec l'objet XMLHttpRequest intégré à Chrome, sinon cela entraînera des problèmes sur les sites Web utilisant beaucoup d'AJAX.

Dans d'autres cas, vous pouvez utiliser chrome.webRequestchrome.webRequestchrome.declarativeWebRequest API将请求重定向到data:-URI。与XHR方法不同,您将无法获取原始请求的内容。实际上,请求永远不会到达服务器,因为重定向只能在实际请求发送之前完成。如果您重定向main_frame请求,用户将看到data: ou chrome.declarativeWebRequest

L'API redirige les requêtes vers data :-URI. Contrairement à l’approche XHR, vous ne pourrez pas récupérer le contenu de la requête initiale. En fait, la requête n’atteint jamais le serveur car la redirection ne peut être effectuée qu’avant l’envoi de la requête proprement dite. Si vous redirigez une requête main_frame, l'utilisateur verra le data:-URI au lieu de l'URL demandée. 🎜
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal