检测是否是puppeteer访问以及如何破解

5 min read

Puppeteer是一个用于控制无头浏览器的Node库,它可以用于浏览器自动化测试或爬虫。但是,有些网站会检测是否是Puppeteer访问,并采取相应的反爬措施。要检测是否是Puppeteer访问,有以下几种方法:

  • 检测navigator.webdriver属性,如果为true,则表示是Puppeteer访问。
  • 检测window.chrome属性,如果为undefined,则表示是Puppeteer访问。
  • 检测navigator.plugins和navigator.languages属性,如果为空,则表示是Puppeteer访问。
  • 检测navigator.permissions和navigator.deviceMemory属性,如果不存在,则表示是Puppeteer访问。
  • 检测user-agent字符串,如果包含HeadlessChrome,则表示是Puppeteer访问。

要破解这些检测方法,有以下几种方法

  • 使用page.evaluateOnNewDocument方法,在页面加载前注入一些代码,来修改或删除一些可疑的属性。
  • 使用page.setUserAgent方法,来设置一个正常的user-agent字符串。
  • 使用page.setExtraHTTPHeaders方法,来设置一些正常的HTTP请求头。
  • 使用page.emulate方法,来模拟一个正常的设备。
  • 使用puppeteer-extra和puppeteer-extra-plugin-stealth这两个包,来自动应用一些绕过检测的技巧。

你可以根据你的需求和目标网站的反爬策略,选择合适的方法来破解Puppeteer的检测。