Yii Framework 中文网每天签到 Python 脚本

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]": "52o@qq52o.cn",
    "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天"}

2 条评论

发表评论

*