ios swift uiwebview user-agent nsurlrequest

ios - ¿Cómo puedo configurar el encabezado "User-Agent" de un UIWebView en Swift?



nsurlrequest (3)

Estoy usando Xcode 6 para una aplicación de iOS con Swift. Tengo un simple ViewController con un UIWebView incrustado. Puedes encontrar el código a continuación. Ahora quiero cambiar el encabezado HTTP de User-Agent . Intenté usar el método setValue de NSURLRequest pero no funcionó (vea la línea sin comentarios). ¿Alguien sabe cómo hacer eso?

import UIKit class WebViewController: UIViewController { @IBOutlet weak var webView: UIWebView! override func viewDidAppear(animated: Bool) { var url = NSURL(string: "https://www.samplepage.com") var request = NSMutableURLRequest(URL: url) // request.setValue("Custom-Agent", forHTTPHeaderField: "User-Agent") webView.loadRequest(request) } }


Esto cambiará el agente de cualquier llamada realizada a través de la pila "normal".

Swift 2:

NSUserDefaults.standardUserDefaults().registerDefaults(["UserAgent": "Custom-Agent"])

Swift 3:

UserDefaults.standard.register(defaults: ["UserAgent": "custom value"])


Para cambiar entre el agente de usuario falso y el original, puedes usar mi función:

Swift 4 :

var originalUserAgent:String? = nil let fakeUserAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36" func setUserAgent(fake: Bool) { if originalUserAgent == nil { originalUserAgent = UIWebView().stringByEvaluatingJavaScript(from: "navigator.userAgent") } guard let originalUserAgent = originalUserAgent else { return } if (fake) { UserDefaults.standard.register(defaults: ["UserAgent": fakeUserAgent]) } else { UserDefaults.standard.register(defaults: ["UserAgent": originalUserAgent]) } } // then use setUserAgent(fake: false)


Si desea adjuntar a la cadena de agente de usuario existente (útil para ayudar a las páginas web dinámicas que se adaptan al agente de usuario), puede usar lo siguiente.

let userAgent = UIWebView().stringByEvaluatingJavaScriptFromString("navigator.userAgent")! + " Custom-Agent" NSUserDefaults.standardUserDefaults().registerDefaults(["UserAgent" : userAgent])