nutaku自动签到程序实现
这两天花了点时间把n站金币活动自动签到脚本(初版)写出来了,其运行效果如下。
图1 macos下运行
图2 windows下运行
图3 unix可执行文件
图4 windows可执行文件
(稍微吐槽一下,由于打包工具不是跨平台的,所以得分别跑到对应的系统进行打包,有点麻烦。)
可以简单概括它的业务:
-
添加定时任务;
-
请求网站主页;获取必要的数据;
-
签到;如果签到失败,则进行重试;
-
退出或继续运行。
程序启动前,需按要求在config配置文件中填写自己的账号信息,并且可以根据自己的作息设置执行时间、执行模式,此外还可以设置邮箱通知、重试次数、重试间隔等参数,完整的配置文件如下。
# 账号相关(邮箱、密码)
# 本程序不会收集&存储任何与账号相关的数据
[account]
email=你的账号
password=你的密码
# 代理(梯子)
[network]
proxy=127.0.0.1:7890
# 其他设置
[settings]
# 日志(on=启用;off=关闭)
log=on
# 调试模式(on=启用;off=关闭)
debug=on
# 邮箱通知;以当前账号为准(on=启用;off=关闭)
email_notification=on
# 签到重试次数;当由于网络或其他因素导致签到失败时,程序会自动进行重试
retrying=5
# 重试间隔(单位,分钟)
retrying_interval=10
# 执行时间(以24小时制为准,00:00-23:59;在指定的时间(如'9,20:30',则为'9:30'和'20:30'两个时间点)执行任务,但不一定准确,比如由于电脑进入休眠/睡眠状态时,程序会停止运行,此时就会导致延迟执行)
# 如果在某个时间点已经完成签到,则其他时间点不会再次签到,多个时间点只是为了增加容错
execution_time=9,20:15
# 执行容错时间(单位,分钟)
misfire_grace_time=600
# 执行模式(1=默认,程序持续运行;2=执行完后退出程序)
# 模式1适用于电脑不关机的情况;模式2适用于电脑日常关机的情况,可配合'开机启动'使用
execution_mode=2
之后,程序会按照预定执行签到任务。
不过,由于需要用到梯子的缘故,也不能保证百分百能签到成功,只能说尽可能、最大限度地完成签到。
如程序运行时,梯子没有打开,或者是梯子来大姨妈等因素,没法与服务器建立连接。
这也是retrying、retrying_interval、execution_time配置项存在的原因,它们都是“完成签到”的补救措施。最好的情况就是程序运行期间,用户也正在使用梯子,这样能大大提升签到成功的概率。
同时,这也是一个潜在的新需求:“在签到期间,自动打开梯子”,以加大签到成功的概率,当然了,这也得先看看反响如何,如果还不错的话就加上。
感兴趣的读者可以点击这里获取源码。
总的来说,由于网站“不存在”反爬措施,连登陆验证码都没有,所以实现起来相对还是比较简单的,全部的接口只要带着对应的数据请求服务器,均能得到正确的响应结果,因此在完成了比较耗时的网站分析之后,程序的大体框架也很快搭建好了,剩下的就只是查漏补缺、优化完善。
以上。