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)
}

התצוגה המוחזרת משתמשת ב-WKWebsiteDataStore ייעודי שאינו מתמיד. טענו את האתר הרצוי דרך אותה תצוגה. השתמשו בחשבון המתווך או השמיטו את applyCredential עבור פרוקסי שאינו דורש כזה. עבור ענף ה-HTTP הלא מאומת הזה, רשימת פרוקסי ה-HTTP מספקת נקודות קצה מועמדות עבור מאגר הנתונים.

כל תצוגה שחולקת מאגר זה חולקת את מדיניות הפרוקסי שלו. למאגר ייעודי זה יש גם נתוני אתר זמניים, ולכן הוא אינו יורש התחברות אתר קיימת של תצוגה אחרת.

שמרו על התצורה לפני הניווט. WebKit מזהיר ששינוי תצורת הפרוקסי של מאגר עלול לקטוע את פעילות הרשת הנוכחית שלו.

שליפת URLSession נפרדת ואחריה loadHTMLString מכסה רק את שליפת ה-HTML הזו. תמונות, סקריפטים וניווט מאוחר יותר עדיין משתמשים ברשת של התצוגה; המאגר הוא הוו הציבורי להגדרת המסלול הזה.

מאמרים קשורים