从0到1实现完全自定义的百度贴吧自动回帖软件–不可思议的脚本

前言:

最近迷上了写脚本开发,最近在逛贴吧的时候,发现好多恶心的 (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进行处理,非常感谢!

上一篇 2022年8月15日
下一篇 2022年8月15日

相关推荐