如何更改WKWebview
使用的用户代理?
使用较旧的WebView
,我可以编写以下内容来更改用户代理:
[myWebView setCustomUserAgent:@"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4)
AppleWebKit/537.77.4 (KHTML,like Gecko) Version/7.0.5 Safari/537.77.4"];
答案 0 :(得分:7)
Swift非常简单。只需将以下内容放入您的App Delegate didFinishLaunchingWithOptions
。
NSUserDefaults.standardUserDefaults().registerDefaults(["UserAgent" : "Custom Agent"])
如果要附加到现有代理字符串,则:
let userAgent = UIWebView().stringByEvaluatingJavaScriptFromString("navigator.userAgent")! + " Custom Agent"
NSUserDefaults.standardUserDefaults().registerDefaults(["UserAgent" : userAgent])
注意:您需要卸载并重新安装应用程序,以避免附加到现有代理字符串。
答案 1 :(得分:3)
我没有答案。但是,到目前为止我的研究中有一些指示:
在iOS中,可以为UIWebView设置自定义用户代理,如下所示:
NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:agent, @"UserAgent", nil];
[[NSUserDefaults standardUserDefaults] registerDefaults:dictionary];
在OSX中,WebView元素有一个setCustomUserAgent
方法可以解决问题。
但是,这对WKWebView(至少在OSX中)不起作用。我也无法从Apple那里找到任何关于它的文档。
希望有人可以帮忙!
答案 2 :(得分:3)
我遇到了同样的问题,但设法使用loadHTMLString
和WKWebView
上NSMutableURLRequest
的组合来解决这个问题。
我对WKWebView
本身如何调用某个方法的搜索引导我http://trac.webkit.org/changeset/165594,这意味着有一个私有方法_setCustomUserAgent
来执行此操作。我对cocoa / swift的熟练程度不足以说明这一点。
我最终使用下面的代码,因为我真的只需要获取单个URL的内容并显示它,但它可能在某种程度上有所帮助。
它的作用是简单地将URL的内容加载到WKWebView
字符串中,我怀疑你可能会丢失后退/前进导航等等,它只适用于初始页面显示,如{{1}将接管点击次数和资产加载。
(请注意,此示例是用Swift编写的,而不是Objective-C)
WKWebView
答案 3 :(得分:2)
这可能不太理想,但您可能会实现自定义NSURLProtocol处理程序来拦截HTTP请求并使用您的自定义用户代理标头修改它们。我认为这不适用于iOS,因为WKWebView会在进程外发出请求并绕过任何已注册的NSURLProtocols。但它可能适用于OS X?
答案 4 :(得分:1)
用户在文本字段中输入了URL,您可以使用NSMutableURLRequest对象完全控制NSURLRequest,并为其设置标题字段。
但是,对于用户在Web视图中实际点击的内容,您可能无法控制明显且清晰记录的Objective-C域。 除了WKWebView似乎推动的事情,我没有看到任何记录的方式,JavaScript。所以,这意味着您可以执行此处发布的操作: Mocking a useragent in javascript? 使用脚本注入API。
这就是我不喜欢WKWebView的原因。我想要它,但我不想学习用JavaScript做一半的事情。
因此,您可以创建一个WKUserScript对象来执行此操作,并将其注入时间设置为WKUserScriptInjectionTimeAtDocumentStart。这将使您能够处理文档中页面元素所请求的内容,只要页面本身没有加载其他冲突的脚本。
答案 5 :(得分:-7)
首先退出Safari。然后打开终端并粘贴此命令,并按Enter:
默认写入com.apple.Safari CustomUserAgent“\”Mozilla / 5.0(Macintosh; Intel Mac OS X 10_9_0)AppleWebKit / 538.46(KHTML,类似Gecko)版本/ 7.1 Safari / 537.85.7 \“”
打开Safari,你就完成了。
要撤消此更改,请关闭Safari并将此命令粘贴到终端:
默认删除com.apple.Safari CustomUserAgent
有时可能需要重新启动才能让这些更改坚持下去,不确定原因,可能是缓存事件。