# 如何将 HTTP 请求中的 UA 转化为可读的 UA 信息

- Link: https://www.ixiqin.com/2021/01/29/how-to-convert-ua-in-the-http-request-to-readable-ua-information/
- Published: 2021-01-29T00:35:56+08:00
- Author: 白宦成

文章目录

 [Toggle](https://www.ixiqin.com/2021/01/29/how-to-convert-ua-in-the-http-request-to-readable-ua-information/#)

 * [什么是 UA （User Agent）](https://www.ixiqin.com/2021/01/29/how-to-convert-ua-in-the-http-request-to-readable-ua-information/#%e4%bb%80%e4%b9%88%e6%98%af_ua_%ef%bc%88user_agent%ef%bc%89)
 * [UA 能够帮助我们理解什么？](https://www.ixiqin.com/2021/01/29/how-to-convert-ua-in-the-http-request-to-readable-ua-information/#ua_%e8%83%bd%e5%a4%9f%e5%b8%ae%e5%8a%a9%e6%88%91%e4%bb%ac%e7%90%86%e8%a7%a3%e4%bb%80%e4%b9%88%ef%bc%9f)
 * [如何将 UA 转换为可读的 UA 信息？](https://www.ixiqin.com/2021/01/29/how-to-convert-ua-in-the-http-request-to-readable-ua-information/#%e5%a6%82%e4%bd%95%e5%b0%86_ua_%e8%bd%ac%e6%8d%a2%e4%b8%ba%e5%8f%af%e8%af%bb%e7%9a%84_ua_%e4%bf%a1%e6%81%af%ef%bc%9f)
 * [总结](https://www.ixiqin.com/2021/01/29/how-to-convert-ua-in-the-http-request-to-readable-ua-information/#%e6%80%bb%e7%bb%93)

## 什么是 UA （User Agent）

UA 是 HTTP 在发送请求的时候，带上的请求方的各项基本信息。就我自己为例，我的 UA 是`
Mozilla/5.0 (Macintosh; Intel Mac OS X 11_1_0) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/88.0.4324.96 Safari/537.36 Edg/88.0.705.50`

这个 UA 当中包含了大量的我的基本信息，包括我的电脑信息、我的操作系统、浏览器的版本
等。

在具体的 UA 信息中，具体的结构为

    ```shcb-line-numbers
    User-Agent: <product> / <product-version> <comment>
    Code language: HTML, XML (xml)
    ```

如果有多组 UA 信息，则语法如下

    ```shcb-line-numbers
    User-Agent: Mozilla/5.0 (<system-information>) <platform> (<platform-details>) <extensions>
    Code language: HTML, XML (xml)
    ```

## UA 能够帮助我们理解什么？

UA 可以提供设备的基本信息，比如浏览器、比如设备的版本号等，有了这些信息，我们就可以
分析用户的使用习惯、使用场景等信息。

比如，当 UA 中有大量的访问是来自微信浏览器，那么你就可以考虑针对微信的浏览器提供
一些优化，比如使用微信自带的第三方 SDK 等信息。

## 如何将 UA 转换为可读的 UA 信息？

各种语言都有自己的 SDK 来实现从 UA 的 String 提取出操作系统的信息，一般来说，都是
通过正则表达式来识别的，你可以在 Github 上找到你所使用的语言提供的 SDK。

不过，除了使用开源的 SDK 以外，你还可以考虑使用一些服务来进行解析，比如我今天发现
的 User Stack

![](https://postimg.aliavv.com/mbp2021/kyibb.jpg)

UserStack 是一个 UA 识别服务，如果你接入该服务，就无需自己维护 User Agent 的识别
规则，由服务帮你维护，你只需要调用该 API 即可实现对设备的识别。

## 总结

UA 转换为人类可读的信息需要通过第三方 API 或开源的 SDK 来实现，你可以根据自己的需要
来选择不同的方案。SDK 免费可用，但可能更新不够频繁，无法很好的兼容一些重要的设备。
