wps是金山公司推出的国产office办公软件,WPS Office 采用三合一模式,即文字、表格、演示三大组件合并到同一个程序里,全新界面非常美观,拥有体积小、功能强大、使用广泛等优秀特征,其云服务在国内使用还是非常不错的。但是有一点让人比较不喜,那就是广告太多了,一度被专业机构评为了和2345同台竞技的广告软件。
wps推出了每日签到可以领取1-99天会员资格的活动,每日在wps公众号进行签到可以领取89项特权服务,其中最大亮点就是“免广告”,让你告别烦人的弹窗广告。有大佬为了解放双手,特意开发了wps自动签到脚本,基于python3脚本开发。
使用环境python3,自然在这里使用debian系统安装python3环境,使用crontab自动签到。
python3环境安装
apt-get install python3 apt-get install python3-pip pip3 install pytz
使用过程中如果报错:
Traceback (most recent call last): File "wps_scf_ziran.py", line 7, in <module> import pytz ImportError: No module named 'pytz'
执行pip3 install pytz即可安装功能。
脚本代码
先贴脚本main.py:
展开
# !/usr/bin/env python # coding=utf-8 import requests import time import json import sys import pytz import datetime from io import StringIO # 参考以下代码解决https访问警告 # from requests.packages.urllib3.exceptions import InsecureRequestWarning,InsecurePlatformWarning # requests.packages.urllib3.disable_warnings(InsecureRequestWarning) # requests.packages.urllib3.disable_warnings(InsecurePlatformWarning) # 初始化日志 sio = StringIO('WPS签到日志\n\n') sio.seek(0, 2) # 将读写位置移动到结尾 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): SCKEY = 'Server酱消息推送sckey' ssckey = SCKEY send_url='https://sc.ftqq.com/' + ssckey + '.send' params = { 'text': 'WPS小程序签到提醒' + nowtime, 'desp': desp } requests.post(send_url,params=params) # 主函数 def main(): # sio.write("\n ===模拟wps小程序签到===") data = { "wps_checkin": [ { "name": "wps用户名", "sid": "sid代码" } ], "wps_invite": [ { "name": "wps用户名", "invite_userid": "wps用户id", "sid": [] } ] } sid = data['wps_checkin'] for item in sid: sio.write("\n为{}签到---↓\n\n".format(item['name'])) wps_clockin(item['sid']) # sys.exit() 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'])) wps_invite(invite_sid, item['invite_userid']) desp = sio.getvalue() pushWechat(desp,nowtime) return desp # wps接受邀请 def wps_invite(sid: list, invite_userid: int) -> None: invite_url = 'http://zt.wps.cn/2018/clock_in/api/invite' s = requests.session() 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) -> None: getquestion_url = 'http://zt.wps.cn/2018/clock_in/api/get_question?member=wps' s = requests.session() # 打卡签到需要参加活动 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(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)) resp = json.loads(r.text) # 重新报名 if 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}) sio.write(r.text) def main_handler(event, context): return main() if __name__ == '__main__': main()
1、将代码保存为main.py文件
2、请依次修改 25、40、41、46、47行中的需要修改的部分内容
3、邀请用户签到可以额外获得会员,每日可邀请最多10个用户,main.py已预置了13个小号用于接受邀请,67-79行信息可选删改
参数修改
为了优化小白的使用,自然特意增加了这一部分。
3.1 Server酱消息推送sckey获取
打开网址:http://sc.ftqq.com/ 并使用github账号进行一键登录
1、选择顶栏“微信推送”绑定自己的微信账户
2、选择顶栏“发送消息”获取sckey填入脚本中
3.2 wps用户名、wps id 、sid获取
打开 https://vip.wps.cn 登录账号获取wps用户名和wps id
打开 https://zt.wps.cn/ 登录账号,利用浏览器审查功能获取sid
设置定时签到
利用crontab功能设置脚本定时执行,主要语句如下:
30 8 * * * /usr/bin/python3 /path/main.py
每天8点30分自动执行签到脚本
总结
每天会将签到结果自动推送至微信上面,方便检查自动签到是否成功。最后提醒一句,以防撕逼:wps条款明确表示通过技术手段获得的wps会员有可能会被吊销甚至封号。所以考虑清楚再使用,自然已经通过这个方式获得了几个月的wps会员,拥有89项特权服务。

