代码之家  ›  专栏  ›  技术社区  ›  Charlie Fish

电子操纵/拦截WebView请求和响应

  •  8
  • Charlie Fish  · 技术社区  · 8 年前

    我想创建一个电子应用程序 webview

    我希望能够拦截来自此webview的所有请求和响应。有时候我想操纵这些内容,有时候我想记录它,有时候我什么也不想做。

    作为响应的一个例子,也许web服务器会用TypeScript代码响应,也许我想获取这个响应,并将其编译为标准JavaScript。

    this page 但看起来只有取消请求和操作头才是可能的。这个 WebRequest API

    我也考虑过设置一段时间的web服务器作为代理,但我对此有顾虑。我想维护用户隐私,并且我想确保对于承载第三方内容的web服务器来说,请求似乎来自类似浏览器的环境(例如Electron webview),而不是服务器。我知道我可以用我发送的头等来处理请求,但是整个解决方案变得更加复杂了,我想,但可能是唯一的选择。

    1 回复  |  直到 8 年前
        1
  •  6
  •   notXX    7 年前

    我觉得你应该调查一下 Protocol API . 它在内部充当代理。 如果你想让用户打开 http://www.google.com 看到像这样的内容 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
    });

    有很多工作要做,相比之下 WebRequest API . 但它比独立的本地代理简单得多。