flutter 多平台用户代理

问题描述 投票:0回答:2

我正在使用 Flutter 开发一个适用于 Android、iOS 和 Web 的多平台项目。如何获得

user-agent
添加到请求的标头?

我使用

http
包来处理请求。 我想要的示例用户代理:

谷歌sdk_gphone_x86,Android 11(30)

Postman运行时/7.26.8

Chrome、Mozilla、Safari

flutter user-agent flutter-http
2个回答
3
投票

使用设备信息加上

然后像下面这样使用:

import 'package:device_info_plus/device_info_plus.dart';

DeviceInfoPlugin deviceInfo = DeviceInfoPlugin();
AndroidDeviceInfo androidInfo = await deviceInfo.androidInfo;
print('Running on ${androidInfo.model}');  // e.g. "Moto G (4)"

IosDeviceInfo iosInfo = await deviceInfo.iosInfo;
print('Running on ${iosInfo.utsname.machine}');  // e.g. "iPod7,1"

WebBrowserInfo webBrowserInfo = await deviceInfo.webBrowserInfo;
print('Running on ${webBrowserInfo.userAgent}');  // e.g. "Mozilla/5.0 
(X11; Ubuntu; Linux x86_64; rv:61.0) Gecko/20100101 Firefox/61.0"

0
投票

我通过这个函数恢复了用户代理。我使用 device info plus 包来检索信息。

  Future<String> getUserAgent() async {
    DeviceInfoPlugin deviceInfo = DeviceInfoPlugin();
    String userAgent = '';

    if (Platform.isAndroid) {
      AndroidDeviceInfo androidInfo = await deviceInfo.androidInfo;
      userAgent =
          'Mozilla/5.0 (Linux; Android ${androidInfo.version.release}; ${androidInfo.model}) '
          'AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.36';
    } else if (Platform.isIOS) {
      IosDeviceInfo iosInfo = await deviceInfo.iosInfo;
      userAgent =
          'Mozilla/5.0 (iPhone; CPU iPhone OS ${iosInfo.systemVersion} like Mac OS X) '
          'AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/${iosInfo.identifierForVendor}';
    } else {
      WebBrowserInfo webBrowserInfo = await deviceInfo.webBrowserInfo;
      userAgent = webBrowserInfo.userAgent!;  
    }

    return userAgent;
  }
© www.soinside.com 2019 - 2024. All rights reserved.