Javascript 如何对无头浏览器实施本指南https://www.npmjs.com/package/user-agents#contributing
这是一个用于生成随机用户代理的包: 我如何使用Puppeter在无头chrome浏览器中实现这一点 这是我随机生成的输出,但它只记录到控制台,没有在headless浏览器中实现: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
{
"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,而不是所有数据(如宽度、高度)++