过滤 User-Agent
用 http.user_agent 匹配客户端标识,可以快速区分访问来自浏览器、移动应用开发包还是脚本工具。排查「到底是谁在访问这个接口」、确认爬虫行为、或者按客户端类型切分问题时,这一条过滤非常高效。需要注意的是,客户端标识可以被随意伪造,只能作为分类参考。
基本信息
| 适用平台 | Wireshark 显示过滤器(明文 HTTP,或已解密的 HTTPS) |
|---|---|
| 匹配语法 | http.user_agent contains "..." |
| 正则写法 | http.user_agent matches "(?i)curl|wget" |
| 前提条件 | 流量未加密,或已配置密钥日志完成解密 |
典型使用场景
- 区分客户端类型:按标识特征切分浏览器、应用与脚本
- 定位版本问题:移动端常把版本号写进标识,便于灰度排查
- 识别采集器:结合来源地址与请求频率一起判断
- 排查兼容问题:空标识与缺失标识是两种状态,分别统计
- 统计调用来源:按标识聚合,看究竟是谁在调用接口
常用示例
常用示例
http.user_agent contains "okhttp" # 安卓客户端常用
http.user_agent contains "python-requests" # 脚本采集
http.user_agent matches "(?i)curl|wget" # 命令行工具
http.user_agent == "" # 标识为空的情况判读要点
| 现象 | 含义 | 注意事项 |
|---|---|---|
| 标识含版本号 | 客户端实现较规范 | 可用来按版本排查问题 |
| 标识为空字符串 | 客户端未填写内容 | 与字段缺失不同 |
| 标识为常见工具名 | 可能是脚本或采集器 | 结合频率与来源判断 |
| 标识与来源不符 | 可能被伪造 | 不能作为唯一判断依据 |
客户端标识可以被随意伪造,把它当成身份凭证会得出错误结论。判断真实来源时要结合源地址、请求频率以及服务端日志一起看。
移动端开发包往往把应用名与版本号写进标识,按版本过滤能快速定位灰度问题,这是它最有价值的用法之一。
标识为空与字段缺失是两种不同状态:前者是客户端发了空值,后者是这条请求根本没有携带该字段。排查兼容性问题时应当分别统计。