8

任务是在网络服务器端获取一些设备的一些统计数据。为此,我想知道特定 Android 设备上默认浏览器的用户代理字符串,例如:


  • 宏达电:
    • HTC Jetstream
    • HTC 传单
    • HTC Evo View 4G

  • 关系:
    • 连结 7
    • 连结 10

  • 三星:
    • 银河标签
    • 银河标签 2
    • Galaxy Note

  • 摩托罗拉:
    • 摩托罗拉 Xyboard 8"
    • 机器人 Xyboard
    • 摩托罗拉 Xyboard 10"

有没有简单的方法知道它?是否有一个众所周知的列表将设备名称映射到用户代理字符串?另外,如果我应该采取不同的方法 - 请提出建议。

4

6 回答 6

6

在我看来,要计算基于 Android 设备的各种用户代理的命中,您应该创建一个指向服务器的URL 。在应用程序启动时获取用户代理并发送到您的服务器。

我运行此代码以获取用户代理

        WebView mes = new WebView(this);
        String str = mes.getSettings().getUserAgentString();
        Log.i("My User Agent", str);

在三星平板电脑 10.1 英寸模拟器上,我得到了用户代理

Mozilla/5.0 (Linux; U; Android 3.0; en-us; sdk Build/HONEYCOMB) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13

在 Nexus 模拟器上我得到了

Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; google_sdk Build/MR1) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30
于 2013-01-05T09:12:21.917 回答
4

虽然这不是一个直接的答案,但我想提出这个问题:

请注意,客户端的用户代理可以轻松修改。例如在编程方面:

HttpParams params = new BasicHttpParams();
HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
HttpProtocolParams.setContentCharset(params, HTTP.UTF_8);
HttpProtocolParams.setUserAgent(params, "WAHAHAHA");
HttpConnectionParams.setConnectionTimeout(params, HTTP_CONNECTION_TIMEOUT);
HttpConnectionParams.setSoTimeout(params, HTTP_READ_TIMEOUT);
HttpClient newHttpClient = new DefaultHttpClient(params);

当使用它HttpClient访问您的站点时,用户代理将是“哇哈哈”

此外,市场上的一些网络浏览器如海豚浏览器允许用户输入他们想要的任何用户代理组合。

因此,我认为从用户代理收集的命中计数统计信息不会那么可靠,我建议找到另一个标准来收集命中计数信息 =]

于 2013-01-03T04:06:42.933 回答
3

您可以在此处找到用户代理列表

并在服务器上检查它们

于 2012-12-25T16:20:23.777 回答
3

我建议您修改现有的解决方案,例如用 perl 编写的Apache Mobile Filter 。它使用51Degrees XML 文件和大约 70k 用户代理。您只需找到有趣的脚本并修改 AMF 脚本,以便收集有趣的数据。更重要的是 51Degrees 和 AMF 也可以用来识别用户的设备是否是移动的,它的屏幕尺寸等。

于 2012-12-29T11:28:49.537 回答
2

结帐UserAgentString.com。它还有一个Android Webkit Browser User Agent Strings列表。

他们还有一个 API来解析 UA 字符串并返回键值对或 JSON 列表。

于 2012-12-29T11:23:40.983 回答
1

创建一个 Webview 并使用http://developer.android.com/reference/android/webkit/WebSettings.html#getDefaultUserAgent%28android.content.Context%29,没有将设备名称映射到用户代理的列表,通过我建议通过运行您的应用程序的移动设备将设备类型和用户代理发送到服务器。

于 2012-12-25T16:08:41.460 回答