web-dev-qa-db-fra.com

Demandes et réponses WebView Manipulate/Intercept WebView

Je souhaite créer une application Electron qui utilisera webview pour afficher du contenu tiers.

J'aimerais pouvoir intercepter toutes les demandes et les réponses de cette webview. Parfois, j'aimerais manipuler ce contenu, d'autres fois, j'aimerais le consigner et d'autres fois, je ne souhaite rien faire.

À titre d’exemple pour les réponses, un serveur Web répondra peut-être avec du code TypeScript, je voudrais peut-être prendre cette réponse et la compiler en JavaScript standard.

J'ai regardé dans cette page mais il semble qu'il ne soit possible que d'annuler des demandes et de manipuler les en-têtes. L'API WebRequest ne cherche pas à répondre aux besoins de mon cas d'utilisation car elle ne permet que des manipulations très mineures des demandes et des réponses.

J'ai également envisagé de mettre en place un serveur Web pouvant servir de proxy, mais je suis inquiet à ce sujet. Je souhaite préserver la confidentialité des utilisateurs et veiller à ce que, pour les serveurs Web hébergeant le contenu tiers, la demande provienne d'un navigateur semblable à l'environnement (comme la visualisation Web Electron) et non d'un serveur. Je sais que je peux manipuler les requêtes avec les en-têtes que j'envoie et autres, mais toute cette solution est en train de devenir beaucoup plus compliquée, alors j'aimerais bien, mais pourrait être la seule option.

Y a-t-il de meilleurs moyens d'atteindre cet objectif et d'avoir plus de contrôle sur la visualisation Web Electron?

7
Charlie Fish

Je pense que vous devriez regarder dans le API de protocole . cela fonctionne en tant que proxy en interne. dit que vous voulez que l'utilisateur ouvre http://www.google.com et affiche le contenu tel que you've been conned!.

const { protocol } = require("electron");

const content = new Buffer("you've been conned!");

protocol.interceptBufferProtocol("http", (request, result) => {
  if (request.url === "http://www.google.com")
    return result(content);
  ... // fetch other http protocol content and return to the electron
});

il y a beaucoup de travail à faire, en comparant à WebRequest API . mais c'est beaucoup plus simple qu'un proxy local indépendant.

1
notXX