1. Python

考试院查询接口分析

一.写在前面

为了方便查询高考录取情况,对安徽省教育招生考试院(cx.ahzsks.cn)目标网站进行分析。

二.F12

从响应头可以看出服务器为Nginx+PHP

查询需要输入考生号,身份证号,验证码。

这个验证码能挡住谁???

三.代码实现

Python大法好

#2019高考录取查询
#Michael Jiang
#2019年7月29日18:34:03

import requests
import time
from bs4 import BeautifulSoup

in_url = "http://cx.ahzsks.cn/pugao/pglq2019_in.php"

out_url = "http://cx.ahzsks.cn/pugao/pglq2019_out.php"

#考生号
ksh = ""

#身份证号
sfzh = ""

headers = {
        'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36 QIHU 360SE',
        'Cookie':'PHPSESSID=duapea8pnci4jku31sjeeinse7'
}

def update():
    r = requests.get(in_url,headers = headers)
    r.encoding="GB2312"
    html = BeautifulSoup(r.text, "html.parser")

    attr = html.find("input", attrs={"id":"yzm"})
    yzm = attr.string
    print("验证码:"+yzm)
    data = {
        "ksh":ksh,
        "sfzh":sfzh,
        "yzm":yzm
    }

    r = requests.post(out_url,headers = headers,data = data)
    r.encoding="GB2312"
    html = BeautifulSoup(r.text, "html.parser")
    attr = html.find_all('td')
    for line in attr:
        print(line.get_text().strip())

if __name__ == "__main__":
    while(True):
        try:
            print(time.ctime())
            update();
            print()
            time.sleep(60)
        except:
             pass
    

前端表单提交的ksh,sfzh,yzm给pglq2019_out.php,通过PHP的session技术来实现验证码的验证。

这里我实现了一分钟查询一次录取结果。

执行如下:

Wed Jul 31 18:39:04 2019
验证码:3026
考生号:*******************身份证号:**********************
暂无录取信息

PS:

现已从沪返回,加速执行原计划。