现代浏览器支持多种语言的内容显示、界面本地化和用户偏好设置。这一功能最初是为了方便用户,如今已成为反欺诈系统的重要组成部分。通过分析语言设置,可以检测出用户声明的配置文件与其实际设备参数之间可能存在的差异。 #### 什么是浏览器语言? 浏览器语言定义用于显示网页、浏览器界面和其他元素的语言。浏览器语言是浏览器在接受语言 HTTP 标头中发送给服务器的首选语言列表。语言信息也可以通过 JavaScript 中的 navigator.language 或 navigator.languages 对象获取。 #### 语言指纹是如何形成的? 语言指纹包括以下数据: 1. **Accept-Language** - 首选语言及其优先级列表。 - 例如:en-US,en;q=0.9,ru;q=0.8 2. **navigator.language** - 浏览器的主要语言。 - 例如:en-US 3. **navigator.languages**-首选语言数组。 - 示例:“en-US”、"en [ “en-US”, “en”, “ru-RU” ] 4. 4. **浏览器界面语言** - 浏览器本身的显示语言。 5. **操作系统语言** - 在操作系统级别设置的语言。 这些参数组成一个组合,可用于识别用户。 #### 反欺诈系统中语言的应用 反欺诈系统通过分析语言数据来识别潜在的可疑用户。以下是一些主要的使用场景: 1. **检测不一致之处:** - 如果浏览器界面的语言与操作系统的语言不一致。 - 如果接受语言包含用户所在地区不使用的语言。 - 如果用户首选语言变化过于频繁。 2. **检查地理位置是否匹配:** - 将语言设置与用户通过 IP 地址或 GPS 确定的地理位置进行比较。 - 例如,如果 IP 地址指向法国,但语言设置却设置为中文,这可能会引起怀疑。 3. **参数欺骗检测:** - 如果 navigator.language 和 navigator.languages 参数冲突。 - 如果每次新访问时浏览器语言都发生变化。 ###### 欺骗语言参数的方法 攻击者为了规避反欺诈系统,可以使用各种方法更改语言设置: 1. ** 交换接受-语言:** HTTP 标头。 - 使用代理服务器或特殊软件,更改标头的内容,使其符合所需的配置文件。 2. **更改浏览器设置:** - 使用允许任意设置 navigator.language 和 navigator.languages 值的反检测浏览器。 3. **本地化模拟:** - 浏览器更改界面语言,以制造区域匹配的假象。 4. **部分屏蔽:** - 在 “接受语言”(Accept-Language)中添加其他语言,以创建更通用的配置文件。 ###### 反欺诈系统如何检测语言欺骗? 1. **一致性分析:** - 检查所有语言参数(HTTP 标头、navigator.language、界面语言)是否一致。 2. 2. **罕见组合检查:** - 识别现实生活中很少出现的异常语言偏好(如 en-GB、ar-KW、ja-JP)。 3. **与基准数据比较:** 使用数据库测试语言偏好的可能性。 - 使用数据库测试特定地区使用某些语言的可能性。 4. **动态测试:** - 更改网站上的语言设置并检查浏览器的反应。例如,如果浏览器没有反映出更改,这可能表明存在欺骗行为。 5. **错误和信息的本地化:** - 分析浏览器系统信息的语言。这很难欺骗,因为信息的语言取决于操作系统的配置。 #### 分析语言指纹 让我们在 Chrome 浏览器中打开 browserleaks.com/javascript 页面,看看网站能获取哪些有关用户位置的数据:  该页面提供的网站信息包括用户设备上的日期和时间、时区、地域、时钟格式、日历类型、数字记录系统、主要语言和首选语言,以及语音服务控制器界面中的合成语音信息。 让我们通过 IP 地址查看位置信息,打开 browserleaks.com/ip 页面  该页面在 http 头信息中提供了有关用户 IP 地址和语言的详细信息。 让我们在测试页面test-webapi.tech/language上看看网站还能从用户的浏览器中收集哪些位置信息,让我们在服务器上的 Chrome 浏览器中打开该页面。 部分 T** 时间准确性检查:**  在本节中,我们将获取访问者的 IP 地址,使用第三方服务对照 IP 地址检查位置,并从用户的浏览器中获取坐标和浏览器时区。 **重要提示:** 在测试页面中,所有关于参数不匹配的结论都不准确,仅作为分析所获数据的示例。 在**地理定位服务结果**部分,页面从多个数据库中检索 IP 地址信息,并将其与时间准确性检查部分获得的信息进行比较:  在**本地时间信息**部分,我们可以直接从访问者的浏览器中看到时间、日期和时区:  浏览器语言设置**部分在主线程、网络工作者和服务工作者中使用 JavaScript 和 http 标头定义浏览器语言,然后将这些值相互比较:  请注意,反欺诈系统已经可以将芬兰用户使用俄语作为非典型指标检测出来,尤其是在大量注册账户的情况下。 让我们看看下一部分--**系统消息语言分析:**  本节定义了错误信息的语言、表单信息验证文本的语言以及用户浏览器中系统信息的语言。 在**国际化细节**部分,我们可以看到用户设备系统设置中的地区设置、日历类型、时区和基于浏览器的数字系统。日期格式和货币显示格式也已定义:  货币显示格式取决于系统的语言设置   下面进入最后一部分 **语音合成声音**。本部分检查浏览器中可用的语音合成声音:  不同浏览器和设备的语音集及其数量各不相同,反欺诈系统可利用该参数准确识别用户和可疑访问,特别是与浏览器的语言设置进行比较。以下是来自不同设备的几个示例: 英特尔个人电脑(Chrome 浏览器)  英特尔 PC(Chromium 浏览器)  英特尔电脑(火狐浏览器)  AMD PC(Chrome 浏览器)  AMD PC(Chromium 浏览器)  AMD PC(火狐浏览器)  在测试结果中,我们可以看到语音合成的声音列表在不同设备和不同浏览器中都有所不同。 让我们检查一下反检测浏览器,打开不带配置文件和基本设置的页面: . 测试结果在数值上存在一些差异: - 反检测浏览器显示时区为欧洲/莫斯科。 - 仅使用 en-US 语言。 - 仅使用 Ru locale 中的 2 个声音(与 Chromium 浏览器类似)。 - 在 Chrome 浏览器的 User-Agent 标头中表示。 让我们尝试在反检测浏览器中应用该配置文件并重复测试: . 应用配置文件后,反检测浏览器能正确替换指定位置的所有语言参数,但有一点除外:浏览器以 En - 语言显示表单验证信息,这在浏览器使用主要 Ru - 语言时很可疑。 #### 以亚马逊和谷歌为例在用户浏览器中进行语言检测 让我们检查一下浏览器从亚马逊网站接收到哪些语言信息。让我们打开 Chrome 浏览器的主页:  通过对 JavaScript 文件的简单分析,我们可以看到网站获取了浏览器首选语言和可用语言的信息。 让我们来看看 Google 收集了哪些语言信息。让我们打开搜索框并查看代码。  网站已准确检测到我们使用的是 ru 语言,请注意浏览器是在位于德国的服务器上打开的,Google 也检测到了这一点(ru-DE)。   谷歌还收集有关首选语言和可用语言的信息。该网站还分析语音语言更改事件、目标翻译语言,并捕捉有关选择建议语言的信息。 #### 结论 分析浏览器语言参数可为反欺诈系统提供大量用户身份验证信息。这些参数有助于识别浏览器设置、操作系统设置、HTTP 标头和地理位置之间的不一致之处,从而识别潜在的可疑行为。测试表明,使用反检测浏览器或更改 HTTP 标头等欺骗语言设置的方法并不总是有效。即使是微小的差异,如系统信息的语言,也会引起怀疑。因此,语言设置成为全面用户配置文件评估的重要组成部分。许多反欺诈系统都积极使用语言指纹作为行为分析、数据匹配和欺骗检测的主要指标之一。 浏览器语言指标是一种强大的工具,可帮助反欺诈系统识别不一致之处并提高检查的安全性。尽管攻击者试图欺骗语言数据,但系统仍能通过分析参数的一致性和罕见组合来检测此类操纵。由多个参数生成的语言指纹被广泛用于识别用户和检测可疑活动。将这些数据与地理位置和时区等其他机制结合使用,可以显著提高欺诈检测的准确性。 在下一篇文章中,我们将继续分析反欺诈系统中使用的浏览器技术。 *班尼赫-M.V.*