4
votes

Réglage Swift 4/5 ajout d'un proxy à WKWebview

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


2 commentaires

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.


3 Réponses :


3
votes

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


0 commentaires

0
votes

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.


0 commentaires

0
votes

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


0 commentaires