利用 Puppeteer-Extra 插件提升自动化测试和网页抓取的效率与隐蔽性

在当今的互联网环境中,自动化测试和网页抓取已经成为许多开发者和数据分析师的日常工作之一。Puppeteer 是一个广泛使用的 Node 库,它提供了一个高级 API 来通过 DevTools 协议控制 Chrome 或 Chromium。然而,在某些场景下,我们可能需要更多的功能和隐蔽性来绕过网站的检测机制。这时,Puppeteer-Extra 及其丰富的插件生态系统就能派上用场。
在这里插入图片描述

Puppeteer-Extra 简介

Puppeteer-Extra 是 Puppeteer 的一个扩展,它允许我们通过插件轻松地增加额外的功能。以下是一些非常有用的 Puppeteer-Extra 插件:

  1. puppeteer-extra-plugin-stealth:用于避免被检测为机器人。
  2. puppeteer-extra-plugin-recaptcha:用于自动解决 reCAPTCHAs。
  3. puppeteer-extra-plugin-adblocker:用于广告和追踪器拦截。
    接下来,我们将逐一介绍这些插件,并展示如何在实践中使用它们。

1. 使用 puppeteer-extra-plugin-stealth 避免被检测

网站通常会使用各种技术来检测自动化工具,如 Puppeteer。puppeteer-extra-plugin-stealth 插件通过修改浏览器指纹和禁用某些功能来减少被检测的风险。

安装
npm install puppeteer-extra puppeteer-extra-plugin-stealth
使用示例
const puppeteer = require('puppeteer-extra')
const StealthPlugin = require('puppeteer-extra-plugin-stealth')
puppeteer.use(StealthPlugin())
async function run() {const browser = await puppeteer.launch({ headless: false })const page = await browser.newPage()await page.goto('https://example.com')// 你的代码逻辑await browser.close()
}
run()

2. 使用 puppeteer-extra-plugin-recaptcha 自动解决 reCAPTCHAs

reCAPTCHA 是一种广泛使用的验证码服务,用于区分人类用户和机器人。puppeteer-extra-plugin-recaptcha 插件可以帮助我们自动解决这些验证码。

