如何使用带有代理的 webview flutter?

How to use webview flutter with proxy?

我正在使用 Webview Flutter 包将一些网站嵌入到我的 flutter 项目中。对于某些网站我需要使用代理服务器(ip:port)来连接(国家访问限制)。如何将代理服务器添加到我的项目中并通过它使用 Webview Flutter 包?

不幸的是,Flutter 会忽略您的设备代理设置,因此您需要在您的 Flutter 应用中覆盖它,如下所示:

class MyProxyHttpOverride extends HttpOverrides {
  @override
  HttpClient createHttpClient(SecurityContext context) {
    return super.createHttpClient(context)
      ..findProxy = (uri) {
        return "PROXY localhost:8888;";
      }
      ..badCertificateCallback =
          (X509Certificate cert, String host, int port) => true;
  }
}

// In your main.dart
HttpOverrides.global = MyProxyHttpOverride();

当然,您需要将 localhost:8888 更改为任何您的代理设置 - 在您的情况下,这可能必须是动态的,用户可以更改。

我写了一篇关于这个解决方案的更详细的文章here - 虽然这是关于让它与 Charles Proxy 一起工作,但总体问题和解决方案是相同的。