一些网站以无头模式阻止Chrome,我们将研究如何解决该问题。
诊断是计算机和编程各个方面的关键。本文首先向您展示如何亲自解决此阻塞问题。如果您不感兴趣,则可以直接转到文章结尾的“解决方案”项。
如果您在使用无头模式时遇到问题,请不要忘记通过page.screenshot()截屏以查看发生了什么。这将至少让您知道您是否正在处理与“常规”(托管)浏览器模式下显示的相同可见内容,并且还知道是否由于脚本损坏而被卡在适当的位置,而不了解任何内容。
在此示例中,服务器本身甚至没有发送相应的网页。
最初的答案是“访问被拒绝”页面,这是在无头模式下运行Chrome时所能获得的。这不会以受控的方式发生。
, , . , , , . , , , . , , .
? , , , , . , - . , -, , , . , , . – , .
HTTP-
( ) Chrome, headless-, Chrome, «» , , , , . , . , HTTP- (-), , headless-, , . http://scooterlabs.com/echo.json JSON-, , .
const puppeteer = require('puppeteer');
(async() => {
const browser = await puppeteer.launch({
});
const page = (await browser.pages())[0];
const response = await page.goto('http://scooterlabs.com/echo.json');
console.log(await response.json());
await browser.close();
})()
headless- ( ), «» ( headless:false ), , , .
time_utc – , . , , – , .
Accept-Language headless-. , - ( ), , . , – User-Agent.
User-Agent . , headless- :
Chrome , «Headless». User-Agent , . , , .
User-Agent - . , , .
( , )
, User-Agent. page.setUserAgent(). Chrome «» , , , : «Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.75 Safari/537.36».
这就是所有要做的事情。这就是为什么诊断方法本身比此决定更重要的原因。在尝试使站点自动化时,这些障碍总是时有出现,并且通常无法在Internet上找到特定的答案,因此您将不得不自己处理它们。祝您好运,如有任何疑问,请随时与我联系!