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

时间:2018-11-17 15:50:56

标签: ios swift wkwebview user-agent

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

我想假装我是Mac,正在访问特定网站。 请修改此代码并将其发布在评论中

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

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

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

Error

2 个答案:

答案 0 :(得分:1)

我在这里看到的问题,是在没有设置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)
        }

    }
}

答案 1 :(得分:0)

WKWebView具有一个名为customUserAgent的属性,专门用于此目的:

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