2020-10-14 14:57:40
一、为什么要分析User-Agent(UA)?
在业务访问分析的角度上,分析User-Agent(UA)标识的主要目的是了解访问业务系统的具体方式和工具。通过UA标识,我们可以判断访问是否来自正常浏览器,或是其他可能存在风险的访问方式。正常浏览器的UA标识意味着访问行为相对可信,而其他类型的UA则可能表明存在潜在的安全风险或异常行为。
二、UA分类
搜索引擎爬虫UA标识
这类UA标识通常包含“spider”、“bot”等字样,并附带搜索引擎厂商的标识。例如,百度的UA可能是“Mozilla/5.0 (compatible; Baiduspider/2.0; +
搜索引擎爬虫对于网站的SEO和流量至关重要,因此拦截这些爬虫可能导致公司推广无效。

正常浏览器UA标识
正常浏览器的UA标识通常包含浏览器的名称、版本、操作系统等信息。例如,谷歌Chrome浏览器的UA可能是“Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36”,火狐浏览器的UA可能是“Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/110.0”。
浏览器版本号虽然可以修改,但仍是分析的一个因素。低版本的浏览器可能表明是模拟器、作弊器或特定厂商封装的浏览器。

代码请求UA标识
通过代码请求网页时,默认携带的UA标识与使用的开发语言相关。例如,Java的UA可能是“Java/1.8.0_161”,Python的UA可能是“Python/3.7 aiohttp/3.8.1”。
如果代码请求前修改了UA标识,则无法通过这种判断来识别。

其他工具的UA标识
一些工具默认自带特有的UA标识,如Swagger-Codegen/1.0.5/java、扫描器、爬虫工具等。
这些工具的UA标识在不进行自定义修改的情况下,可以识别出所使用的工具。

三、异常分析
搜索引擎爬虫标识分析
正常搜索引擎爬虫应遵循robots.txt文件约束。如果超出约束范围进行爬取,可能是伪造的爬虫。
如果爬虫UA进行登录操作,则很可能是恶意的。
代码UA标识分析
代码的UA通常被认为是异常的,除非研发为了验证而定时脚本访问且未定义UA。
需要确认是否为研发行为导致的异常UA。
正常浏览器标识分析
低版本的浏览器可能表明存在异常。
访问频率远高于正常人操作速度的可能存在异常。
接口访问行为分析可以识别有针对性的爬数据行为。
恶意攻击往往针对接口数据,可以基于UA做统计分析来识别异常。

四、如何防护?
依赖UA标识来分辨正常和异常用户意义有限,因为伪造UA的成本很低。
首次尝试攻击时可能会使用默认的代码标识,此时可以识别异常行为。
可以在风控系统或WAF中配置异常UA标识规则进行拦截。
当发现同一UA存在大量访问或疑似攻击行为时,可以全面进行风控识别。
使用风控系统进行全面拦截并弹出人机验证是一种可行方式,但WAF规则过于僵硬。
无论何种处置规则都会影响正常用户,因此需要在控制风险的同时尽可能减少影响面。

综上所述,分析User-Agent标识对于识别异常访问行为具有重要意义。然而,由于伪造UA的成本较低,因此不能仅依赖UA来分辨正常和异常用户。在实际应用中,需要结合其他安全手段进行综合防护。