WKWebView和UIWebView 分別設置全局UserAgent


WKWebView 設置全局UserAgent

關鍵是要設置customUserAgent(>=iOS 9.0),否則執行evaluateJavaScript:@"navigator.userAgent"獲取不到webView的UA:

//修改userAgent
+ (void)addToWebViewUserAgent:(NSString *)addAgent
{
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        WKWebView *webView = [WKWebView new];
        [webView evaluateJavaScript:@"navigator.userAgent" completionHandler:^(id _Nullable oldAgent, NSError * _Nullable error) {
            if (![oldAgent isKindOfClass:[NSString class]]) {
                // 為了避免沒有獲取到oldAgent,所以設置一個默認的userAgent
                // Mozilla/5.0 (iPhone; CPU iPhone OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148
                oldAgent = [NSString stringWithFormat:@"Mozilla/5.0 (%@; CPU iPhone OS %@ like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148", [[UIDevice currentDevice] model], [[[UIDevice currentDevice] systemVersion] stringByReplacingOccurrencesOfString:@"." withString:@"_"]];
            }
            
            //自定義user-agent
            if (![oldAgent hasSuffix:addAgent]) {
                NSString *newAgent = [oldAgent stringByAppendingFormat:@" DWD_HSQ/%@",addAgent];
                [[NSUserDefaults standardUserDefaults] registerDefaults:@{@"UserAgent":newAgent}];
                // 一定要設置customUserAgent,否則執行navigator.userAgent拿不到oldAgent
                webView.customUserAgent = newAgent;
            }
        }];
    });
}


UIWebView 設置全局UserAgent(建議使用WKWebView)

    // 修改全局UserAgent值
    UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectZero];
    NSString *userAgent = [webView stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"];
    NSString *newUserAgent = [userAgent stringByAppendingString:@" xxx"];//自定義需要拼接的字符串
    NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:newUserAgent, @"UserAgent", nil];
    [[NSUserDefaults standardUserDefaults] registerDefaults:dictionary];

參考:https://www.jianshu.com/p/6d243781f368


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM