Yii 春节前的重磅新闻:Yii 2.0.16 版本发布了
经过国内 Yii 使用者坚持不懈的进行国际化翻译,以及在中国进行大量的宣传和推广,Yii China 目前已经成为全球最大的 Yii 中文社区
也就是 Yii Framework 中文网,地址为 www.yiichina.com
之前使用过 Yii 框架,所以也关注过 yiichina 网站,日常签到是必不可少的,目前也 py 了一个友情链接
手动签到有些麻烦,找个脚本定时跑吧,感谢作者@zavier
具体操作如下
1、安装环境
首先看一下服务器是否安装 Python,基本都有吧?
[root@qq52o ~]# python -V
Python 2.7.5
2、使用脚本安装和升级 pip
[root@qq52o ~]# wget https://bootstrap.pypa.io/get-pip.py
[root@qq52o ~]# python get-pip.py
[root@qq52o ~]# pip -V #查看pip版本
3、主体代码
直接上代码,可修改 header 头里面的内容
# coding=utf-8
import re
import requests
# 登录地址
url = "https://www.yiichina.com/login"
# 签到地址
url2 = "https://www.yiichina.com/registration"
# 构造登陆的header头
headers = {
'Accept': "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
'Accept-Encoding': "gzip, deflate, br",
'Accept-Language': "zh-CN,zh;q=0.9,en;q=0.8",
'Cache-Control': "no-cache",
'Connection': "keep-alive",
'Content-Length': "250",
'Content-Type': "application/x-www-form-urlencoded",
'Host': "www.yiichina.com",
'Origin': "https://www.yiichina.com",
'Pragma': "no-cache",
'Referer': "https://www.yiichina.com/login",
'Upgrade-Insecure-Requests': "1",
'User-Agent': "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_5) AppleWebKit/537.36 (KHTML, like Gecko) "
"Chrome/67.0.3396.99 Safari/537.36 "
}
# 构造签到的header头
headers2 = {
'Accept': "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
'Accept-Encoding': "gzip, deflate, br",
'Accept-Language': "zh-CN,zh;q=0.9,en;q=0.8",
'Cache-Control': "no-cache",
'Connection': "keep-alive",
'Content-Length': "250",
'Content-Type': "application/x-www-form-urlencoded",
'Host': "www.yiichina.com",
'Origin': "https://www.yiichina.com",
'Pragma': "no-cache",
'Referer': "https://www.yiichina.com/",
'User-Agent': "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_5) AppleWebKit/537.36 (KHTML, like Gecko) "
"Chrome/67.0.3396.99 Safari/537.36",
'X-CSRF-Token': "jiZGgvngdp0HiiclI4SheJlJr5-lVyymIFgbfE1ZUw33FWv2mI5DzyrJFUFHt8tO_h3az84GH9xEHEtFCh8cfg==",
'X-Requested-With': "XMLHttpRequest"
}
# 登陆方法和签到
def login_sign():
r_session = requests.Session()
page = r_session.get(url)
reg = r'<meta name="csrf-token" content="(.+)">'
csrf = re.findall(reg, page.content)[0]
data = {
"_csrf": csrf,
"LoginForm[username]": "[email protected]",
"LoginForm[password]": "shenyan5487.",
'LoginForm[rememberMe]': "0",
"LoginForm[rememberMe]": "1",
"login - button": ""
}
# 完成用户登录
response1 = r_session.post(url, data=data, headers=headers)
#print(response1.content) #去掉注释 这里就可以看到是否模拟登陆成功
page2 = r_session.get(url2)
reg = r'<meta name="csrf-token" content="(.+)">'
csrf = re.findall(reg, page2.content)[0]
data2 = {
"_csrf": csrf
}
# 模拟签到请求
response2 = r_session.post(url2, data=data2, headers=headers2)
print(response2.content)
if __name__ == "__main__":
login_sign()
4、安装依赖模块
安装requests
模块
[root@qq52o ~]# pip install requests
5、添加定时任务
在 linux 通过定时任务执行
[root@qq52o ~]# crontab -e
根据自己的需要设置定时任务
# /www/wwwroot/sign.py 表示对应的文件路径
# /tmp/yiichinasign.log 表示日志路径
30 0 * * * python /www/wwwroot/sign.py >> /tmp/yiichinasign.log 2>&1
如果打印出如下内容则可能是已经签到过或其他问题
{"status":0,"message":"未知错误"}
status
为 1 时则为签到成功
{"status":1,"message":"已连续1天"}
x-csrf-token 表单验证,不需要设置 cookie 吗。。我在另一个网站,没有cookie这个字段,会 400。 😥
大佬动不动就玩自动化,惹不起~
@西枫里博客 😆 顺手转发,给自己省事