📜  在 Node.js 中处理用户代理

📅  最后修改于: 2022-05-13 01:56:25.671000             🧑  作者: Mango

在 Node.js 中处理用户代理

User-Agent 是字符串形式的信息。此字符串让服务器识别来自 Web 浏览器的传入请求的应用程序类型、操作系统、版本和供应商。用户代理的通用结构将是-

User-Agent: product / product-version comment

在这里,发送请求的 Web 浏览器的名称将写在product中。产品的版本会写在product-version中,注释是可选的。它包含有关产品的更多信息。例如,如果 Web 浏览器是 Firefox,那么用户代理将是 -

Mozilla/5.0 (system-information) 
    platform (platform-details) extensions

User-Agent 模块提供 Web 浏览器属性。它还提供了阻止自动浏览器所需的数据。

设置用户代理模块:要启用此模块,首先需要使用package.json文件初始化应用程序,然后安装用户代理模块。所以,让我们首先用 package.json 文件初始化我们的应用程序——

npm init

现在,使用 - 安装模块

npm install user-agents --save

要在您的应用程序中使用此模块,只需编写以下代码 -

const userAgent = require('user-agents');

实现:安装模块后,现在让我们看看这个模块的一些实现。这个模块的基本实现是生成随机用户代理。要生成随机用户代理,请在 main.js 文件中编写以下代码 -

const UserAgent = require('user-agents'); 
   
const userAgent = new UserAgent();
console.log(userAgent.toString());

在这里,我们在new关键字的帮助下创建了一个 User-Agent 模块的实例。然后,我们在控制台中记录随机生成的用户代理的字符串格式。上述代码的输出将是 -

Mozilla/5.0 (Windows NT 10.0; Win64; x64) 
AppleWebKit/537.36 (KHTML, like Gecko) 
Chrome/80.0.3987.132 Safari/537.36

此外,如果我们想以 JSON 格式打印数据,请编写以下代码 -

const UserAgent = require('user-agents'); 
   
const userAgent = new UserAgent();
console.log(JSON.stringify(userAgent.data, null, 1));

在这里, stringify()函数会将 JavaScript 值转换为 JSON。它需要三个参数,第一个是要转换成 JSON 的值,第二个参数是用来转换结果的替换函数,第三个参数是添加缩进、字符,以便转换成 JSON字符串易于阅读。

上述代码的输出将是 -

{
 "appName": "Netscape",
 "connection": {
  "downlink": 10,
  "effectiveType": "4g",
  "rtt": 100
 },
 "platform": "Win32",
 "pluginsLength": 3,
 "vendor": "Google Inc.",
 "userAgent": 
    "Mozilla/5.0 (Windows NT 6.1; Win64; x64) 
     AppleWebKit/537.36 (KHTML, like Gecko) 
     Chrome/80.0.3987.132 Safari/537.36",
 "viewportHeight": 790,
 "viewportWidth": 1580,
 "deviceCategory": "desktop",
 "screenHeight": 900,
 "screenWidth": 1600,
 "weight": 0.00007295599223907504
}

该模块还提供了限制应用程序仅在指定设备中使用的功能。例如 -

const UserAgent = require('user-agents'); 
  
const userAgent = new UserAgent({ deviceCategory: 'mobile' })

在这里,我们将我们的应用程序限制为只能在移动设备中使用。除了移动设备,我们还可以编写桌面平板电脑
此外,如果您想创建多个具有相同配置或属性的用户代理,请编写以下代码 -

const UserAgent = require('user-agents');
  
const userAgent = new UserAgent({ 
    platform: 'Win64', 
    deviceCategory: 'desktop' 
});
  
const userAgents = Array(50).fill()
        .map(() => userAgent());

在这里,我们创建了一个用户代理实例,其属性为platformdeviceCategory 。我们将其限制为使用Windows 64平台并仅在桌面上运行。然后,我们创建了一个由 50 个以上具有相同配置的用户代理组成的数组。
我们还可以将过滤器应用于我们的应用程序,返回的用户代理将与应用的过滤器匹配。因此,要应用过滤器,请编写以下代码 -

const UserAgent = require('user-agents');
  
const userAgent = new UserAgent(/Chrome/);
console.log(userAgent.toString());

在这里,我们将过滤器作为/Chrome/传递。返回的用户代理将包含Chrome子字符串。我们还可以将过滤器和一组配置组合起来,这些配置将应用于返回的用户代理。
例如 -

const UserAgent = require('user-agents');
  
const userAgent = new UserAgent([
    /Chrome/,
    {
      deviceCategory: 'tablet',
      platform: 'Win64'
    }
]);

在这里,我们将过滤器与返回的用户代理上的一系列配置一起应用为Chrome

结论:在本文中,我们了解了 JavaScript 的User-Agent模块,并研究了如何在 JavaScript 文件中设置该模块。我们也看到了这个模块的一些实现。