Настройка Swift 4/5 с добавлением прокси в WKWebview - PullRequest
4 голосов
/ 02 апреля 2019

Я безуспешно ищу способ установить прокси для запроса WKWebview.

С другой стороны, мне удалось установить прокси на 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
}

Но у меня вопрос к вам, ребята, как настроить прокси для WKWebView?

Я буду очень признателен за вашу помощь

Ответы [ 3 ]

3 голосов
/ 05 апреля 2019

HTTP-проксирование невозможно с WKWebView - трюк регистрации NSURLProtocol не работает при использовании WKWebView (он работает только с UIWebView).

Подобный трюк мог бы быть возможен при использовании WKURLSchemeHandler, но это не так.не разрешать регистрировать схемы, которые изначально обрабатываются WKWebView, поэтому на самом деле это невозможно.

Источник: https://forums.developer.apple.com/thread/110312#337642

0 голосов
/ 10 апреля 2019

У нас есть ограниченный доступ к WKWebView с минимальным delegate, мы можем достичь этого NSURLProtocol Если ваш прокси-сервер поддерживает туннелирование (VPN), тогда вы можете использовать NetworkExtension.framework, посмотреть содержание здесь, надеюсь, это поможет вам. источник здесь

0 голосов
/ 05 апреля 2019

Веб-представления используются для ввода очень конфиденциальной информации (например, номеров кредитных карт, паролей), к которой вы не хотите, чтобы приложение обращалось напрямую.

Следовательно, WKWebview явно блокирует все попытки похитить эту информацию.информация.

Например, в методах делегата вы можете видеть, что запрос выполняется, и видеть его URL, но вы не можете получить доступ к телу запроса.

По той же причине вам не разрешено вмешиватьсяс прокси.

Если бы вы могли это сделать, это сделало бы очень опасным использование веб-представлений.

...