node实现鼠标点击事件
2024年11月11日 · 1018 字 · 3 分钟
碰到一个网站,页面刷新浏览量自动加2,试一下看能否自动点击鼠标实现浏览量增加!
一、实现鼠标点击动作:
1、node init初始化一个项目
2、新建文件index.js
3、复制下面代码进index.js文件,后运行node index.js
实现鼠标自动点击:
const { mouse } = require('@nut-tree/nut-js');
(async () => {
try {
// 设置屏幕分辨率(根据你的屏幕调整)
const screenWidth = 2560; // 假设你的屏幕宽度是2560
const screenHeight = 1440; // 假设你的屏幕高度是1440
// 移动鼠标到屏幕中心
await mouse.move({ x: screenWidth / 2, y: screenHeight / 2 });
// 循环点击100次
for (let i = 0; i < 50; i++) {
await mouse.leftClick(); // 执行右键点击
// console.log(`Click #${i + 1}`);
}
console.log('Completed 100 right-clicks!');
} catch (error) {
console.error('Error occurred:', error); // 捕获并打印错误信息
}
})();
关于nut.js:
nut.js
是一个用于自动化鼠标和键盘控制的 Node.js 库,它通过模拟鼠标移动、点击、键盘输入等操作来进行自动化任务。这个库特别适合做 GUI 自动化测试、自动化操作、脚本化的用户交互等任务。nut.js
可以被广泛应用于自动化测试、自动化桌面任务等场景。
二、点击太慢了,以下为并行访问
第一思路:只发送GET请求,来增加访问量!发现get请求数据成功但访问量不会增加,模拟请求头也不行,遂改为直接打开浏览器访问!(node还有个库专门识别图像进行自动化点击,这个库识别图片失败,就没再深入!)
const puppeteer = require('puppeteer');
// 请求的目标URL
const url = 'https://xxx.xxx';
// 最大并行浏览器数
const maxConcurrency = 20;
// 每个浏览器运行的请求次数
const totalRequests = 200;
// 每个请求之间的延迟(200毫秒)
const delay = 200;
const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms));
const fetchWithPuppeteer = async () => {
// 创建一个存储任务的队列
const tasks = [];
// 创建任务函数
const task = async (browserIndex) => {
const browser = await puppeteer.launch({ headless: true });
const page = await browser.newPage();
let retries = 0;
for (let i = 0; i < totalRequests; i++) {
let success = false;
while (retries < 3 && !success) { // 最大重试次数为3次
try {
await sleep(delay); // 每个请求间隔200ms
await page.goto(url, { waitUntil: 'load' });
// console.log(`Browser ${browserIndex}: Request ${i + 1} - Page Loaded`);
// 模拟滚动页面
await page.evaluate(() => window.scrollBy(0, window.innerHeight));
success = true; // 标记成功
} catch (error) {
retries++;
console.error(`Browser ${browserIndex}: Request ${i + 1} failed - Retry ${retries}/3`, error);
if (retries >= 3) {
console.error(`Browser ${browserIndex}: Request ${i + 1} failed after 3 retries.`);
}
}
}
}
await browser.close(); // 完成任务后关闭浏览器
console.log(`Browser ${browserIndex}: All requests completed.`);
};
// 启动最多5个浏览器实例并行处理200次请求
for (let i = 0; i < maxConcurrency; i++) {
tasks.push(task(i + 1)); // 将任务推入任务队列
}
// 等待所有任务完成
await Promise.all(tasks);
console.log('All requests have been completed.');
};
fetchWithPuppeteer().catch((err) => console.error('Error in fetchWithPuppeteer:', err));
(经测试同时开20个浏览器运行最佳)每秒能增加一百多的访问量
引用库介绍:Puppeteer 是一个由 Google Chrome 团队开发的 Node.js 库,用于控制 Headless Chrome(无头浏览器)或者全功能的 Chrome 浏览器。它为开发者提供了一个高级 API,用于自动化浏览器任务,如网页爬取、界面测试、截图、生成 PDF 等。Puppeteer 是一个非常强大的工具,尤其适用于需要与网页交互、执行 JavaScript 或模拟用户行为的场景。