利用腾讯云函数实现 WPS 每日自动打卡
2020年7月17日 更新:由于官方限制,目前需要手动在小程序打卡,邀请仍可用。
2021年2月23日 更新:修改腾讯云函数
WPS 对于很多人来说是一款必不可少的办公软件,除了完善的 办公四件套1 之外,注册用户还可获得 1G 的云存储空间,能多平台同步,用起来很方便。但是对于我这种云存储重度用户,免费的云存储空间根本不够用。
还好,WPS 够良心,有一个签到送会员的活动。只需要每天 6:00~13:00 在微信小程序 WPS 会员 中签到就能免费获得会员天数。WPS 会员用户云存储空间有 100G,足够日常使用了。但是每天去小程序打卡太麻烦,这里我就用腾讯云函数实现 WPS 每天自动打卡获得会员,完全解放双手。
获取 WPS sid 和邀请 id
获取 sid
电脑浏览器无痕窗口打开下方链接登录账号,点击签到。
签到完成后,按 F12 进入检查模式,选择 Network 并勾选下面 Preserve log 选项,之后刷新网页。网页刷新完成后,在检查窗口依次点击各项,在详细页面查找账号 cookie,复制保存 wps_sid=
后面的内容,这就是我们要的 sid。
获取邀请 id
点击签到页面左侧分享按钮,复制分享链接,链接中最后面一串数字就是你的邀请 id,类似于 490164639
。
获取 sckey
sckey 是用于微信接收 Server 酱 发送到签到成功通知的,每次函数运行成功,你都会在微信收到 Server 酱 发来的消息。点击 此处 按照 Server 酱 页面提示申请 sckey。
创建腾讯云函数
- 登录 腾讯云函数控制台(第一次使用可能需要激活,按步骤激活就可以)。
- 选择 函数服务 → 新建 → 自定义创建,依次设置函数名称、运行环境和执行超时时间。运行环境选择 Python3.6,执行超时时间设置为 150,点击下一步。
执行超时时间在 新建函数 页面下方 高级配置 里,必须设置为 150
云函数代码
点击函数代码,选择 index.py
,把下方代码 # 初始化信息
部分修改后填入框内。部署并测试。
# !/usr/bin/env python
# coding=utf-8
import requests
import pytz
import datetime
from io import StringIO
import time
# 初始化信息
SCKEY = 'xxxxxxxxxxxxxxxxxxxxxxxx' # '*********复制SERVER酱的SCKEY进来*************(保留引号)'
data = {
"wps_invite": [
{
"name": "WPS 签到",
"invite_userid": 490164639, # "*********填入邀请id*************(不保留双引号)",
"sid": "xxxxxxxxxx" # 填入sid(保留引号)
}
]
}
# 初始化日志
sio = StringIO('WPS签到日志\n\n')
sio.seek(0, 2) # 将读写位置移动到结尾
s = requests.session()
tz = pytz.timezone('Asia/Shanghai')
nowtime = datetime.datetime.now(tz).strftime("%Y-%m-%d %H:%M:%S")
sio.write("--------------------------" + nowtime + "----------------------------\n\n")
# 微信推送
def pushWechat(desp, nowtime):
ssckey = SCKEY
send_url = 'https://sc.ftqq.com/' + ssckey + '.send'
if '失败' in desp:
params = {
'text': 'WPS小程序签到失败提醒' + nowtime,
'desp': desp
}
else:
params = {
'text': 'WPS小程序签到提醒' + nowtime,
'desp': desp
}
requests.post(send_url, params=params)
# 主函数
def main():
wps_inv = data['wps_invite']
# 这13个账号被邀请
invite_sid = [
"V02StVuaNcoKrZ3BuvJQ1FcFS_xnG2k00af250d4002664c02f",
"V02SWIvKWYijG6Rggo4m0xvDKj1m7ew00a8e26d3002508b828",
"V02Sr3nJ9IicoHWfeyQLiXgvrRpje6E00a240b890023270f97",
"V02SBsNOf4sJZNFo4jOHdgHg7-2Tn1s00a338776000b669579",
"V02ScVbtm2pQD49ArcgGLv360iqQFLs014c8062e000b6c37b6",
"V02S2oI49T-Jp0_zJKZ5U38dIUSIl8Q00aa679530026780e96",
"V02ShotJqqiWyubCX0VWTlcbgcHqtSQ00a45564e002678124c",
"V02SFiqdXRGnH5oAV2FmDDulZyGDL3M00a61660c0026781be1",
"V02S7tldy5ltYcikCzJ8PJQDSy_ElEs00a327c3c0026782526",
"V02SPoOluAnWda0dTBYTXpdetS97tyI00a16135e002684bb5c",
"V02Sb8gxW2inr6IDYrdHK_ywJnayd6s00ab7472b0026849b17",
"V02SwV15KQ_8n6brU98_2kLnnFUDUOw00adf3fda0026934a7f",
"V02SC1mOHS0RiUBxeoA8NTliH2h2NGc00a803c35002693584d"
]
sio.write("\n\n==========wps邀请==========\n\n")
for item in wps_inv:
sio.write("为{}邀请---↓\n\n".format(item['name']))
if type(item['invite_userid']) == int:
wps_invite(invite_sid, item['invite_userid'])
else:
sio.write("邀请失败:用户ID错误,请重新复制手机WPS个人信息中的用户ID并修改'invite_userid'项,注意不保留双引号\n\n")
desp = sio.getvalue()
pushWechat(desp, nowtime)
print(desp)
return desp
# wps接受邀请
def wps_invite(sid: list, invite_userid: int) -> None:
invite_url = 'http://zt.wps.cn/2018/clock_in/api/invite'
for index, i in enumerate(sid):
headers = {
'sid': i
}
time.sleep(10)
r = s.post(invite_url, headers=headers, data={
'invite_userid': invite_userid})
sio.write("ID={}, 状态码: {}, \n\n ".format(str(index + 1).zfill(2), r.status_code))
def main_handler(event, context):
return main()
if __name__ == '__main__':
main()
设置函数运行事件
进入触发管理页面,创建触发器。触发方式选择定时触发,触发周期选择自定义触发周期,Cron 表达式填 0 0 8 * * * *
意思是每天上午 8 点签到。
至此,腾讯云函数自动打卡就已经设置完成了。接下来就是等着程序第二天自动帮你打卡了
项目地址
https://github.com/lepecoder/checkin
https://github.com/writemanybug/WPS-invite
-
办公四件套:WPS 文字、WPS 表格、WPS 演示、金山 PDF ↩