WhereMyLife自动定时打卡

由 admin 发布

WhereMyLife为kindle免费提供期刊订阅,不过其限制推送次数,但可以通过打卡获得,遂提供自动定时打卡的教程。

准备材料

  • 服务器(Linux/Windows,带Python3与宝塔)
    没服务器的,没装宝塔的解决办法见讨论,没Python又不想装的,就不要看了,请回吧
  • 本文提供的脚本代码(方法思路都挺简单的,就全分享了)

思路

准备脚本,需要实现自动登录以及自动打卡任务,利用宝塔的计划任务定时打卡。

实现

代码

直接上了

from requests import session
import time

def daily_check():
    try:
        user=''  #你的账号
        password='' #你的密码
        headers={'Accept': '*/*',
                'Accept-Encoding':'gzip, deflate',
                'Accept-Language':'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
                'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36 Edg/88.0.705.81'}
        json={'email':user,'password':password}
        s=session()
        txt='Time: '
        localtime = time.asctime( time.localtime(time.time()) )
        txt=txt+localtime+'\n'
        url='http://www.wheremylife.cn/1.0/user/isLogined'
        r=s.get(url=url,headers=headers)
        url='http://www.wheremylife.cn/1.0/user/login'
        r=s.post(url=url,headers=headers,json=json)
        url='http://www.wheremylife.cn/1.0/user/book'
        r=s.get(url=url,headers=headers)
        txt=txt+"Initial: "+str(r.json()['count'])+' times\n'
        url='http://www.wheremylife.cn/1.0/user/resetBook'
        r=s.post(url=url,headers=headers,json={})
        txt=txt+"Status: "+r.json()['message']+'\n'
        url='http://www.wheremylife.cn/1.0/user/book'
        r=s.get(url=url,headers=headers)
        txt=txt+"Current: "+str(r.json()['count'])+' times\n\n\n'
        with open('/root/WML/record.txt','a',encoding='utf-8') as f:  #文件路径记得修改,也可以将这两行删除
            f.write(txt)
        print(txt)
    except Exception as e:
        print(e)
        daily_check()
if __name__=='__main__':
    daily_check()

注意,文件修改的路径为脚本所在路径,record.txt为日志文件,不需要也可以将相关代码删除。
此代码使用了递归以实现避免网络连接错误导致的打卡失败。

定时任务

利用宝塔的计划任务,任务类型为Shell脚本,其他根据自己的需求设置,如每天06小时10分钟,即为每天早上6点10分执行该任务。
需要注意的是,linux可能默认Python2,记得使用Python3,若提示无此命令,在确保已经安装Python3的情况下使用绝对路径。
添加完任务,记得执行以测试。
测试

讨论

此脚本利用Python与宝塔的计划任务实现自动定时打卡,首先实现登录,再实现该平台的打卡,按照该方法也可以在别的平台上尝试打卡(签到)。同样,Python与不同的软件结合会有不同的效果,如使用pythonista3与iOS上的和快捷指令结合,即可实现语音打卡(签到)。

对于没有服务器的小伙伴,可以利用用自己的电脑代替,当然没有开机就不会执行计划任务哦。也可以选择上述提供的思路,和其他的玩意儿结合,比如语音打卡,突然想起来,iOS的快捷指令好像可以定时执行任务,这个也可以尝试。

对于没有装宝塔的小伙伴,可以尝试以下2种方法:

  • linux的crontab,Windows的计划任务,不会用的话看下一个方法
  • Python改成死循环,延时执行打卡函数,后台挂起脚本

对于没有Python的,
emmmmmm,
不是让你不要看了嘛......
不过,如果将上述脚本改成别的语言,倒也是可以,但别的语言的http请求都会写的话,应该也没有必要看这篇文章了吧

不知道某位同学的XX校园有没有写出来登录功能,只写签到功能很鸡肋的

PS:某某同学看到了一处文字编辑上的错误,现已改正,感谢一下!

参考文献

我需要吗???
真奇怪




仅有一条评论

  1. benn · 2021-12-14 20:25

    嗯…原来还有这种脚本的存在,决定在打卡页面加上人机验证!开玩笑的哈哈哈哈哈哈哈

发表评论