如何解决在无头模式下使用Chrome阻止对页面的访问

一些网站以无头模式阻止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上找到特定的答案,因此您将不得不自己处理它们。祝您好运,如有任何疑问,请随时与我联系!




All Articles