import Network
import WebKit

@available(iOS 17.0, macOS 14.0, *)
@MainActor
func makeWebView(username: String, password: String) -> WKWebView {
    let endpoint = NWEndpoint.hostPort(
        host: "proxy.example.net", port: 8080)
    let proxy = ProxyConfiguration(
        httpCONNECTProxy: endpoint, tlsOptions: nil)
    proxy.applyCredential(username: username, password: password)

    let store = WKWebsiteDataStore.nonPersistent()
    store.proxyConfigurations = [proxy]

    let configuration = WKWebViewConfiguration()
    configuration.websiteDataStore = store
    return WKWebView(frame: .zero, configuration: configuration)
}

Mwonekano unaorejeshwa hutumia WKWebsiteDataStore maalum lisilodumu. Pakia tovuti inayokusudiwa kupitia mwonekano huo. Tumia akaunti ya mpatanishi au acha applyCredential kwa proksi isiyohitaji chochote. Kwa tawi hilo la HTTP lisilothibitishwa, orodha ya proksi za HTTP hutoa vituo vya mwisho vinavyowezekana kwa duka la data.

Kila mwonekano unaoshiriki duka hili unashiriki sera yake ya proksi. Duka hili maalum pia lina data ya tovuti ya muda, kwa hivyo halirithi kuingia kwa tovuti kunakopatikana kwenye mwonekano mwingine.

Weka usanidi kabla ya uvinjari. WebKit inaonya kwamba kubadilisha usanidi wa proksi wa duka kunaweza kukatiza mtandao wake wa sasa.

Upataji tofauti wa URLSession ukifuatiwa na loadHTMLString hushughulikia upataji huo wa HTML pekee. Picha, skripti na uvinjari wa baadaye bado hutumia mtandao wa mwonekano; duka ndilo ndoano ya umma ya kusanidi njia hiyo.

Makala zinazohusiana