前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Yii Framework 中文网 Python 脚本自动签到

Yii Framework 中文网 Python 脚本自动签到

作者头像
hedeqiang
发布2019-12-17 21:51:20
1.2K0
发布2019-12-17 21:51:20
举报
文章被收录于专栏:LaravelCodeLaravelCodeLaravelCode

Yii China 上手动签到了455 天,我都不知道是怎么坚持下来的.........

今天终于换为自动签到了,使用 Python 脚本一键签到。

文章内容来自友链 @沈唁志

1、安装环境 目前 我的 Ubuntu 服务器自带 Python 版本 2.7.12,以及 Python 3.5.2 两个版本

python -V
Python 2.7.12

python3 -V
Python 3.5.2

2、使用脚本安装和升级 pip

我们使用 Python 3 来进行开发

sudo apt install python3-pip
pip3 -V

3、完整代码

编写一个 yiichina.py 的文件即可,可修改 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': "1QYGWGk0Js9c3Z1FjfACRzrLr7uspcsECiFCr3XQ6mGBc3wPWgJ3qDiJqwO8m2t2VoDK8u3Ko1ZvTiPcE5K4FA==",
    '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]": "laravel_code@163.com",
    "LoginForm[password]": "*******",
    '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 模块

pip3 install requests

5、添加定时任务

linux 通过定时任务执行

crontab -e

根据自己的需要设置定时任务

# /www/wwwroot/sign.py 表示对应的文件路径
# /tmp/yiichinasign.log 表示日志路径
30 0 * * * python /var/www/yiichina.py  >> /tmp/yiichina.log 2>&1

如果打印出如下内容则可能是已经签到过或其他问题

{"status":0,"message":"未知错误"}

status为 1 时则为签到成功

{"status":1,"message":"已连续1天"}

另外 Yii China 舰长目前新开一个新站,名为 php 圈子 网站为 https://php.la 。同样有签到功能,嘿嘿

其他内容和上方一直,只有一处细微差别, data 中的 _csrf 改为 _csrf-frontend 即可。另外 www.yiichina.com 改为 php.la

新增一个 py 文件 phpla.py

# coding=utf-8
import re
import requests

# 登录地址
url = "https://php.la/login"
# 签到地址
url2 = "https://php.la/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': "php.la",
    'Origin': "https://php.la",
    'Pragma': "no-cache",
    'Referer': "https://php.la/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': "php.la",
    'Origin': "https://php.la",
    'Pragma': "no-cache",
    'Referer': "https://php.la/",
    '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': "H41rvxjDo58ocyQaOGkn1fwtS_T6KCwizJ1LKQ3zFjFZ-RH-caz0zRohbXZ2CFGUlnkNloxebXH47AZAard4aw==",
    '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-frontend": csrf,
    "LoginForm[username]": "laravel_code@163.com",
    "LoginForm[password]": "*******",
    'LoginForm[rememberMe]': "0",
    "LoginForm[rememberMe]": "1",
    }
    # 完成用户登录
    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-frontend": csrf
    }
    # 模拟签到请求
    response2 = r_session.post(url2, data=data2, headers=headers2)
    print(response2.content)

if __name__ == "__main__":
    login_sign()

以上就是自动签到了

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档