【WPS自动签到】利用云函数实现WPS自动签到获得WPS免费会员

【WPS自动签到】利用云函数实现WPS自动签到获得WPS免费会员前言 WPS 是一款经常用的软件 但是会员又不想买 有些功能还必须会员使用 本来 WPS 是有一个 打卡签到 可以免费领取会员的 但是每天总是忘 因此想到利用 云函数 Server 酱实现基于 Python 的自动打卡签到 这样每天就会自动获得会员了 效果还不错 由于内置了一些小号来接受打卡邀请 因此我们的账号还可获得邀请奖励 2020 07 17 日亲测是每天最少获得 11 天的会员 下面是这几天的实测效果 2020 07 17 亲测有效 2020 07 18 又获得 11 天会员一 需要的一些配

【2020.07.20更新】

自动打卡签到已经失效,需要手动打卡,但是自动邀请仍然正常,手动打卡后每天仍然可以获得11天+的会员。

【WPS自动签到】利用云函数实现WPS自动签到获得WPS免费会员
2020.07.20日打卡获得12天会员

 

【WPS自动签到】利用云函数实现WPS自动签到获得WPS免费会员
2020.07.19打卡获得11天会员

 

 

前言

WPS是一款经常用的软件,但是会员又不想买, 有些功能还必须会员使用,本来WPS是有一个【打卡签到】可以免费领取会员的,但是每天总是忘,因此想到利用“云函数”+Server酱实现基于Python的自动打卡签到,这样每天就会自动获得会员了,效果还不错,由于内置了一些小号来接受打卡邀请,因此我们的账号还可获得邀请奖励,2020.07.17日亲测是每天最少获得11天的会员,下面是这几天的实测效果:

【WPS自动签到】利用云函数实现WPS自动签到获得WPS免费会员
2020.07.17亲测有效

 

【WPS自动签到】利用云函数实现WPS自动签到获得WPS免费会员
2020.07.18又获得11天会员

 


 一.需要的一些配置说明

废话不多说,直接说怎么实现,我们需要进行一些简单的配置。

1.1 获得自己WPS帐号的[sid]和[userid]

首先我们就是要知道自己的【sid】和【userid】,这两个是我们帐号的标志符或者说是自己的WPS帐号的ID身份证明,那么我们去哪里获得这两个参数呢?

其实很简单,首先我们需要知道一些基础的抓包操作,一般浏览器都是【F12】键开启控制台调试,以谷歌浏览器为例,首先跳转到WPS官方的签到网站:https://zt.wps.cn/2018/clock_in/,界面截图如下:

【WPS自动签到】利用云函数实现WPS自动签到获得WPS免费会员
WPS官方签到页面

此时我们按【F12】,点击【网络】,进入抓包调试界面, 这时候我们在签到页面点击登录,按照提示登录后,因为抓包已经开启,故就可在【clock_in】页面获取到自己登陆后返回的【sid】了,需要注意的是WPS账号一定要先绑定手机号和微信,否则可能会提示出错。具体操作截图如下:

【WPS自动签到】利用云函数实现WPS自动签到获得WPS免费会员
具体抓包操作截图

我们把【sid】记录下来先,接下来继续找到我们的【userid】,此信息就是我们手机WPS个人信息中的用户ID,举例:【】这一串数字就是我们的【userid】,如下图示:

【WPS自动签到】利用云函数实现WPS自动签到获得WPS免费会员
获取自己的userid

 知道这两个我们就获取了自己的信息了,就可以进行下一步了。

1.2 配置server酱用于信息推送

接下来我们需要配置的是【server酱】,它是用来在push微信信息来告诉我们每天签到是否成功还是失败,使用很简单,只需要按照网站上的流程来即可,网站如下:http://sc.ft.com

配置好拿到SERVER酱的SCKEY即可,举例:SCUXXXXXXXXXXXXXXXX

1.3 配置云函数

云函数可以理解为在云上运行的代码,好处就是可以自动执行,不需要你在自己电脑上运行,目前各个商家的云函数每个月都会给用户免费提供一些次数,在这里我用的是腾讯云函数,一个月是100万次的免费次数,实际上我们实现WPS自动签到一个月只需要30次就够了,因此是绰绰有余的。

首先登陆腾讯云:https://cloud.tencent.com/ ,登陆后找到云函数选项,进入,之后新建一个云函数,配置一下点下一步,详情如下图:

【WPS自动签到】利用云函数实现WPS自动签到获得WPS免费会员
选择云函数

 

【WPS自动签到】利用云函数实现WPS自动签到获得WPS免费会员
新建云函数

 

【WPS自动签到】利用云函数实现WPS自动签到获得WPS免费会员
新建函数的配置

 

之后在代码编辑栏里输入一下代码,注意下面的代码中请依次修改 23、27、28、33、34行中的需要修改的部分内容!

