学信接口
import random
import socket
import struct
import requests
from bs4 import BeautifulSoup
import threading
head = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.190 Safari/537.36',
'Referer': 'https://www.chsi.com.cn/cet/'
}
quest_url = 'https://www.chsi.com.cn/cet/query'
p = {0, 1, 2, 4, 5}
def printf(html):
soup = BeautifulSoup(html, 'html.parser')
soup = soup.find('table', attrs='cetTable')
trs = soup.find_all('tr')
for i in p:
print(trs[i].th.text + trs[i].td.text.strip())
def work(id, name):
data = {
'zkzh': id,
'xm': name
}
while 1:
IP = socket.inet_ntoa(struct.pack('>I', random.randint(1, 0xffffffff)))
head['X-FORWARDED-FOR'] = IP
head['CLIENT-IP'] = IP
try:
r = requests.post(url=quest_url, headers=head, data=data)
except requests.exceptions.ConnectionError:
continue
except requests.exceptions.HTTPError:
continue
t = r.text.find('error alignC marginT20')
if t != -1:
return False
printf(r.text)
return True
flag = False
class myThread(threading.Thread):
def __init__(self, start_num, length, id, name):
super(myThread, self).__init__()
self.start_num = start_num
self.length = length
self.id = id
self.name = name
def run(self):
global flag
for i in range(self.start_num, self.start_num + self.length):
for j in range(1, 30):
if flag:
return
i = str(i)
j = str(j)
while len(i) < 3:
i = '0' + i
while len(j) < 2:
j = '0' + j
if work(str(self.id) + '2021' + i + j, self.name):
flag = True
return
thread_sum = 500
all_sum = 300
def letrun(id, name):
for i in range(1, all_sum):
myThread(i, 1, id, name).start()
if __name__ == '__main__':
print(f'{"四级小工具":=^50}')
print("本工具参数为300考场内,每考场30座位的学校,且只适用于2020下半年考试(无验证码阶段)")
id = input('请输入学校代码(准考证前六位):')
name = input('请输入姓名:')
print('查询中...')
letrun(id, name)
input()