你可能和我一样,注册了雨云账号后,总想着每天签到领点积分或优惠,结果三天打鱼两天晒网,经常忘记。手动签到这事儿吧,说麻烦也不麻烦,但就是容易忘。特别是有多个账号的时候,更是一团乱麻。
所以我琢磨了一个办法——写个Python程序,让它自动帮我签到,还能管理多个账号,签到结果直接发邮件通知。这样一来,既不用每天惦记着,也不会漏签了。程序会在每天早上八点准时执行,你该干嘛干嘛去,它自己就把活儿干完了。
整个思路其实挺简单的:
多账号一起管理 - 如果你像我一样有好几个雨云账号(别问为什么有好几个),程序可以一次性都处理了,不用一个个登录
定时自动签到 - 每天早上8点自动执行,不需要你操心。你睡觉的时候它在干活,你上班的时候积分已经到账了
邮件通知结果 - 签到成功还是失败,直接发邮件告诉你。不用打开网页查,也不用担心出问题了不知道
说白了就是解放双手,让机器干机器该干的活儿。
首先得装几个Python库。打开命令行,输入下面这行:
pip install requests apscheduler python-dotenv
如果你用的是Python 3(现在应该都是了吧),可能需要这样:
pip3 install requests apscheduler python-dotenv
用虚拟环境的话记得先激活,这个就不用我多说了。
在代码文件同级目录下新建一个.env文件,把下面这些信息填进去:
USER_ID - 你的雨云用户ID,多个账号用逗号隔开
USER_PASSWORD - 对应的密码,顺序要和ID对上
API_KEYS - API密钥,同样用逗号分隔
API_KEY_REMARKS - 给每个密钥加个备注,方便区分
NOTIFICATION_EMAILS - 接收通知的邮箱地址
TASK_NAME - 签到任务的名称
SMTP_SERVER - 你的邮箱SMTP服务器
SMTP_PORT - SMTP端口号
SMTP_USERNAME - 邮箱用户名
SMTP_PASSWORD - 邮箱密码或授权码
SENDER_EMAIL - 发件邮箱地址
这些信息看起来多,但填一次就行了。👉 想要稳定运行这个程序?试试雨云的服务器,24小时不间断,部署上去后就不用担心自己电脑关机了。
整个程序的核心逻辑分三步走:登录、签到、发邮件。
先是导入需要的库,加载环境变量:
python
import os
import requests
import json
import smtplib
import logging
from email.mime.text import MIMEText
from apscheduler.schedulers.blocking import BlockingScheduler
from dotenv import load_dotenv
load_dotenv()
设置好日志记录,方便出问题的时候排查:
python
logging.basicConfig(filename='app.log', level=logging.WARN,
format='%(asctime)s - %(levelname)s - %(message)s',
encoding='utf-8')
然后从环境变量里读取所有配置信息,包括账号列表、API密钥这些。
登录部分比较直接,调用雨云的登录接口,成功了就返回API密钥:
python
def perform_login(user_id, user_password, remark):
payload = {
"field": user_id,
"password": user_password
}
response = requests.post(f"{url}/user/login", headers=headers, json=payload)
result = response.json()
if response.status_code == 200:
return result["x-api-key"]
else:
logging.error(f"登录失败: {result['message']}")
return None
签到逻辑也不复杂,拿着API密钥去调签到接口,成功就发邮件通知:
python
def perform_sign_in(api_key, remark, notification_email, user_id):
headers['x-api-key'] = api_key
payload = {"task_name": os.getenv("TASK_NAME")}
response = requests.post(f"{url}/user/reward/tasks", headers=headers, json=payload)
result = response.json()
if response.status_code == 200:
print(f"签到成功 - {remark}")
send_email(notification_email, remark, result, user_id)
else:
logging.error(f"签到失败 - {remark}")
邮件通知用的是标准SMTP协议,没什么花里胡哨的:
python
def send_email(notification_email, remark, result, user_id):
try:
smtp = smtplib.SMTP_SSL(smtp_server, smtp_port)
smtp.login(smtp_username, smtp_password)
email_content = create_email_content(remark, result)
smtp.sendmail(sender_email, notification_email, email_content.as_string())
print(f"邮件已发送 - {user_id}")
except Exception as e:
logging.error(f"邮件发送失败: {str(e)}")
finally:
if 'smtp' in locals():
smtp.quit()
最后是定时任务,用的是APScheduler这个库,设置每天早上8点执行:
python
scheduler = BlockingScheduler()
scheduler.add_job(sign_in_all, 'cron', hour=8, minute=0)
scheduler.start()
程序启动后会先执行一次签到,然后就进入定时循环了。
配置都搞定后,运行起来就很简单了:
python app.py
或者:
python3 app.py
程序会先立即执行一次签到,测试一下配置是否正确。然后就挂在后台,等着每天早上8点自动运行。
所有的运行日志都会记录在app.log文件里,出问题了可以去那里查。
邮箱配置是个坑,特别是QQ邮箱、网易邮箱这些,需要开启SMTP服务并使用授权码,不是直接用登录密码。这个在各个邮箱的设置里都能找到。
API密钥可以在雨云的个人中心获取,如果没有的话需要先生成一个。
如果要在服务器上长期运行,建议用nohup或者screen这些工具,或者直接写成systemd服务。这样就算SSH断开了,程序也能继续跑。
代码里我设置的是每天早上8点签到,你可以根据自己的需求改hour和minute这两个参数。
其实写这个程序的初衷很简单——就是懒。但懒得有技术含量,把重复性的工作自动化掉,把时间花在更值得做的事情上。这个签到程序虽然功能不复杂,但该有的都有了:多账号管理、定时执行、结果通知。如果你也有雨云账号,又和我一样容易忘事儿,不妨试试这个方案。部署到服务器上一次,后面就完全不用管了,👉 雨云的云服务器性价比挺高的,很适合跑这类小工具。