J'ai cherché un moyen de définir un proxy pour la requête WKWebview sans succès.
D'un autre côté, j'ai pu définir un proxy pour la requête http
func createURLSessionConfiguration(_ host:String,_ port:String) -> URLSessionConfiguration { let config = URLSessionConfiguration.default config.requestCachePolicy = URLRequest.CachePolicy.reloadIgnoringLocalCacheData config.connectionProxyDictionary = [AnyHashable: Any]() config.connectionProxyDictionary?[kCFNetworkProxiesHTTPEnable as String] = 1 config.connectionProxyDictionary?[kCFNetworkProxiesHTTPSProxy as String] = host config.connectionProxyDictionary?[kCFNetworkProxiesHTTPSPort as String] = port return config }
Mais ma question à vous les gars est de savoir comment définir le proxy pour WKWebView?
J'apprécierai vraiment votre aide
3 Réponses :
Le proxy HTTP n'est pas possible avec WKWebView - l'astuce d'enregistrement NSURLProtocol ne fonctionne pas lors de l'utilisation de WKWebView (cela ne fonctionne qu'avec UIWebView).
Une astuce similaire aurait pu être possible en utilisant WKURLSchemeHandler, mais elle ne permet pas d'enregistrer des schémas gérés nativement par WKWebView, donc ce n'est pas vraiment possible.
Source: https://forums.developer.apple.com/thread/110312 # 337642
Les vues Web sont utilisées pour saisir des informations très sensibles (par exemple, numéros de carte de crédit, mots de passe) auxquelles vous ne souhaitez pas que l'application accède directement.
Par conséquent, WKWebview
bloque explicitement toutes les tentatives de piratage de ces informations.
Par exemple, dans les méthodes de délégation, vous pouvez voir qu'une requête est en cours et voir son URL, mais vous ne pouvez pas accéder au corps de la requête.
Pour la même raison, vous n'êtes pas autorisé à modifier le proxy.
Si vous pouviez réellement faire cela, cela rendrait les vues Web très dangereuses à utiliser.
Nous avons un accès limité à WKWebView
avec un délégué
minimum, nous pouvons y parvenir NSURLProtocol
Si votre serveur proxy prend en charge le tunneling (VPN), vous pouvez utiliser NetworkExtension.framework voir le contenu ici, j'espère qu'il vous aidera.
la source est ici
voir ce contenu j'espère qu'il vous aidera stackoverflow.com/a/39405291/9880393
@ViraniVivek, ce code a été écrit avec Swift 2 ou quelque chose comme ça. Si vous essayez de compiler certaines APIs sont devenues obsolètes ou renommées.