前言:
最近迷上了写脚本开发,最近在逛贴吧的时候,发现好多恶心的 (pc ),每天不断的定时给自己的帖子顶上首页,难道百度都已经落迫到这般地步了吗说回来,最近迷上了写脚本,刚好可以拿贴吧来试验一下.
文末有软件下载地址.
先上最终实现的效果图:
首页如果没有填写配置信息则是空白页面,填写完后便有信息展示
点击配置信息,按照提示输入相关信息
点击开始执行,启动定时任务.
程序便会在约定的发布时间去执行,但是在时间这一块,我做了一个小心思,把分钟随机了一下,防止百度判断当前用户是机器操作.
代码如下:
意思是如果设置的时间是40以下 则会向上随机加上20内数字,如果超过40,则向下减去20内数据,所以万一碰到到时间没有执行成功,可以再等等.
可以用这个程序来刷贴吧经验,完全不需要人工操作,但是在第一次使用的时候,是需要登陆贴吧账 的,我在程序里设置了1分钟的登陆时间,如果在1分钟内还没有登陆成功,可以重新执行一次任务
后面这个功能又被我删除了.. 感觉鸡肋..
接下来看代码原理:
这个是基于electron来开发的,所以包会比较大,再加上里面还融入了chrome的内核,就更大了. 在mac上安装后的大小是在300M左右.
使用的技术栈: electron+react+vite+antd+puppeteer. 都是一些非常流行的技术栈.
因为electron是node的运行时,所以可以做node上的所有的功能,包括数据请求,文件管理,地址处理等,基于此,我也安装了puppeteer的包,让程序能够跑起来,在页面上完全模拟人工操作(puppeteer不懂的可以去搜索一下相关信息)..
以下是相关的关键代码:
const loginBtn = await page.$(‘#TANGRAM__PSP_5__submit’);
if (loginBtn) {
await delay(60000);
await page.reload();
}
如果找到登陆按钮,则等待1分钟 重新登陆后,刷新页面.
const inputNumber = params.execTimes || 10
执行条数,即贴吧首页一共会加载50条数据,程序会自动取其中几条去执行
const hrefArray = await page.$$eval(‘#thread_list > .j_thread_list .col2_right .threadlist_title a’,eles =>eles.map(ele => ele.href));
获取首页列表数据的src链接
for(let i =0;i
随机执行
const index = Math.floor(Math.random() * hrefArray.length);
const randomUrl = hrefArray[index]
await doComment(page,randomUrl,params) // 执行评论代码
await delay(60000)
hrefArray.splice(index,1)
}
遇到的问题:
最大的问题就是通信吧,刚开始用的是别人模板里的通信方式,发现在渲染层无法使用require的方法,导致无法在主进程向渲染进程发消息,后面也发现了问题,解决方案可以参考下方
new BrowserWindow({
title: ‘不可思议的脚本’,
icon: iconPath,
width: 400,
height: 500,
backgroundColor: ‘#191622’,
webPreferences: {
nodeIntegration: true, // 渲染进程融合node 开启这个后 无法使用electron的contextBridge
contextIsolation:false, // 这个也需要关闭
preload
}
})
其它就没什么难度了,业务逻辑写起来也简单.
最后:
附上下载地址:链接:https://pan.baidu.com/s/1eQRd1V9nY6wgaSofw0n3ow 密码:vc4q
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!