前言
Puppeteer 是一个 Google 开源的项目,是一个基于 Node.js 的 Headless Chrome 浏览器自动化工具,可以进行网页截图、爬虫、自动化测试等等。Puppeteer 通过启动一个真实的 Chrome 浏览器来对浏览器进行控制。由于使用了真实浏览器,因此在运行一些简单的操作时,Puppeteer 往往需要很长时间才能完成。为了解决这个问题,Puppeteer 提供了 headless 模式,也就是无头浏览器模式,这样操作会更加快速。
但是,一些网站会检测到使用 Puppeteer,从而拒绝访问或者返回错误信息。为了解决这个问题,开发者们开发了一些 npm 包,其中最为知名的就是 puppeteer-extra
及其插件。其中一个插件就是 puppeteer-extra-plugin-stealth
,这个插件能够让 Puppeteer 在操作时更难被检测到,从而避免被网站拦截。
本文将介绍 puppeteer-extra-plugin-stealth
的使用教程,帮助读者更好地了解和使用这个插件。
安装和依赖
在使用 puppeteer-extra-plugin-stealth
之前,需要先安装 puppeteer
和 puppeteer-extra
两个 npm 包,这两个包是 puppeteer-extra-plugin-stealth
的依赖。
可以通过以下命令安装:
npm install puppeteer puppeteer-extra puppeteer-extra-plugin-stealth --save
使用方法
下面将介绍如何使用 puppeteer-extra-plugin-stealth
来避免被检测到。
引入插件
在使用 puppeteer-extra-plugin-stealth
之前,需要先引入这个插件:
const puppeteer = require('puppeteer-extra') const StealthPlugin = require('puppeteer-extra-plugin-stealth') puppeteer.use(StealthPlugin())
这里使用了一种比较简单的语法来引入插件,即在 puppeteer
对象上使用 use
方法,并将 StealthPlugin
对象传入。
简单演示
下面是一个简单的使用 puppeteer-extra-plugin-stealth
的示例:
-- -------------------- ---- ------- ----- -------- ------ - ----- ------- - ----- ------------------ --------- ---- -- ----- ---- - ----- ----------------- ----- --------------------------------------- ----- ------------------------------------------------ ----- ------------------------------------- ------- ----- ----------------- ----- ------------- -- ----- --------------- - ------
在这个示例中,我们先启动了一个 headless 的 Chrome 浏览器,然后打开了一个网站 https://bot.sannysoft.com/
,这个网站是一个用于测试是否使用了机器人的网站。在这个网站中,有一个用于测试的验证码输入框,我们在输入框中输入了 test
并进行了截图,最后关闭了浏览器。
如果不使用 puppeteer-extra-plugin-stealth
,则在访问这个网站时可能会看到下面的提示:
使用 puppeteer-extra-plugin-stealth
后,就可以避免出现这个提示了。
更多设置
在使用 puppeteer-extra-plugin-stealth
时,可以通过一些设置来进一步提高隐身效果,下面列举了一些常用的设置:
-- -------------------- ---- ------- ----------------------------- ---------- --------- ------ ------- ------- ------ --------- -------- ---------- - ------- - ------------ - ---------------------------------------- --------------------- ------------------------------------------- ------------------------- ------------------------- -------------------------- ----------------------- -------------------------------------- ------------------------- --------------------- -------------------------- ---------------------------------------------- --------------------------- -------------------------- ----------------------------- --------------------------- ----------------------- ----------------- -------------------- ------------------------- --------------------------- --------------- ----------------------------- ----------------- ------------- --------------- -------------- ------------------------- ----------------------- ---------------------- -- ----- - --------------- --------------------------- --------------------- ------------------------- ----------------------- -------------------- ------------------------------ ------------------------------------------ ----------------- ---------------------------------- ------------------------- -- -- -- ---
languages
:设置了语言,这里设置了en-US
和en
vendor
: 设置了厂商,这里设置了Google Inc.
platform
: 设置了平台,这里设置了Win32
webdriver
: 这里设置了一些 Chrome 的参数,用于防止被检测到是无头浏览器
这里的所有设置都是可选的,可以根据自己的需求来设置。这些设置可以帮助我们更好地隐藏浏览器,避免被目标网站检测到。
总结
本文介绍了 puppeteer-extra-plugin-stealth
的使用教程并提供了示例代码。希望读者能够通过这篇文章了解和学习如何避免使用 Puppeteer 时被网站检测到,进一步提高自己的开发效率。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/194041