一.写在前面
为了方便查询高考录取情况,对安徽省教育招生考试院(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:
现已从沪返回,加速执行原计划。