我正在使用Xcode 6作为带有Swift的iOS应用程序。我有一个带有嵌入式UIWebView的简单ViewController。你可以在下面找到代码。现在我想更改User-Agent
HTTP标头。我尝试使用setValue
的{{1}}方法,但它不起作用(请参阅未注释的行)。有谁知道怎么做?
NSURLRequest
答案 0 :(得分:39)
这将改变通过“正常”进行的任何通话的座席代理。叠加。
斯威夫特2:
NSUserDefaults.standardUserDefaults().registerDefaults(["UserAgent": "Custom-Agent"])
斯威夫特3:
UserDefaults.standard.register(defaults: ["UserAgent": "custom value"])
答案 1 :(得分:28)
如果要附加到现有用户代理字符串(用于帮助适应用户代理的动态网页),则可以使用以下内容。
let userAgent = UIWebView().stringByEvaluatingJavaScriptFromString("navigator.userAgent")! + " Custom-Agent"
NSUserDefaults.standardUserDefaults().registerDefaults(["UserAgent" : userAgent])
答案 2 :(得分:0)
要在假用户代理和原始用户代理之间切换,您可以使用我的功能:
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)