Javascript 如何对无头浏览器实施本指南https://www.npmjs.com/package/user-agents#contributing

Javascript 如何对无头浏览器实施本指南https://www.npmjs.com/package/user-agents#contributing,javascript,node.js,puppeteer,user-agent,Javascript,Node.js,Puppeteer,User Agent,这是一个用于生成随机用户代理的包: 我如何使用Puppeter在无头chrome浏览器中实现这一点 这是我随机生成的输出,但它只记录到控制台,没有在headless浏览器中实现: { "appName": "Netscape", "connection": { "downlink": 10, "effectiveType": "4g", "rtt": 0 }, "platform": "Win32", "pluginsLength": 3, "ve

这是一个用于生成随机用户代理的包:

我如何使用Puppeter在无头chrome浏览器中实现这一点

这是我随机生成的输出,但它只记录到控制台,没有在headless浏览器中实现:

{
  "appName": "Netscape",
  "connection": {
    "downlink": 10,
    "effectiveType": "4g",
    "rtt": 0
  },
  "platform": "Win32",
  "pluginsLength": 3,
  "vendor": "Google Inc.",
  "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) 
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 
Safari/537.36",
  "viewportHeight": 660,
  "viewportWidth": 1260,
  "deviceCategory": "desktop",
  "screenHeight": 800,
  "screenWidth": 1280
}
My Node.js代码:

const puppeteer = require('puppeteer');

// library from https://www.npmjs.com/package/user-agents#contributing
const UserAgent = require('user-agents');

// This is where we'll put the code to get around the tests.
const preparePageForTests = async (page) => {
// TODO: Not implemented yet.
  const userAgent = new UserAgent();
  console.log(userAgent.toString());
  console.log(JSON.stringify(userAgent.data, null, 2));
  await page.setUserAgent(userAgent.toString());

}

(async () => {
  // Launch the browser in headless mode and set up a page.
  const browser = await puppeteer.launch({
    args: ['--no-sandbox'],
    headless: true,
  });
  const page = await browser.newPage();

  // Prepare for the tests (not yet implemented).
  await preparePageForTests(page);

  // Navigate to the page that will perform the tests.
   const testUrl = 'https://intoli.com/blog/' +
  'not-possible-to-block-chrome-headless/chrome-headless-test.html';
  await page.goto(testUrl);

  // Save a screenshot of the results.
  await page.screenshot({path: 'C:\\Users\\Badar\\Desktop\\headless-test- 
 result.png'});

  // Clean up.
  await browser.close()
})();

我已轻松编辑了您的代码,该代码现在对我正常工作:

const puppeteer = require('puppeteer');
const UserAgent = require('user-agents');

const preparePageForTests = async (page) => {
  const user = new UserAgent();
  await page.setUserAgent(String(user.data.userAgent));
  const currentAgent = await page.evaluate('navigator.userAgent');
  console.log(currentAgent);
}

(async () => {
  const browser = await puppeteer.launch({
    args: ['--no-sandbox'],
    headless: false,
  });
  const page = await browser.newPage();
  await preparePageForTests(page);
  const testUrl = 'https://intoli.com/blog/' +
    'not-possible-to-block-chrome-headless/chrome-headless-test.html';
  await page.goto(testUrl);
  await page.screenshot({ path: 'result.png' });
  await browser.close();
})();
根据您提供的控制台输出,我决定从
user.data.userAgent
获取字符串

我还添加了一些代码来检查是否成功设置了新的用户代理:

const currentAgent = await page.evaluate('navigator.userAgent');
console.log(currentAgent);

每次我运行该文件时,此输出都会随机更改,正如预期的那样。

我已轻松编辑了您的代码,该代码现在对我正常工作:

const puppeteer = require('puppeteer');
const UserAgent = require('user-agents');

const preparePageForTests = async (page) => {
  const user = new UserAgent();
  await page.setUserAgent(String(user.data.userAgent));
  const currentAgent = await page.evaluate('navigator.userAgent');
  console.log(currentAgent);
}

(async () => {
  const browser = await puppeteer.launch({
    args: ['--no-sandbox'],
    headless: false,
  });
  const page = await browser.newPage();
  await preparePageForTests(page);
  const testUrl = 'https://intoli.com/blog/' +
    'not-possible-to-block-chrome-headless/chrome-headless-test.html';
  await page.goto(testUrl);
  await page.screenshot({ path: 'result.png' });
  await browser.close();
})();
根据您提供的控制台输出,我决定从
user.data.userAgent
获取字符串

我还添加了一些代码来检查是否成功设置了新的用户代理:

const currentAgent = await page.evaluate('navigator.userAgent');
console.log(currentAgent);

每次我运行文件时,输出都会随机更改,正如预期的那样。

包描述:用户代理是一个JavaScript包,用于根据在野外使用的频率生成随机用户代理。您要使用的包是:包描述:用户代理是一个JavaScript包,用于根据在野外使用的频率生成随机用户代理您要使用的包是:此解决方案将仅设置UserAgent,而不是所有数据(如宽度、高度+)。此解决方案将仅设置UserAgent,而不是所有数据(如宽度、高度)++