如何使用 Swift 4.2 在我的 WebView 中更改用户代理?

How do I change the user agent in my WebView using Swift 4.2?

我正在努力使用最新的 Xcode 版本 swift 4.2 来更改我的项目的用户代理。

我想假装我是 Mac 访问特定网站。 请编辑此代码并在评论中post

到目前为止,这是我的代码。

class ViewController: UIViewController {
    @IBOutlet weak var webview: WKWebView!

    override func viewDidLoad() {
        super.viewDidLoad()

        let userAgent = "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36 Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B334b Safari/531.21.10"
        let myURL = NSURL(string: "http://website.com")
        let myURLRequest:NSURLRequest = URLRequest(url: myURL! as URL) as NSURLRequest
        webview.load(myURLRequest as URLRequest)
        myURLRequest.setValue(userAgent, forKey: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.1 Safari/537.36")

        webview.load(URLRequest(url: myURL! as URL))
    }
}

如果我构建它,我会收到此错误:

![错误][2].

我在这里看到的问题,第一次加载时没有设置 user-agent 然后设置错误并提出另一个请求

请检查 appledoc,以设置 HTTPHeaderField。

根据您给定的代码,解决方案是

class ViewController: UIViewController {
     @IBOutlet weak var webview: WKWebView!

     override func viewDidLoad() {
        super.viewDidLoad()

        let userAgent = "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36 Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B334b Safari/531.21.10"
        if let myURL = URL(string: "http://website.com") {
            var myURLRequest= URLRequest(url: myURL)
            myURLRequest.setValue(userAgent, forHTTPHeaderField:"user-agent")
            webview.load(myURLRequest)
        }

    }
}

WKWebView 有一个名为 customUserAgent 的 属性 正是为了这个目的:

let customUserAgent = "Mozilla/5.0 ..." // Your custom user agent string goes here"
webView.customUserAgent = customUserAgent