2020年5月24日 23:03 1F
我用的是浏览器插件,每天自动签到,这个也不错,明天试试!
2020年5月30日 23:46 B1
@ 缙哥哥 方便透露下浏览器插件吗,没有Python基础,想用下简单的,qq525694470,谢谢
2020年5月24日 23:04 2F
我觉得完全可以使用宝塔来操作!
2020年5月25日 12:09 B1
@ 缙哥哥 是的,基于linux操作系统python3环境,可以用宝塔
2020年6月2日 12:19 3F
花里胡哨
2020年6月2日 19:45 B1
@ 企鹅博客 已经获得一年免费wps会员
2020年6月3日 17:14 B2
@ 自然 大佬。方便加个QQ吗,我不会这个,想问下。qq525694470,谢谢!!!
2020年6月4日 11:33 B3
@ 清影觅 如果不了解这个,可以看一下另一篇文章,使用浏览器自动签到
2020年6月4日 14:44 B4
@ 自然 已经弄好了浏览器插件,但是没有签到完成后的提醒,感觉还是不太行,不过还是谢谢啦
2020年6月4日 15:19 B4
@ 清影觅 魂签是多次签到才会成功
2020年6月4日 15:02 B4
@ 自然 大佬,想问下,可以通过server酱,把魂签每天签到成功后的消息发到微信上吗
2020年6月4日 15:16 B4
@ 清影觅 魂签结合server酱需要自己去整合代码,先声明我不会
魂签wps自动签到脚本有微信提示的
2020年6月4日 15:44 B4
@ 自然 对的,我想要的就是魂签签到成功后能够微信提示,我查了好多资料还是没太弄清楚,今天早上魂签签到的WPS没有提示==很疑惑
2020年6月5日 10:23 B4
@ 清影觅 签到是wps会员那个公众号给的提示,具体发送时间就不一定了
2020年6月6日 11:48 B4
@ 自然 好的,谢谢了,已成功连续三天签到了
2020年6月9日 17:33 B2
@ 自然 大佬我问下那个sid是只要wps_sid这一行的代码就行了吗
2020年6月10日 12:56 B3
@ 佲年 wps_sid对应的那个数值就可以了
2020年7月13日 19:20 4F
兄弟,你这个脚本跑不起来啊?电脑上和服务器上都不行,方便的话弄个能用的附件下载?
2020年7月13日 20:32 B1
@ 可儿 你复制过去需要注意windows和linux文件系统查遍喔,记得dos2unix进行文件的转换
2020年7月13日 19:21 5F
你这个复制下来到电脑上和服务器上都跑不起来,那几个对应的地方都改了没问题,能不能搞个能用的附件下载?
2020年7月13日 20:32 B1
@ 可儿 好的,感谢建议。我弄哈附件下载
2020年7月17日 12:42 6F
时间2020-07-17,打卡返回ParamData Empty,打卡失效了,邀请正常
2020年7月25日 12:37 B1
@ 临时 暂时没有解决办法,等待有大佬攻克这个问题
2020年7月18日 11:16 7F
签到似乎是改版了,能更新下签到脚本吗?连续两天签到都是错误了,需要手动签到呢
2020年7月25日 12:36 B1
@ bobby 大佬们正在攻坚,几乎都是一样的错误
2020年7月19日 08:31 8F
{“result”:”error”,”data”:[],”msg”:”ParamData Empty”}现在成这样了
2020年7月25日 12:36 B1
@ anonymous 暂时全网签到功能都挂了,邀请功能还是正常的。
2020年7月19日 12:29 9F
现在似乎失效了?因为签到机制改了,博主知道怎么解决吗
2020年7月25日 12:36 B1
@ 菜鸡 暂时全网签到功能都挂了,邀请功能还是正常的。
2020年7月20日 10:16 10F
sever酱提示{“result”:”error”,”data”:[],”msg”:”ParamData Empty”},而且没有打卡是怎么回事呀,但是邀请了10个人
2020年7月25日 12:35 B1
@ To 暂时全网签到功能都挂了,邀请功能还是正常的。
2020年7月25日 10:57 11F
失效了,打卡不能打了
2020年7月25日 12:35 B1
@ Sonder 暂时全网签到功能都挂了,邀请功能还是正常的。
2020年7月25日 11:20 12F
大佬,最近魂签签到WPS不能用了,请问还有其他方法吗
2020年7月25日 12:34 B1
@ 清影觅 暂时全网签到功能都挂了,邀请功能还是正常的。
2020年7月27日 22:17 B2
@ 自然 好的谢谢,那到时候您有新方法了我在过来围观hhhh,还有,我前几天打过电话给客服,客服说他们的程序员把电脑端签到系统优化了一下,具体也没说清楚,可能跟这个有关,就是每次都要绑定微信号
2020年7月28日 21:29 B3
@ 清影觅 这个就不是很清楚了,等待结果中