Modifier la réponse HTTP dans l'extension Chrome
P粉038161873
P粉038161873 2023-08-21 23:44:53
0
2
543

Est-il possible de créer une extension Chrome capable de modifier le corps de la réponse HTTP ?

J'ai examiné l'API de l'extension Chrome et je n'ai rien trouvé qui puisse implémenter cette fonctionnalité.

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é surmitmproxy, 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 étendmitmproxy.

Cette extension utilisechrome.devtools.network.onRequestFinishedpour 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éthodegetContent()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 utilisantcall(对于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 particulierchrome.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, vousne pouvez pasmodifier 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 sur104058 : 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'unXMLHttpRequestconnu, veuillez transmettre le script de contenuInjecter du codeXMLHttpRequest的响应体,请通过内容脚本注入代码,以覆盖默认的XMLHttpRequest构造函数,使用自定义(功能完整的)构造函数在触发真实事件之前重写响应体。确保您的XMLHttpRequest对象与Chrome内置的XMLHttpRequestpour remplacer le constructeur par défautXMLHttpRequestet 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'objetXMLHttpRequestintégré à Chrome, sinon cela entraînera des problèmes sur les sites Web utilisant beaucoup d'AJAX.

    Dans d'autres cas, vous pouvez utiliserchrome.webRequestchrome.webRequestchrome.declarativeWebRequestAPI将请求重定向到data:-URI。与XHR方法不同,您将无法获取原始请求的内容。实际上,请求永远不会到达服务器,因为重定向只能在实际请求发送之前完成。如果您重定向main_frame请求,用户将看到data:ouchrome.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
      À propos de nous Clause de non-responsabilité Sitemap
      Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!