如何为移动设备测试应用修改FMX.WebBrowser的User Agent?
修改FMX.WebBrowser的User Agent(移动设备)
针对移动设备上的FMX.WebBrowser,可通过访问底层原生控件的方式修改User Agent,以下是安卓和iOS平台的具体实现方法:
安卓平台
FMX.WebBrowser在安卓端基于原生WebView控件,直接获取该控件实例即可设置自定义UA:
uses Androidapi.JNI.WebKit, Androidapi.Helpers; procedure TMainForm.FormCreate(Sender: TObject); var LWebView: JWebView; begin // 确保WebBrowser已初始化完成 if Assigned(WebBrowser1.Handle) then begin LWebView := TJWebView.Wrap(WebBrowser1.Handle); // 设置自定义User Agent字符串 LWebView.getSettings.setUserAgentString(StringToJString('Mozilla/5.0 (Linux; Android 13; SM-G998B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Mobile Safari/537.36 CustomTestApp/1.0')); end; end;
iOS平台
iOS端FMX.WebBrowser底层使用WKWebView(iOS 9及以上),可通过配置WKWebViewConfiguration或直接设置customUserAgent属性:
uses iOSapi.WebKit, Macapi.Helpers; procedure TMainForm.FormCreate(Sender: TObject); var LWebView: WKWKWebView; begin if Assigned(WebBrowser1.Handle) then begin LWebView := TWKWKWebView.Wrap(WebBrowser1.Handle); // 方式1:直接设置完整User Agent LWebView.customUserAgent := StringToNSString('Mozilla/5.0 (iPhone; CPU iPhone OS 16_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.5 Mobile/15E148 Safari/604.1 CustomTestApp/1.0'); // 方式2:在默认UA后添加自定义后缀 // LWebView.configuration.setApplicationNameForUserAgent(StringToNSString('CustomTestApp/1.0')); end; end;
验证方法
加载网页后,可通过执行JavaScript代码确认User Agent是否修改成功:
WebBrowser1.EvaluateJavaScript('navigator.userAgent', procedure(const AResult: string) begin ShowMessage('当前UA:' + AResult); end);
内容的提问来源于stack exchange,提问作者Yordan Yanakiev
相关产品推荐
相关产品推荐

