考研成绩监听代码
心血来潮写了一个监听程序的代码,给23考研学子使用,可以卡卡BUG,说不定院校上传成绩的时候就可以查出来了[doge];
小白写的代码,对Python不是很了解,如果有不对的地方还请大家不吝赐教,谢谢!
代码整体思路:
- 请求url查看页面是否存在 “请检查您报考的招生单位是否已开通初试成绩查询功能” 关键字
- 如果不存在这个关键字则表示页面可能出成绩,将页面代码发送到邮箱
一、邮箱设置
步骤简述
- 打开163邮箱,点击设置 --> POP3/SMTP/IMAP进入SMTP设置页面;
- 开启SMTP服务,点击新增授权码,按提示发送短信,得到授权码,记得截图保存,否则只能删除重新添加
- 至此邮箱设置结束
二、代码更改
需要先安装requests、MIMEText、SMTP_SSL、time的库,这里就不详细解释,自行安装
import time
import requests
from smtplib import SMTP_SSL
from email.mime.text import MIMEText
# Request address
url = "https://yz.chsi.com.cn/apply/cjcx/cjcx.do"
# Request header
headers = {
"User-Agent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36'
}
# 初始状态,判断成绩是否出,若出成绩就停止查询
Initial_Status = True
def Send_Mail(message, subject, sender_show, recipient_show, to_addrs, cc_show=''):
# 发送邮件的配置信息(推荐使用163邮箱)
user = '邮箱账号名'
password = '上一步生成的SMTP密钥'
msg = MIMEText(message, 'plain', _charset="utf-8")
msg["Subject"] = subject
msg["from"] = sender_show
msg["to"] = recipient_show
msg["Cc"] = cc_show
with SMTP_SSL(host="smtp.163.com", port=465) as smtp:
smtp.login(user=user, password=password)
smtp.sendmail(from_addr=user, to_addrs=to_addrs.split(','), msg=msg.as_string())
def check_result(name, sf_id, ks_id, school_code):
# 请求参数,主要是姓名,身份证号码,考试编号,院校代码
params = {
"xm": name,
"zjhm": sf_id,
"ksbh": ks_id,
"bkdwdm": school_code,
}
res = requests.post(url, headers=headers, params=params)
if "请检查您报考的招生单位是否已开通初试成绩查询功能" not in res.text:
print("成绩已出")
print("正在发送邮件...")
# Send_Mail(发送内容, 发送主题, 发送人信息, 收件人姓名, 收件人邮箱)
Send_Mail(res.text, "邮件的标题", "发件人昵称", "收件人昵称", "收件人邮箱")
print("邮件发送成功!")
global Initial_Status
Initial_Status = False
if __name__ == '__main__':
number = 1
while Initial_Status:
check_result("姓名", 身份证号码, 准考证号码, 院校代码)
print("正在监听中...第" + str(number) + "次")
number += 1
# 间隔请求,单位为秒,建议10分钟以上的请求间隔,过快请求容易造成服务器崩溃,由此造成的后果由使用者负责
time.sleep(600)
上述代码中,需要更改的地方如下:
至此,在服务器中运行就可以,等待成绩的出来