ios http networking proxy wkwebview

ios - Soporte HTTP Proxy con WKWebView



networking (1)

¿Hay alguna forma de configurar WKWebView para pasar por un servidor proxy HTTP? Sé que esto es posible con NSURLSession directamente, pero quiero configurarlo para que todas las solicitudes a través del navegador WKWebView pasen por un proxy.


NSURLSessionConfiguration tiene una interfaz directa ( connectionProxyDictionary ) para hacer eso, por lo que se puede hacer fácilmente

Pero WkWebView no tiene ninguna interfaz directa como esa, solicita, procesa el contenido y puede imaginar que la instancia de WkWebview está en la zona de pruebas del resto de su aplicación.

WkWeView incluso ignora las cookies (NSHTTPCookieStorage), las memorias caché (NSURLCache) y las credenciales (NSCredentialStorage) de NSURLSession y NSURLConnection, así como estas clases de red no pueden acceder a las cookies, los cachés y las credenciales de la instancia de WkWebView.

UIWebView no lo hace fuera de proceso y, por lo tanto, puede usar NSURLProtocol como se demuestra en CustomHTTPProtocol sample para enviar un proxy a un servidor.

A partir de iOS 10, todavía no hay soporte para NSURLProtocol en WkWebView, por lo que no se puede usar proxy con WkWebView.

Si su servidor proxy admite tunneling (VPN), puede usar NetworkExtension.framework y sus clases (NEVPNManager, NEVPNProtocol, NEVPNConnection, etc.) para dirigir todo el tráfico de red de su aplicación a través de su servidor proxy.

Aquí hay un tutorial sobre cómo hacer esto