用户代理 User Agent,是指浏览器,它的信息包括硬件平台、系统软件、应用软件和用户个人偏好
在UIWebView的一个代理方法里面,可以查看当前设备的UserAgent
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
//获取当前设备UserAgent
NSLog(@"%@",[requestvalueForHTTPHeaderField:@"User-Agent"]);
return YES;
}
得到是一串很长的东西
Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_1 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Mobile/11D201(这个只能在代理里获取一次,以后全部为空)
有时候,业务需要在这个agent后面加上一些特殊标识符来区分设备以及应用的平台,比如安卓和苹果版本,这个时候往往要在后面加上一些东西,那么如何修改UserAgent呢。
苹果不允许直接在UIWebView里面修改自己的UserAgent,就算你改了也会被马上覆盖.但是苹果提供了一种永久修改的方法,记住是永久修改,如果想改成其他的必须要覆盖以前的才行。
//修改agent
self.agentDic = [[NSDictionaryalloc] initWithObjectsAndKeys:@"Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_1 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Mobile/11D201 Ucard/IOS",
@"UserAgent", nil];
[[NSUserDefaultsstandardUserDefaults] registerDefaults:self.agentDic];
修改完毕。
在ios开发中,如何获取到是否使用了代理呢?以及使用的代理IP呢?:
- //得到代理
- CFDictionaryRef proxySettings = CFNetworkCopySystemProxySettings();
- NSDictionary *dictProxy = (__bridge_transfer id)proxySettings;
- NSLog(@"%@",dictProxy);
- //是否开启了http代理
- if ([[dictProxy objectForKey:@"HTTPEnable"] boolValue]) {
- NSString *proxyAddress = [dictProxy objectForKey:@"HTTPProxy"]; //代理地址
- NSInteger proxyPort = [[dictProxy objectForKey:@"HTTPPort"] integerValue]; //代理端口号
- NSLog(@"%@:%d",proxyAddress,proxyPort);
- }