安装
npm install puppeteer-extra-plugin-recaptcha
使用示例
const puppeteer = require('puppeteer-extra')
const RecaptchaPlugin = require('puppeteer-extra-plugin-recaptcha')
puppeteer.use(RecaptchaPlugin({provider: {id: '2captcha',token: 'YOUR_2CAPTCHA_API_KEY' // 从 https://2captcha.com/ 获取}
}))
async function run() {const browser = await puppeteer.launch({ headless: false })const page = await browser.newPage()await page.goto('https://example.com')await page.solveRecaptchas()// 你的代码逻辑await browser.close()
}
run()

3. 使用 puppeteer-extra-plugin-adblocker 拦截广告和追踪器

在自动化测试或网页抓取时,广告和追踪器可能会干扰我们的操作。puppeteer-extra-plugin-adblocker 插件可以帮助我们过滤这些元素。

安装
npm install puppeteer-extra-plugin-adblocker
使用示例
const puppeteer = require('puppeteer-extra')
const AdblockerPlugin = require('puppeteer-extra-plugin-adblocker')
puppeteer.use(AdblockerPlugin())
async function run() {const browser = await puppeteer.launch({ headless: false })const page = await browser.newPage()await page.goto('https://example.com')// 广告和追踪器已被自动拦截// 你的代码逻辑await browser.close()
}
run()

当然可以。以下是使用 Puppeteer-Extra 及其插件的一些具体场景,这些场景展示了如何在实际工作中应用这些工具。

使用场景

1. 网页内容自动化抓取

场景描述
作为数据分析师,你可能需要从多个电子商务网站抓取产品信息和价格。这些网站可能使用了复杂的反爬虫机制。
解决方案
使用 puppeteer-extra-plugin-stealth 插件来避免被网站的反爬虫系统检测到。结合 puppeteer-extra-plugin-adblocker 插件来过滤广告,确保抓取效率。

const puppeteer = require('puppeteer-extra')
const StealthPlugin = require('puppeteer-extra-plugin-stealth')
const AdblockerPlugin = require('puppeteer-extra-plugin-adblocker')
puppeteer.use(StealthPlugin())
puppeteer.use(AdblockerPlugin())
async function scrapeProductData() {const browser = await puppeteer.launch({ headless: true })const page = await browser.newPage()await page.goto('https://example-ecommerce.com')// 抓取逻辑const data = await page.evaluate(() => {// 网页数据提取逻辑})console.log(data)await browser.close()
}
scrapeProductData()
2. 自动化表单提交和 reCAPTCHA 解决

场景描述
你需要自动化填写和提交在线表单,但网站使用了 reCAPTCHA 来防止自动化攻击。
解决方案
使用 puppeteer-extra-plugin-recaptcha 插件来自动解决 reCAPTCHA 验证。

const puppeteer = require('puppeteer-extra')
const RecaptchaPlugin = require('puppeteer-extra-plugin-recaptcha')
puppeteer.use(RecaptchaPlugin({provider: {id: '2captcha',token: 'YOUR_2CAPTCHA_API_KEY'}
}))
async function submitForm() {const browser = await puppeteer.launch({ headless: true })const page = await browser.newPage()await page.goto('https://example-form.com')// 填写表单逻辑await page.solveRecaptchas()await page.click('button#submit')await browser.close()
}
submitForm()
3. 自动化登录和会话保持

场景描述
你需要自动化登录到一个受保护的网站,并保持会话状态以执行后续操作。
解决方案
使用 puppeteer-extra-plugin-stealth 插件来减少登录时被检测为机器人的风险。

const puppeteer = require('puppeteer-extra')
const StealthPlugin = require('puppeteer-extra-plugin-stealth')
puppeteer.use(StealthPlugin())
async function automatedLogin() {const browser = await puppeteer.launch({ headless: true })const page = await browser.newPage()await page.goto('https://example-protected-site.com/login')// 登录逻辑await page.type('input#username', 'yourUsername')await page.type('input#password', 'yourPassword')await page.click('button#login')// 保持会话并执行后续操作// ...await browser.close()
}
automatedLogin()
4. 竞争对手分析

场景描述
作为市场分析师,你需要监控竞争对手的网站变化,如新产品的发布、价格变动等。
解决方案
使用 puppeteer-extra-plugin-adblocker 插件来清理广告,使用 puppeteer-extra-plugin-stealth 插件来避免被检测。

const puppeteer = require('puppeteer-extra')
const StealthPlugin = require('puppeteer-extra-plugin-stealth')
const AdblockerPlugin = require('puppeteer-extra-plugin-adblocker')
puppeteer.use(StealthPlugin())
puppeteer.use(AdblockerPlugin())
async function monitorCompetitor() {const browser = await puppeteer.launch({ headless: true })const page = await browser.newPage()await page.goto('https://competitors-site.com')// 分析逻辑// ...await browser.close()
}
monitorCompetitor()

通过这些场景,我们可以看到 Puppeteer-Extra 及其插件在实际应用中的强大功能和灵活性。它们可以帮助我们高效地完成各种自动化任务,同时减少被目标网站检测的风险。

总结

通过使用 Puppeteer-Extra 及其插件,我们可以显著提升自动化测试和网页抓取的效率和隐蔽性。这些插件不仅可以帮助我们绕过网站的防御机制,还能提高我们的工作效率。在使用这些工具时,请确保遵守相关法律法规和网站的条款,不要用于非法或不道德的目的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/458077.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

获取微博排行榜PHP

获取微博排行榜是获取微博html页面的数据,而非直接调用微博后端接口获取 PHP实现 class WeiBoHotSearchService extends BaseService {/*** 微博热搜缓存过期时间* var int*/protected int $expireTime 600;/*** 微博热搜URL* var string*/protected string $doma…

centos-LAMP搭建与配置(论坛网站)

文章目录 LAMP简介搭建LAMP环境安装apache(httpd)安装mysql安装PHP安装php-mysql安装phpwind LAMP简介 LAMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写:Linux操作系统,网页服务器Apache,…

HTML+CSS实现超酷超炫的3D立方体相册

效果演示 HTML和CSS实现一个简单的3D立方体加载动画的相册。它使用了HTML来构建立方体的结构&#xff0c;并通过CSS来添加样式和动画效果。 HTML <div class"loader3d"><div class"cube"><div class"face"><img src&qu…

多线程——线程安全的集合类

目录 前言 一、多线程环境使用 ArrayList 1.进行加锁 2.使用 SynchronizedList 类 3.使用 CopyOnWriteArrayList 类 二、多线程环境使用队列 1.进行加锁 2.使用阻塞队列 三、多线程环境使用哈希表 1.Hashtable 2.ConcurrentHashMap &#xff08;1&#xff09;缩小锁…

计算机毕业设计 | springboot+vue凌云在线阅读平台 线上读书系统(附源码)

1&#xff0c;绪论 随着社会和网络技术的发展&#xff0c;网络小说成为人们茶钱饭后的休闲方式&#xff0c;但是现在很多网络小说的网站都是收费的&#xff0c;高额的收费制度是很多人接受不了的&#xff0c;另外就是很多小说网站都会有大量的弹窗和广告&#xff0c;这极大的影…

医学数据分析中的偏特征图可视化

在医学领域&#xff0c;我们经常需要处理复杂的数据模型&#xff0c;探索特征与目标变量之间的关系。偏特征图(Partial Dependence Plot, PDP)是一种强大的可视化技术&#xff0c;可以帮助我们更好地理解模型的行为。通过这种图形&#xff0c;我们可以直观地观察每个特征对模型…

零一万物新模型Yi-Lightning:超越GPT-4o

10月16日&#xff0c;零一万物发布了最新的旗舰模型Yi-Lightning&#xff08;闪电&#xff09;&#xff0c;在中国大模型中首度超越 GPT-4o。它在国际权威盲测榜单 LMSYS 上取得了显著成绩&#xff0c;超越了硅谷知名 OpenAI 的 GPT-4o-2024-05-13 和 Anthropic Claude 3.5 Son…

关于iPhone 16 Pro评测视频评论区特征的多维度分析

1.项目背景 随着智能手机的迅速发展&#xff0c;消费者在选择新设备时越来越依赖于网络评价和用户反馈&#xff0c;B站作为中国领先的视频分享平台&#xff0c;聚集了大量科技评测内容&#xff0c;其中UP主的评论区成为用户讨论和交流的重要场所&#xff0c;特别是在iPhone 16…

基于SSM的汽车客运站管理系统【附源码】

基于SSM的汽车客运站管理系统&#xff08;源码L文说明文档&#xff09; 目录 4 系统设计 4.1 设计原则 4.2 功能结构设计 4.3 数据库设计 4.3.1 数据库概念设计 4.3.2 数据库物理设计 5 系统实现 5.1 管理员功能实现 5.1.1 管理员信息 5.1.2 车…

【程序员的逆袭】:在失业的阴影下寻找光明

故事摘要 在失业的阴霾中&#xff0c;一位程序员如何通过外包项目重燃希望之火&#xff1f;这个故事讲述了他的谋生手段&#xff0c;如何在压力之下&#xff0c;通过信息差赚取生活所需。 要点 信息的力量&#xff1a;赚钱的关键在于信息差&#xff0c;而非单纯的体力或脑力…

【轻量级聊天应用】Vocechat本地服务器部署结合cpolar异地即时通讯

文章目录 前言1. 拉取Vocechat2. 运行Vocechat3. 本地局域网访问4. 群晖安装Cpolar5. 配置公网地址6. 公网访问小结 7. 固定公网地址 前言 本文主要介绍如何在本地群晖NAS搭建一个自己的聊天服务Vocechat&#xff0c;并结合内网穿透工具实现使用任意浏览器远程访问进行智能聊天…

iTerm2 保持SSH远程连接

1、保持SSH远程连接的稳定&#xff0c;防止因闲置时间过长而断开连接 When idle, send ASCII code 35 every 60 seconds每60秒 输入# 2、客户端设置保持活动 设置客户端每隔60秒发送一次保活信号&#xff0c;总共尝试3次。 vim ~/.ssh/configHost *ServerAliveInterval 60…

python csv库

python csv库 水一水又是一篇&#xff0c;乐 读取 import csv # 打开 CSV 文件 with open(example.csv, moder, newline) as file: csv_reader csv.reader(file) # 读取文件头&#xff08;可选&#xff09; headers next(csv_reader) print(f"Headers: {heade…

w001基于SpringBoot的在线拍卖系统

&#x1f64a;作者简介&#xff1a;多年一线开发工作经验&#xff0c;原创团队&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取&#xff0c;记得注明来意哦~&#x1f339;赠送计算机毕业设计600个选题excel文…

gateway 整合 spring security oauth2

微服务分布式认证授权方案 在分布式授权系统中&#xff0c;授权服务要独立成一个模块做统一授权&#xff0c;无论客户端是浏览器&#xff0c;app或者第三方&#xff0c;都会在授权服务中获取权限&#xff0c;并通过网关访问资源 OAuth2的四种授权模式 授权码模式 授权服务器将授…

【密码学】全同态加密张量运算库解读 —— TenSEAL

项目地址&#xff1a;https://github.com/OpenMined/TenSEAL 论文地址&#xff1a;https://arxiv.org/pdf/2104.03152v2 TenSEAL 是一个在微软 SEAL 基础上构建的用于对张量进行同态加密操作的开源Python库&#xff0c;用于在保持数据加密的状态下进行机器学习和数据分析。 Ten…

CSS基础—网页布局(重点!)

1、两列布局 &#xff08;1&#xff09;概念 经典两列布局是指一种网页布局方式&#xff0c;其中一列宽度固定&#xff0c;另一列宽度自适应。‌ 这种布局方式在网页设计中非常常见&#xff0c;因为它能够提供良好的视觉效果和用户体验。 如图所示&#xff1a; 页面顶部放置一…

网络搜索引擎Shodan(4)

声明&#xff1a;学习视频来自b站up主 泷羽sec&#xff0c;如涉及侵权马上删除文章 声明&#xff1a;本文主要用作技术分享&#xff0c;所有内容仅供参考。任何使用或依赖于本文信息所造成的法律后果均与本人无关。请读者自行判断风险&#xff0c;并遵循相关法律法规。 感谢泷…

【JavaEE】【多线程】volatile,wait/notify

目录 一、volatile关键字1.1 内存可见性1.2 volatile解决内存可见性问题 二、wait和notify2.1 wait2.2 notify2.3 使用例子2.3.1 例子12.3.2 例子二 一、volatile关键字 volatile可以保证内存可见性&#xff0c;只能修饰变量。 1.1 内存可见性 在前面介绍线程不安全原因时介…

大数据开发扩展shell 笔记

大数据开发扩展shell 此笔记来自尚硅谷 学习目标 1 熟悉shell脚本的原理和使用 2 熟悉shell的编程语法 第一节 Shell概述 1&#xff09;Linux提供的Shell解析器有&#xff1a; [atguiguhadoop101 ~]$ cat /etc/shells /bin/sh/bin/bash/sbin/nologin/bin/dash/bin/tcsh/b…