欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

iOS 获取UserAgent

程序员文章站 2022-05-09 13:47:12
...

User Agent中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。

获取UserAgent:在AppDelegate中添加如下代码,加上App独有属性。

    UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectZero];
    NSString *oldAgent = [webView stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"] ?:@"";
    //add my info to the new agent
    NSString *systemVersion  = [[UIDevice currentDevice] systemVersion];
    NSString *currentVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
    CGFloat  iphoneScale     = [[UIScreen mainScreen] scale];
    NSString *model          = [[UIDevice currentDevice] model];
    NSString *localeIdentifier = [[NSLocale currentLocale] localeIdentifier];
    NSString *identifier = [[NSBundle mainBundle] bundleIdentifier];
    NSString *appendAgent = [NSString stringWithFormat:@"%@/%@ (%@/%@ ; %@; Scale/%0.2f)", identifier,currentVersion, model,systemVersion,localeIdentifier,iphoneScale];
    if ([oldAgent rangeOfString:appendAgent].location == NSNotFound) {
        NSString *newAgent  = [NSString stringWithFormat:@"%@ %@", oldAgent,appendAgent];
        XHLog(@"new agent :%@", newAgent);
        [[NSUserDefaults standardUserDefaults] registerDefaults:@{@"UserAgent": newAgent,@"HTTPUserAgent":appendAgent}];
    }

oldAgent:Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Mobile/15A372

WKWebView:获取方式为异步,一般放在控制器初始化WKWebView中,只有当在App中加载WKWebView网页的时候,才会回调到Block里面获取到userAgent的值。

// 方法是异步的
    WKWebViewConfiguration* webViewConfig = WKWebViewConfiguration.new;
    webViewConfig.allowsInlineMediaPlayback = YES;
    
    WKWebView *wkWebView = [[WKWebView alloc] initWithFrame:CGRectMake(0, 0, kScreenWidth, kScreenHeight - kStatusBarHeight - KNavgationBarHeight) configuration:webViewConfig];
    
    wkWebView.navigationDelegate = self;
    wkWebView.UIDelegate = self;
    [self.view addSubview:wkWebView];
[wkWebView evaluateJavaScript:@"navigator.userAgent" completionHandler:^(id result, NSError *error) {
    DLog(@"userAgent :%@", result);
    NSString *systemVersion  = [[UIDevice currentDevice] systemVersion];
    NSString *currentVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
    CGFloat  iphoneScale     = [[UIScreen mainScreen] scale];
    NSString *model          = [[UIDevice currentDevice] model];
    NSString *localeIdentifier = [[NSLocale currentLocale] localeIdentifier];
    NSString *identifier = [[NSBundle mainBundle] bundleIdentifier];
    NSString *appendAgent = [NSString stringWithFormat:@"%@/%@ (%@/%@ ; %@; Scale/%0.2f)", identifier,currentVersion, model,systemVersion,localeIdentifier,iphoneScale];
    if ([result rangeOfString:appendAgent].location == NSNotFound) {
        NSString *newAgent  = [NSString stringWithFormat:@"%@ %@", result,appendAgent];
        XHLog(@"new agent :%@", newAgent);
        [[NSUserDefaults standardUserDefaults] registerDefaults:@{@"UserAgent": newAgent,@"HTTPUserAgent":appendAgent}];
 }];

result:Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Mobile/15A372