如何通过抓包实现教务系统功能:La吧项目详解与工具推荐
在进行数据抓取分析时,许多人会困惑于工具的选择。实际上,许多浏览器本身就配备了强大的开发工具,足以应对这一任务。下面,我会为大家逐一介绍这些工具。
常见浏览器分析工具
使用IE内核的浏览器,比如360安全浏览器,可以安装一款功能强大的网页数据分析软件,这软件对于从事Web开发的人来说相当熟悉。火狐浏览器本身也配备了实用的工具,其功能和前面提到的类似,博主通常使用火狐浏览器来进行数据抓取和分析。
实际案例背景
以博主自身为例,他所创作的作品涉及从广东石油化工学院教务系统中提取数据进行分析和处理。通过他绘制的图表,人们或许会产生类似的抓取数据想法。现在,我们即将步入实际操作的阶段。
打开抓包分析页面
/**
* 登录时得到cookie
* @param xueHao 学号,即是登陆账号
* @param password 登陆密码
* @return
*/
public List getCookie(String xueHao,String password) {
List cookies = null; // 保存获取的cookie
try {
HttpClient client = new DefaultHttpClient();
//学校的教务系统,改为你的学校教务系统
String uriAPI = "http://218.15.22.136:3008/";
HttpPost httpPost = new HttpPost(uriAPI);
List params = new ArrayList();
params.add(new BasicNameValuePair(
"Window1$SimpleForm1$rdl_shenFen", "学生"));
params.add(new BasicNameValuePair("Window1$SimpleForm1$tbx_XueHao",
xueHao));
params.add(new BasicNameValuePair("Window1$SimpleForm1$tbx_pwd",
password));
params.add(new BasicNameValuePair("Window1_Collapsed", "false"));
params.add(new BasicNameValuePair("Window1_Hidden", "false"));
params.add(new BasicNameValuePair("Window1_SimpleForm1_Collapsed",
"false"));
params.add(new BasicNameValuePair("X_AJAX", "true"));
params.add(new BasicNameValuePair("X_CHANGED", "true"));
params.add(new BasicNameValuePair("X_STATE", "e30="));
params.add(new BasicNameValuePair("X_TARGET",
"Window1_Toolbar1_btn_login"));
params.add(new BasicNameValuePair("__EVENTARGUMENT", ""));
params.add(new BasicNameValuePair("__EVENTTARGET",
"Window1$Toolbar1$btn_login"));
// 发出HTTP request
httpPost.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));
// 取得HTTP response
HttpResponse httpResponse = client.execute(httpPost); // 执行
// 若状态码为200 ok
if (httpResponse.getStatusLine().getStatusCode() == 200) { // 返回值正常
// 获取返回的cookie
cookies = ((AbstractHttpClient) client).getCookieStore()
.getCookies();
//System.out.println("cookies=" + cookies);
if (cookies.isEmpty())
System.out.println("cookies empty");
} else {
}
} catch (Exception e) {
System.out.println("getCookie error:" + e);
}
return cookies;
}
一切准备就绪,只需轻点浏览器的小图标,或是直接敲击F12键,抓取页面数据的功能便会显现。这个页面,是后续深入分析的根本,一旦打开,便意味着我们能够踏入数据海洋,探寻所需信息。
选择并抓取数据
登录系统后,便可着手处理个人感兴趣的数据。挑选目标页面,一点击便可知晓登录是否成功,若已登录,界面将显示非空信息。此外,还能观察到所需数据是以json格式呈现,这便清晰指出了需要抓取的具体内容。
数据格式与解析
或许有人会觉得这些数据格式难以理解,但请放心。点击asp格式的网页,系统会以asp格式响应;若是html网页,则响应也将是html格式,均能被解析。首先需要确定目标网页的网址,例如3008.aspx,但仅有网址还不够。
权限与数据处理
/**
* 得到成绩数据
*/
public ArrayList<HashMap<String, Object>> getMyGrade(List cookies) {
String result = null;
ArrayList<HashMap<String, Object>> list = null;
String uriPath = "http://218.15.22.136:3008/ChengJiChaXun.aspx";
try {
HttpPost httpPost = new HttpPost(uriPath);
httpPost.setHeader("Cookie", "ASP.NET_SessionId="
+ cookies.get(0).getValue() + ";XingMing="
+ cookies.get(1).getValue());
HttpResponse httpResponse = new DefaultHttpClient()
.execute(httpPost);
if (httpResponse.getStatusLine().getStatusCode() == 200) {
result = EntityUtils.toString(httpResponse.getEntity());
if (result != null && !result.isEmpty()) {
list = new ArrayList<HashMap<String, Object>>();
list = toGradeData(result);
}
}
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return list;
}
进行数据检索时,需向系统透露个人身份信息。需将相关资料输入系统,例如("","ASP.=" +.get(0).()+";=" +.get(1).()),以便系统能够判定查询权限。在代码中,list = ()是博主自行开发的数据获取手段,用于将数据存入容器并返回。值得一提的是,博主的数据并非存储在本地文件中,而是通过网络从云端服务中获取。一旦服务器数据更新,下拉操作即可获取最新信息,同时还能在该平台设置应用官网等额外功能。
在使用浏览器工具抓取信息的过程中,大家是否遇到过什么困难?若觉得本文对您有所帮助,不妨点个赞或转发一下!
作者:小蓝
链接:https://www.lanmiyun.com/content/8665.html
本站部分内容和图片来源网络,不代表本站观点,如有侵权,可联系我方删除。