如何以编程方式请求 Swift 中的桌面站点(没有 UIWebView)?

How to request desktop site in Swift programmatically (without UIWebView)?

桌面版网站的 HTML 代码在页眉中有一个 link 的 "apple-touch-icon" 缩略图,而移动版则没有。 我只需要获取这个 html 并解析。

那么,如何请求桌面站点(可能通过 URLRequest、URLSession 或其他方式)?

p.s。 我发现,我必须更改 User-Agent 字符串值,但同样,我没有找到如何在 Swift.

中执行此操作

WKWebView 应该可以解决您的问题 - 您可以在代码中定义它。这样做:

var webView : WKWebView!
override func loadView() {
    super.loadView()

    let config = WKWebViewConfiguration()
    webView = WKWebView(frame: self.view.frame, configuration: config)
    self.webView!.uiDelegate = self
    webView.customUserAgent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.109 Safari/537.36"
    //load URL here
    let url = NSURL(string: "https://whosebug.com/")!
    webView.load(URLRequest(url: url as URL))
    self.view.addSubview(webView)


}

取决于服务器逻辑,但在大多数情况下,在您的请求中设置 userAgent Header 就足够了:

let url = URL(string:"https://google.com")!
var request = URLRequest(url: url)
let userAgent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/605.1.12 (KHTML, like Gecko) Version/11.1 Safari/605.1.12"
request.addValue(userAgent, forHTTPHeaderField: "User-Agent")

let task = URLSession.shared.dataTask(with: request) { (data, response, error) in
 // Process reponse
}
task.resume()