qndxx(四川)打卡和邮件提醒实现

T1d 2022-9-21 844 9/21

token值过期导致打卡失败,项目暂停使用~

思考

这学期综测评定看了看,青年大学习差了好多期😟,没办法只能采取一些小手段满足一下按时“学习”并邮件通知我完成情况。

准备工具

python3环境
fiddler抓包工具
微信
(云服务器)--->定时运行脚本

抓包

首先我们打卡fiddler,退出微信登录,配置网络代理:

qndxx(四川)打卡和邮件提醒实现qndxx(四川)打卡和邮件提醒实现

登录微信,我们会发现fiddler里面已经出现了许多东西,不必管它,我们打开我们的学习网站,绑定微信进入界面,这时我们就可以去找我们需要的信息了:

如果尝试过复制链接去浏览器打开的同学应该知道,青年大学习的网址是/dxx.scyol.com/那我们搜索dxx.scyol.com就可以看见许多标黄的项:

qndxx(四川)打卡和邮件提醒实现

点开login查看json信息:

qndxx(四川)打卡和邮件提醒实现

记录下此处的token值,同时记录下请求头:

qndxx(四川)打卡和邮件提醒实现

接下来我们需要获取一些个人信息:

我们点开“学习记录”,再回去看抓包信息,找到/api/stages/currentInfo/查看json信息就可以看到自己的个人信息和组织信息:

qndxx(四川)打卡和邮件提醒实现

标黄的部分就是我们需要的信息,记录下来,相信仔细看看大家就能明白这些信息代表什么。

脚本打卡

接下来就使用python脚本填入刚刚我们得到的数据就可以实现打卡了:

#!/usr/bin/env python
# encoding=utf-8
import re
import requests
import json
import sys
import smtplib
import ssl
from email.message import EmailMessage


def mail_send(text):
    key = ''  # 换成你的QQ邮箱SMTP的授权码(QQ邮箱设置里)
    EMAIL_ADDRESS = ''  # 发件人邮箱地址
    RECEIVE_EMAIL_ADDRESS = ''  # 收件人邮箱地址
    EMAIL_PASSWORD = key

    smtp = smtplib.SMTP_SSL('smtp.qq.com', 465)

    context = ssl.create_default_context()
    sender = EMAIL_ADDRESS  # 发件邮箱
    receiver = RECEIVE_EMAIL_ADDRESS  # 收件邮箱

    subject = "qndxx打卡"
    body = text
    msg = EmailMessage()
    msg['subject'] = subject  # 邮件主题
    msg['From'] = sender
    msg['To'] = receiver
    msg.set_content(body)  # 邮件内容

    with smtplib.SMTP_SSL("smtp.qq.com", 465, context=context) as smtp:
        smtp.login(EMAIL_ADDRESS, EMAIL_PASSWORD)
        smtp.send_message(msg)


def main():
    url = "http://dxx.scyol.com/api/student/commit"

    # http://dxx.scyol.com/api/wechat/login 抓包获取数据(json文件)
    agent = {
        "User-Agent": "",  # header value
        'Content-Type': 'application/json',
        'token': ''  # token value
    }
    # 自行抓包获取数据
    data = {"name": "",  # 名字
            "tel": "",  # 电话
            "org": "",  # 注意不要省略#
            "lastOrg": 1,  # 直接填数字不需要加引号,改成自己的信息,这里1是占位用的
            "orgName": "",
            "allOrgName": "",  # 注意不要省略#
            }
    r = requests.post(url, headers=agent, data=json.dumps(data))
    r.encoding = 'utf-8'
    text = r.text
    mail_send(text)


if __name__ == '__main__':
    main()

其中一些邮箱需要完善的信息自行百度就可解决,如果不需要邮件提醒可用下面的脚本:

#!/usr/bin/env python
# coding=utf-8
import re
import requests
import json
import sys


def main():
    url = "http://dxx.scyol.com/api/student/commit"
    agent = {
        "User-Agent": "",
        'Content-Type': 'application/json',
        'token': ''
    }
    # 抓包获取数据!!!
    data = {"name": "",  # 名字
            "tel": "",  # 电话
            "org": "",
            "lastOrg": 1,
            "orgName": "",  #
            "allOrgName": "",
            }
    r = requests.post(url, headers=agent, data=json.dumps(data))
    r.encoding = 'utf-8'
    print(r.text)


main()

到此就完成整个流程了,如果对您有用的话欢迎在评论区留言哦~

(如果有什么问题实现不了也可以私聊我,主页有我的联系方式,该项目会定时更新。)

后续问题

在使用过程中出现了token值过期的问题,博主还在解决过程中,稍安勿躁~

声明

免责声明

请遵守相关法律法规,本教程及脚本仅作学习研究分享,所有脚本文件请在24小时内删除,切勿传播,所有法律责任由使用者自行承担,与本人无关!!!
- THE END -

T1d

4月17日08:36

最后修改:2023年4月17日
2

非特殊说明,本博所有文章均为博主原创。

共有 0 条评论

您必须 后可评论