Flutter如何设置PC端的UserAgent

在Flutter开发PC端应用时,如何自定义或修改UserAgent?目前使用的httpdio库发送请求时,默认的UserAgent显示为移动端标识,导致部分服务端接口返回异常。请问是否有全局配置方法,或者需要针对每个请求单独设置?最好能提供具体的代码示例。

2 回复

在Flutter中设置PC端UserAgent,使用package:http库时,可在请求头中添加User-Agent字段,值为PC浏览器标识字符串,例如:

headers: {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)'}

更多关于Flutter如何设置PC端的UserAgent的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter中设置PC端UserAgent可以通过以下方法实现:

1. 对于WebView(flutter_inappwebview包)

import 'package:flutter_inappwebview/flutter_inappwebview.dart';

InAppWebView(
  initialUrlRequest: URLRequest(url: WebUri('https://example.com')),
  initialSettings: InAppWebViewSettings(
    // 设置PC端UserAgent
    userAgent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
  ),
)

2. 对于http请求(使用http或dio包)

使用dio:

import 'package:dio/dio.dart';

void fetchData() async {
  Dio dio = Dio();
  
  // 设置PC端UserAgent
  dio.options.headers['User-Agent'] = 
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36";
  
  Response response = await dio.get('https://api.example.com/data');
}

使用http包:

import 'package:http/http.dart' as http;

void fetchData() async {
  var headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
  };
  
  var response = await http.get(
    Uri.parse('https://api.example.com/data'),
    headers: headers,
  );
}

3. 常用PC端UserAgent示例

  • Windows Chrome: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
  • Windows Edge: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36 Edg/91.0.864.59"
  • macOS Safari: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.1 Safari/605.1.15"

注意事项

  • 确保UserAgent字符串格式正确
  • 某些网站可能会检测并限制非标准UserAgent
  • 在WebView中设置UserAgent可能会影响页面渲染

选择适合你使用场景的方法来设置PC端UserAgent即可。

回到顶部