我可以使用
更改用户代理- (BOOL)webView:(UIWebView *)webView2 shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
NSMutableURLRequest *req = (NSMutableURLRequest *)request;
NSString *versionString = [[NSBundle mainBundle] objectForInfoDictionaryKey:(NSString*)kCFBundleVersionKey];
NSLog(@"user agent = %@", [req valueForHTTPHeaderField: @"User-Agent"]);
if ([req valueForHTTPHeaderField:@"User-Agent"] != NULL) {
[req setValue:[NSString stringWithFormat:@"%@ %@", versionString, [req valueForHTTPHeaderField:@"User-Agent"]] forHTTPHeaderField:@"User-Agent"];
NSLog(@"user agent = %@", [req valueForHTTPHeaderField: @"User-Agent"]);
return YES
}
}
但是当我在设备http://whatsmyuseragent.com/上访问此网站时,我的用户代理没有改变。有没有办法改变用户代理?
答案 0 :(得分:1)
在玩了很长时间之后,我发现你可以change the User Agent without rooting。如果您正在构建应用程序,请确定这是否有帮助。
答案 1 :(得分:0)
您无法更改Safari显示的用户代理,只能更改您自己的应用程序使用的用户代理。
答案 2 :(得分:0)
我注意到模拟器有时会测试nil。我不确定这是故意的还是故意的。
答案 3 :(得分:0)
您可以在执行“手动”NSURLRequest
时更改用户代理的值,但我认为您无法在UIWebView
中更改它们。
原因是,传递给上面显示的方法的值不可变 - 您无法更改它们并期望应用程序的其余部分将“接受”修改。老实说,我很惊讶将NSURLRequest
投射到其可变变体然后更改它并不会导致您的应用崩溃。