Android 通用用户代理 (UA)

2023-11-25

我正在构建一个 Android 应用程序来显示来自服务器的内容源。服务器是一个移动网站(例如http://m.google.com),它跟踪来自各种移动客户端的流量。为了区分 Android 客户端,如何为我的应用程序提供通用字符串?

这就是我问这个的原因:

我得到的一些 Android 设备具有 UA 字符串,例如:

Mozilla/5.0 (Linux; U; Android 2.2.1; en-us; ADR6400L 4G Build/FRG83D) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1

Mozilla/5.0(Linux;U;Android 2.1;en-us;Eclair_SPR Build/30201)AppleWebKit/520.17(KHTML,如 Gecko)版本/4.0 Mobile Safari/520.17


要更改用户代理,您需要在 HTTP 请求中发送自定义 User-Agent: 标头。假设您使用 Android org.apache.http.client.HttpClient 类,您有两个选择:

  1. 在每个请求上设置用户代理标头。您可以通过在创建 HttpRequest(HttpPost、HttpGet 等)对象后调用 setHeader() 来完成此操作:


HttpGet get = new HttpGet(url);
get.setHeader("User-Agent", myUserAgent);
  
  1. 更改默认的用户代理参数,这将影响该 HttpClient 类的所有未来实例。为此,您可以使用 getParams() 从客户端读取 HttpParams 集合,然后使用 setParameter() 更新用户代理:


DefaultHttpClient http = new DefaultHttpClient(); 
http.getParams().setParameter(CoreProtocolPNames.USER_AGENT, myUserAgent);
  

如果您想追加而不是替换用户代理,您可以先读取现有用户代理,更改它,然后使用上述任一方法将其设置回来。

EDIT:

既然您说您正在使用 WebView 视图,您将需要在那里使用 WebSettings 自定义点。基本上是相同的过程。在调用任何 load() 方法(loadUrl、loadData 等)之前,您需要设置用户代理。只要 WebView 实例存在,更改后的用户代理就会持续存在,因此您可以在 Activity 的 onCreate() 中执行此操作:



view = (WebView)findViewById(R.id.webview);
view.getSettings().setUserAgentString(myUserAgent);
  

同样,如果您想追加而不是替换,请使用 getUserAgentString() 读取它,然后更新它并再次将其设置回来。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 通用用户代理 (UA) 的相关文章

随机推荐

  • Twig 使用 Silex 添加过滤器?

    使用 Silex 时将自定义过滤器连接到 Twig 的正确方法是什么 但保留现有的twig options intact 这就是我的意思 我有以下代码 app gt register new Silex Provider TwigServi
  • 在 SQL 2005 中更改聚集索引 (PK) 的最佳方法

    我有一个表 该表在两列上有聚集索引 表的主键 它的定义如下 ALTER TABLE Table ADD CONSTRAINT PK Table PRIMARY KEY CLUSTERED ColA ASC ColB ASC WITH SOR
  • 如何将 GWT 的编辑器框架与 gwt-platform 结合使用?

    我正在使用 gwt platform 并尝试实现 GWT 的编辑器框架 但我无法在演示者内部实现它 网络上有一些答案 说我必须以某种方式将 EditorDriver 注入 Presenter 中 但我不知道该怎么做 目前我尝试过但没有成功
  • CXF 如何在没有 Spring 的情况下在 CXF 端口上设置 SoapVersion

    我目前正在使用 CXF 开发一个没有 Spring 配置文件的 Web 服务客户端 它工作得很好 但我不知道如何使用 Java Api 设置绑定 SoapVersion 使用 Spring 文件 按如下方式完成
  • 如何使用Python 3在Mac上安装pyaudio?

    我首先尝试 pip install pyaudio 但有人告诉我 bash pip command not found 然后我尝试 pip3 install pyaudio 然后我得到 src portaudiomodule c 29 10
  • 从 Rprof() 获取更多信息

    我一直在尝试深入研究我编写的一些 R 代码中的时间消耗 所以我使用Rprof 但输出还不是很有帮助 gt summaryRprof by self self time self pct total time total pct lt dat
  • 是否可以分别推送不同架构的docker镜像?

    据我所知docker buildx build push将用您在中指定的架构覆盖现有的映像架构 platform范围 据我了解 在使用时必须同时构建和推动所有架构buildx 但是 我知道官方 docker 镜像使用arm64构建农场来构建
  • Null 不是一个使用 Expo 的对象(评估 'RNFetchBlob.DocumentDir')

    我正在使用 Expo 并尝试使用react native fetch blob 下载文件 import RNFetchBlob from rn fetch blob RNFetchBlob fetch GET http www exampl
  • 透明背景 JFrame Linux 上的动画

    我想为 Frame 或 JFrame 创建完全透明的背景并让它显示透明动画 我设法让它在 Windows 7 x64 中运行 但相同的代码无法在我的 Linux Lubuntu x64 15 04 上运行 下面的代码显示了我想要实现的目标
  • 我该怎么做:使用@databaseName

    DECLARE DatabaseName NVARCHAR max SET DatabaseName MainDb USE DatabaseName 行不通 怎样制作呢 如果你想像这样动态地执行它 你必须使用动态 SQL 意味着您想要在该数
  • 我们可以给静态数组的大小一个变量吗

    大家好 我想问一下 我已经读到 我们只能通过使用指针并使用 malloc 或 newlike 来声明动态数组 int array new int strlen argv 2 但我已经写了 int array strlen argv 2 它没
  • FFMPEG 命令在 Android Q 中不起作用

    尝试此命令来合并两个音频文件 但它在 Android 10 0 Q 中不起作用针对 SDK 29 但是 这个命令完全有效针对 sdk 24 至 28 我正在使用这个 FFMPEG 实现库 nl bravobit android ffmpeg
  • 将 JSON 显示为 HTML [关闭]

    Closed 这个问题是无关 目前不接受答案 关于如何将 JSON 嵌入到 HTML 页面中 并将 JSON 格式化为人类可读的样式 有什么建议吗 例如 当您在浏览器中查看 XML 时 大多数浏览器都会显示 XML 格式 缩进 正确的换行符
  • jquery如何做一个翻转效果?

    我试图模仿通常在移动设备上发现的效果 在移动设备上有一个面板 当您单击按钮时 它会旋转 而在另一侧它有一些其他信息 我发现了一些使用 css 转换的代码这是一个例子 the js signup on click function e e p
  • Perl6:获取 Perl5 模块的数组引用

    我正在尝试使用 Excel Writer XLSX 在 Perl6 中编写 Excel 笔记本 我正在使用 Inline Perl5 通过use Excel Writer XLSX from
  • Xcode 6 不显示 iOS 7.1 模拟器

    我在 Mac OS X 10 9 5 上拥有 Xcode 版本 6 0 1 6A317 以及所有 iOS 8 模拟器 我还下载了 iOS 7 1 模拟器 我正在开发一个适用于 iOS 8 和 iOS 7 的应用程序 我遇到的问题是 Xcod
  • Python copy.deepcopy() 函数无法正常工作[重复]

    这个问题在这里已经有答案了 我一直在使用深度复制功能和复制功能 并且我对它们都遇到了同样的问题 这就像副本是引用 或指针 而不是正确的副本 我正在Python中处理数据记录 类 也许可能是这样 我给你看一个例子 gt gt gt impor
  • 如何使用 ggplot2 从 qcc 包重现 pareto.chart 图?

    我一直在使用 R 中 qcc 包中的 pareto chart 函数 我真的很喜欢它 现在我想移植所有图形以使用 ggplot2 包 然而 尽管有出色的文档 但我对 ggplot2 的了解非常有限 因此我无法弄清楚所有细节 基本上我想要一个
  • 如何生成 a[i] != i 的排列?

    假设我有一个整数数组int a 0 1 N 1 where N的大小是a 现在我需要生成所有排列a s that a i i对全部0 lt i lt N 你会怎么做 下面是一些 C 实现的算法 该算法基于递归的双射证明 n n 1 n 1
  • Android 通用用户代理 (UA)

    我正在构建一个 Android 应用程序来显示来自服务器的内容源 服务器是一个移动网站 例如http m google com 它跟踪来自各种移动客户端的流量 为了区分 Android 客户端 如何为我的应用程序提供通用字符串 这就是我问这