Readfree每天签到可获取1~3个积分,每天其实还是挺麻烦的,所以折腾了自动签到
获取cookie
在chrome中登录Readfree后,点击地址栏前面的文档簿:
点击cookie 获得sessionid
,csrftoken
,Hm_lvt_375aa6d601368176e50751c1c6bf0e82
字段内容
Readfree的cookie大概一个星期的有效期,当cookie过期后需重复上述步骤修改
签到脚本
# -*- coding: utf-8 -*-
import requests
import time
from bs4 import BeautifulSoup
# 登录
def login(cookie):
url = 'http://readfree.me/accounts/checkin'
res = requests.get(url, cookies=cookie)
if res.status_code == 200:
return confirm(cookie)
else:
return '无法访问readfree.me'
# 确认是否签到成功
def confirm(cookie):
# 找到最新一条签到记录
url = 'https://readfree.me/accounts/profile/[此处需要修改为你的readfree用户名]/checkin/'
res = requests.get(url, cookies=cookie)
soup = BeautifulSoup(res.text, features="html.parser")
latest_rec = soup.find('tr', class_='info')
if latest_rec is None:
return '签到失败,可能是cookie过期了'
latest_time = latest_rec.td # 最后一次签的时间
latest_score = latest_time.find_next() # 最后一次签到获得的积分
total_score = latest_score.find_next() # 最后一次签到后的总积分
# 检查最后一次签到的日期是不是今天
date = time.strftime("%Y-%m-%d", time.localtime())
if latest_time.text.startswith(date):
message = '本次签到获得' + latest_score.text[1:] + '个积分,累计积分:' + total_score.text
return message
else:
# 不知道有没有这种情况
return '签到失败,cookie可能没过期'
# 准备cookie用于登录
# 可以在Chrome等浏览器手动登录后获取cookie, 根据对应字段修改下面的值即可
timestamp = '%d' % (int(time.time()))
cookie = {
'Hm_lvt_375aa6d601368176e50751c1c6bf0e82': '[此处需要修改]',
'Hm_lpvt_375aa6d601368176e50751c1c6bf0e82': timestamp,
'sessionid': '[此处需要修改]',
'csrftoken': '[此处需要修改]'
}
result = login(cookie)
print(result)
## 将签到结果推送到手机的Bark app(可选功能)
## 如果你的Bark app里显示的推送链接是 https://api.day.app/abcdefg/这里改成你自己的推送内容
## push_url 就设置为'https://api.day.app/abcdefg/'
## 推送的内容由后面的message变量提供
## 将结果推送的Bark app(可选功能)
# bark_url = '[此处需要修改Bark推送链接]'
# requests.post(bark_url+result)
windows任务计划
在win10的设置中搜索任务计划程序
,然后在右侧单击创建任务
,然后触发器
-> 新建
,在高级设置中可设定重复次数。
在操作
窗口配置任务,程序或脚本(P)
中为python安装路径,添加参数
中为脚本,起始于
为脚本路径,配置完成后就可以进入windows的任务计划库
-
当手动执行顺利,但任务执行报0x1的错误,应该是系统权限问题。在
常规
窗口,运行权限默认是只在用户登录是运行
,这样当没有登录的情况下定时任务无法执行,更改运行权限为不管用户是否登录都要运行
,点击确认会提示输入密码。 -
若输入密码提示
错误信息:所指定的账户名称无效
,可在安全选项
->更改用户或组
重新输入用户名并保存,用户名参考创建者
,可参考这里
Linux定时执行crontab
设置环境变量EDITOR,可参考这里
cron进程根据EDITOR
来确定使用哪个编辑器编辑crontab文件,UNIX和LINUX用户可使用vi,做法是在HOME
目录下的. profile
文件中加入下面一行:
EDITOR=vi; export EDITOR
然后保存并退出。
编辑crontab文件
当EDITOR环境变量设置为vi,添加、删除或编辑crontab文件中的条目就可以用下面命令在vi编辑crontab文件:
crontab -e
然后保存并退出。如果修改了某些条目或添加了新的条目,那么在保存该文件时, cron会对其进行必要的完整性检查。出现crontab: installing new crontab
即编辑成功,如果其中的某个域出现了超出允许范围的值,会给出提示,下面是一个例子:
# 每天八点半执行readfree.py
30 8 * * * /usr/software/anaconda3/bin/python3.6 /home/usrname/Read/readfree.py >> /home/usrname/Read/log1.txt 2>&1
列出crontab文件
使用-l参数列出crontab文件:
crontab -l
输出30 8 * * * /usr/software/anaconda3/bin/python3.6 /home/usrname/Read/readfree.py >> /home/usrname/Read/log1.txt 2>&1
而且可以使用下面的方法对crontab文件备份:
crontab -l > /home/usrname/Read/mycron
删除crontab文件
crontab -r
crontab的坑
可参考这里
- 1.python命令和程序文件路径都需要绝对路径
- 2.文件可执行权限
chmod +x readfree.py
- 3.报错
ImportError: No module named bs4
,可能是sys.path
问题,参考这里 比如命令行进入python,得到:
['', '/usr/software/anaconda3/lib/python36.zip', '/usr/software/anaconda3/lib/python3.6', '/usr/software/anaconda3/lib/python3.6/lib-dynload', '/usr/software/anaconda3/lib/python3.6/site-packages', '/usr/software/anaconda3/lib/python3.6/site-packages/glob2-0.4.1-py3.6.egg', '/usr/software/anaconda3/lib/python3.6/site-packages/tqdm-4.7.2-py3.6.egg']
但crontab执行时为:
['', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages']
,需要在crontab命令中使用usr/software/anaconda3/bin/python3.6 /home/usrname/Read/readfree.py
,同时在python文件中添加相应命令,包括行首添加的#!/usr/software/anaconda3/bin/python
和文中添加的
import sys
# print(sys.path)
sys.path.append('/usr/software/anaconda3/lib/python3.6/site-packages/')
Share this post
Twitter
Google+
Facebook
Reddit
LinkedIn
StumbleUpon
Pinterest