# !/usr/bin/env python # coding=utf-8 import requests import time import json import sys import pytz import datetime import re from io import StringIO # Python版本 3.6 # 更新:添加签到失败提醒 # 请依次修改 23、27、28、33、34行中的需要修改的部分内容 # 邀请用户签到可以额外获得会员,每日可邀请最多10个用户,已预置了13个小号用于接受邀请,89-101行信息可选删改 # 参考以下代码解决https访问警告 # from requests.packages.urllib3.exceptions import InsecureRequestWarning,InsecurePlatformWarning # requests.packages.urllib3.disable_warnings(InsecureRequestWarning) # requests.packages.urllib3.disable_warnings(InsecurePlatformWarning) # 初始化信息 SCKEY = '*复制SERVER酱的SCKEY进来*(保留引号)' data = { "wps_checkin": [ { "name": "*请自行输入,仅用于显示*(保留双引号)", "sid": "*复制'http://zt.wps.cn'网址Cookie中的sid进来*(保留双引号)" } ], "wps_invite": [ { "name": "*请自行输入,仅用于显示*(保留双引号)", "invite_userid": "*复制手机WPS个人信息中的用户ID进来,类似括号内容()*(不保留双引号)", "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.ft.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(): # sio.write("\n ===模拟wps小程序签到===") sid = data['wps_checkin'] for item in sid: sio.write("\n为{}签到---↓\n\n".format(item['name'])) bl = wps_clockin(item['sid']) if bl == 1: # 获取当前会员信息 member_url = 'https://zt.wps.cn/2018/clock_in/api/get_data?member=wps' r1 = s.get(member_url, headers={'sid': item['sid']}) # 累计获得会员天数 total_add_day = re.search('"total_add_day":(\d+)', r1.text).group(1) sio.write('累计获得会员天数: {}天\n\n'.format(total_add_day)) userinfo_url = 'https://vip.wps.cn/userinfo' r2 = s.get(userinfo_url, headers={'sid': item['sid']}) resp = json.loads(r2.text) sio.write('会员信息: { 
   { "类型":{}, '.format(resp['data']['vip']['name'])) sio.write('"过期时间":{} }}\n\n'.format(datetime.datetime.fromtimestamp( resp['data']['vip']['expire_time']).strftime("%Y--%m--%d %H:%M:%S"))) # sys.exit() wps_inv = data['wps_invite'] # 这13个账号被邀请 invite_sid = [ "V02StVuaNcoKrZ3BuvJQ1FcFS_xnG2k00af250dc02f", "V02SWIvKWYijG6Rggo4m0xvDKj1m7ew00a8e26db828", "V02Sr3nJ9IicoHWfeyQLiXgvrRpje6E00a240bf97", "V02SBsNOf4sJZNFo4jOHdgHg7-2Tn1s00ab", "V02ScVbtm2pQD49ArcgGLv360iqQFLs014c8062e000b6c37b6", "V02S2oI49T-Jp0_zJKZ5U38dIUSIl8Q00aa0e96", "V02ShotJiWyubCX0VWTlcbgcHqtSQ00a45564e00c", "V02SFiqdXRGnH5oAV2FmDDulZyGDL3M00a61660c0026781be1", "V02S7tldy5ltYcikCzJ8PJQDSy_ElEs00a327c3c00", "V02SPoOluAnWda0dTBYTXpdetS97tyI00a16135e002684bb5c", "V02Sb8gxW2inr6IDYrdHK_ywJnayd6s00ab7472b0026849b17", "V02SwV15KQ_8n6brU98_2kLnnFUDUOw00adf3fda0026934a7f", "V02SC1mOHS0RiUBxeoA8NTliH2h2NGc00a803cd" ] 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 } r = s.post(invite_url, headers=headers, data={ 'invite_userid': invite_userid}) sio.write("ID={}, 状态码: {}, \n\n 请求信息{}\n\n".format(str(index+1).zfill(2), r.status_code, r.text)) # wps签到 def wps_clockin(sid: str): if len(sid) == 0: sio.write("签到失败:用户sid为空,请重新输入\n\n") return 0 elif "*" in sid or sid[0] != "V": sio.write("签到失败:用户sid错误,请重新输入\n\n") return 0 # 打卡签到 clockin_url = 'http://zt.wps.cn/2018/clock_in/api/clock_in?member=wps' r = s.get(clockin_url, headers={'sid': sid}) if len(r.history) != 0: if r.history[0].status_code == 302: sio.write("签到失败:用户sid错误,请重新输入\n\n") return 0 resp = json.loads(r.text) # 判断是否已打卡 if resp['msg'] == '已打卡': sio.write("签到信息: {}\n\n".format(r.text)) return 1 # 判断是否绑定手机 elif resp['msg'] == '未绑定手机': sio.write('签到失败: 未绑定手机,请绑定手机后重新运行签到\n\n') return 0 # 判断是否重新报名 elif resp['msg'] == '前一天未报名': sio.write('前一天未报名\n\n') signup_url = 'http://zt.wps.cn/2018/clock_in/api/sign_up' r=s.get(signup_url, headers={'sid': sid}) resp = json.loads(r.text) if resp['result'] == 'ok': sio.write('报名信息: 已自动报名,报名后第二天签到\n\n') return 1 else: sio.write('报名失败: 请手动报名,报名后第二天签到\n\n') return 0 # 打卡签到需要参加活动 elif resp['msg'] == '答题未通过': getquestion_url = 'http://zt.wps.cn/2018/clock_in/api/get_question?member=wps' r = s.get(getquestion_url, headers={'sid': sid}) ''' { "result": "ok", "data": { "multi_select": 1, "options": [ "30天文档分享链接有效期", "远程下载助手", "输出长图片去水印", "PDF转图片" ], "title": "以下哪些特权是WPS会员和超级会员共同拥有的?" }, "msg": "" } ''' answer_set = { 'WPS会员全文检索', '100G', 'WPS会员数据恢复', 'WPS会员PDF转doc', 'WPS会员PDF转图片', 'WPS图片转PDF插件', '金山PDF转WORD', 'WPS会员拍照转文字', '使用WPS会员修复', 'WPS全文检索功能', '有,且无限次', '文档修复' } resp = json.loads(r.text) # sio.write(resp['data']['multi_select']) # 只做单选题 multi_select==1表示多选题 while resp['data']['multi_select'] == 1: r = s.get(getquestion_url, headers={'sid': sid}) resp = json.loads(r.text) # sio.write('选择题类型: {}'.format(resp['data']['multi_select'])) answer_id = 3 for i in range(4): opt = resp['data']['options'][i] if opt in answer_set: answer_id = i+1 break sio.write("选项: {}\n\n".format(resp['data']['options'])) sio.write("选择答案: {}\n\n".format(answer_id)) # 提交答案 answer_url = 'http://zt.wps.cn/2018/clock_in/api/answer?member=wps' r = s.post(answer_url, headers={'sid': sid}, data={'answer': answer_id}) resp = json.loads(r.text) # 答案错误 if resp['msg'] == 'wrong answer': sio.write("答案不对,挨个尝试\n\n") for i in range(4): r = s.post(answer_url, headers={'sid': sid}, data={'answer': i+1}) resp = json.loads(r.text) sio.write(i+1) if resp['result'] == 'ok': sio.write(r.text) break # 打卡签到 clockin_url = 'http://zt.wps.cn/2018/clock_in/api/clock_in?member=wps' r = s.get(clockin_url, headers={'sid': sid}) sio.write("签到信息: {}\n\n".format(r.text)) return 1 # 判断是否不在签到时间内 elif resp['msg'] == '不在打卡时间内': sio.write('签到失败: 不在打卡时间内\n\n') signup_url = 'http://zt.wps.cn/2018/clock_in/api/sign_up' r=s.get(signup_url, headers={'sid': sid}) resp = json.loads(r.text) if resp['result'] == 'ok': sio.write('已自动报名,报名后请设置在规定时间内签到\n\n') return 1 else: sio.write('报名失败: 请手动报名,报名后第二天签到\n\n') return 0 # 其他错误 elif resp['result'] == 'error': sio.write('签到失败信息: {}\n\n'.format(r.text)) signup_url = 'http://zt.wps.cn/2018/clock_in/api/sign_up' r=s.get(signup_url, headers={'sid': sid}) resp = json.loads(r.text) if resp['result'] == 'ok': sio.write('已自动报名,报名后请设置在规定时间内签到\n\n') return 1 else: sio.write('报名失败: 请手动报名,报名后第二天签到\n\n') return 0 def main_handler(event, context): return main() if __name__ == '__main__': main()

按照说明修改完以上代码后,我们可以先测试触发一下看看是否配置正确,点击下面的【测试】按钮,会返回测试结果,如下图所示:

【WPS自动签到】利用云函数实现WPS自动签到获得WPS免费会员
测试返回结果

 

确认代码无误后,我们点击完成,之后配置云函数的触发规则,首先点击【触发管理】,之后选择【创建触发器】,具体操作如下图:

【WPS自动签到】利用云函数实现WPS自动签到获得WPS免费会员
创建触发器

 创建完触发器后,我们配置触发器规则,首先在触发方式里选择【定时触发】,触发周期里选择【自定义触发周期】,在下面的Cron表达式里填入:0 10 8 * * * *  

如下图示:

【WPS自动签到】利用云函数实现WPS自动签到获得WPS免费会员
触发器规则配置

 

以上完成后,便可解放双手,每天在8点10分自动签到,会员就到手了。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/205933.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午4:51
下一篇 2026年3月19日 下午4:52


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号