如何使用Swift 4.2在WebView中更改用户代理? [英] How do I change the user agent in my WebView using Swift 4.2?

查看:62
本文介绍了如何使用Swift 4.2在WebView中更改用户代理?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

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

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

  class ViewController:UIViewController {@IBOutlet弱var webview:WKWebView!覆盖func viewDidLoad(){super.viewDidLoad()let userAgent ="Mozilla/5.0(Windows NT 5.1)AppleWebKit/537.36(KHTML,例如Gecko)Chrome/34.0.1847.116 Safari/537.36 Mozilla/5.0(iPad; U; CPU OS 3_2如Mac OS X; zh-cn)AppleWebKit/531.21.10(KHTML,例如Gecko)版本/4.0.4移动版/7B334b Safari/531.21.10"让myURL = NSURL(string:"http://website.com")让myURLRequest:NSURLRequest = URLRequest(URL:myURL!as URL)作为NSURLRequestwebview.load(myURLRequest作为URLRequest)myURLRequest.setValue(userAgent,forKey:"Mozilla/5.0(Macintosh; Intel Mac OS X 10_10_1)AppleWebKit/537.36(KHTML,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弱var webview:WKWebView!覆盖func viewDidLoad(){super.viewDidLoad()let userAgent ="Mozilla/5.0(Windows NT 5.1)AppleWebKit/537.36(KHTML,例如Gecko)Chrome/34.0.1847.116 Safari/537.36 Mozilla/5.0(iPad; U; CPU OS 3_2如Mac OS X; zh-cn)AppleWebKit/531.21.10(KHTML,例如Gecko)版本/4.0.4移动版/7B334b Safari/531.21.10"如果让myURL = URL(string:"http://website.com"){var myURLRequest = URLRequest(URL:myURL)myURLRequest.setValue(userAgent,forHTTPHeaderField:用户代理")webview.load(myURLRequest)}}} 

I'm struggling with changing the user agent on my project using the latest Xcode version with swift 4.2 .

I want to pretend that I'm a Mac visiting a specific website. Please edit this code and post it in the comments

Here's my code so far.

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

If I build it I receive this error:

![Error][2].

解决方案

The problem i seeing here, first time loading without the user-agent set and then setting it wrongly and put another request

Please check the appledoc, for setting up the HTTPHeaderField.

Based on your given code, the solution would be

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

    }
}

这篇关于如何使用Swift 4.2在WebView中更改用户代理?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