胡云峰,陈皖芬
(1.文山学院 计科系,云南 文山 663000;2.文山州民族职业技术学校,云南 文山 663000)
国家每年都组织两次全国计算机等级考试,目的是检验考生的计算机使用水平。考试结束后,学校将所有考生的姓名、考号和查询密码整理为一个文件(如图1),组织大量教师分任务进行查询。由于考生众多,工作重复、枯燥,会导致很多错误的发生,因此往往一位教师完成工作后还需要另一位教师进行审核。是否可以寻求一种简单便捷的方式,避免重复输入考生考号、密码,同时避免手动登记考生考试成绩,最后可以分类统计,汇总及分析考生考试情况?
图1 学生姓名、考号及查询密码
抓取分数查询过程中产生的数据包,对数据包进行分析,提取有用信息,构造出查询数据后,利用XMLHttpRequest对象模拟客户端浏览器向服务器提交查询请求,最后根据服务器向客户端浏览器发回的应答数据包,提取出考生考试成绩等有用信息进行保存。
利用HTTPWATCH PROFESSIONAL捕获查询过程产生的数据包[1],如图2所示。
图2 成绩查询结果数据捕获
得到HTTP数据包数据如下:
对以上抓取到的HTTP数据包数据进行分析:
“POST /jsjks2011/servlet/Search HTTP/1.1”表示整个查询过程利用的是“POST”方式传递数据,数据传递的目的地址是“/jsjks2011/servlet/Search”。
“xh=3533520043000112&cxmm=19900320&Valid ateCode=gefw3&button=”表示整个查询过程中传递的数据,由3部分构成,其中“xh=3533520043000112”是在页面上填写的考号,“cxmm=19900320”是在页面上填写的查询密码,“ValidateCode=gefw3”是页面生成的验证码。
综合以上关键数据,利用易语言[2]及已经封装了XMLHttpRequest模拟数据提交绝大多数功能的“精易模块”来模拟整个过程的数据传递。
post地 址 = “http://score.ynzs.cn/jsjks2011/servlet/Search”
post数据 = “xh=3533520043000112&cxmm=19900320&ValidateCode=” + 删首尾空 (编辑框1.内容)
文本 = 网页 _ 访问 (post地址 , 1, , , 到字节集(post数据), ,)
输出调试文本(文本)
网页_访问()方法的参数<1>名称为“提交地址”,即为访问的网络地址。目的地址为:“http://score.ynzs.cn/jsjks2011/servlet/Search”。
网页_访问()方法的参数<2>名称为“提交方式”,由上分析,知道查询系统使用的数据传递方法为“POST”,这里提供1(代表POST方式)作为参数。
网页_访问()方法的参数<5>名称为 “提交数据”。
利用一个图片框控件显示页面生成的验证码,利用一个文本框控件让查询者手动填入验证码如图3所示。
图3 软件验证码输入界面
运行程序代码,利用“输出调试文本(文本)”在调试窗口输出调试结果,可以得到数据提交后返回的HTTP应答报文,如下:
可见,系统在输入验证码后可将准考证号所对应考生的考试结果以HTML网页的形式显示出来。至此,查看考试成绩功能实现。
在得到的应答数据包[3]中,包含了大量HTML代码,即考试结果是以HTML代码的形式返回给客户端浏览器的,因此,该模块只需从HTML代码中提取出关键信息,组成固定的格式,进行保存即可。
根据返回的HTML数据,利用正则表达式[4]匹配HTML代码,删除所有HTML标记,从中提取出需要的文本字段,将得到的结果保存到相应文件中即可。如:
系统最主要的功能之一就是能替代人工手动输入考生考号及密码信息(验证码需要手动输入)。为实现这一功能,需要系统能读取待查考生相关信息,并能将这些信息作为查询数据发送给服务器,使用易语言中的通用对话框控件以及相关属性和方法。打开通用对话框,选取考号、密码的记录文件,系统识别该文件,将以特定规则排列的考号、密码,读取到内存数组中,待要进行查询的时候,再将内存数组中的考号及密码一一对应组成HTTP数据包发送到服务器上进行查询。
考试成绩查询系统通过XMLHttpRequest对象模拟客户端浏览器向服务器提交查询请求,抓取服务器返回的应答数据包,分析相关数据后可提取出考生的成绩信息,并通过正则表达式匹配,删除HTML标记后对结果进行保存。对考试成绩查询这种重复枯燥,且必须在网络上进行操作并要保证其准确性的工作,只要根据网络数据包的结果和传递方式,对其进行一定的结构及利用,就可以从根本上改变工作方式,解决这个问题。只要根据网络数据包的结构和传递方式,对其进行一定的构造及利用,可以从根本上改变工作与生活方式。
[1]吴功宜,吴英.计算机网络技术教程—自顶向下分析与设计方案[M].北京:机械工业出版社,2010:119-126.
[2]易语言教材编委会.易语言编程系统[M].西安:西安地图出版社,2005:1-2.
[3]李太君,林元乖,张晋.计算机网络[M].北京:清华大学出版社,2009:67-68.
[4](美)Andrew Watt 著.李松峰,李丽,译.正则表达式入门经典[M].北京:清华大学出版社,2008:212.