leemmmu的博客

原文地址:前往查看

一、首先你要知道什么是抓包

抓包就是将网络传输发送与接收的数据包进行截获、重发、编辑、转存等操作,也用来检查网络安全,但往往被某些无耻之徒用来网游作弊。

这是我大三上学期通过抓包做的小型教务系统-La吧(喇叭),可以查成绩,查所有班级的课表,公告栏,机构通知,图书馆查询书籍,查询借书情况、意见反馈等等的功能。后台数据通过Bmob移动后端云服务进行数据存储。

下面就让我通过我做的小项目进行阐述如何抓包吧。

二、你所需要的工具

抓取数据的分析工具有很多,不同浏览器也自带很多开发人员工具,如果你的是IE内核的浏览器的话,比如360安全浏览器,你可以安装一个HttpWatch,相对web开发的人员来说对这个工具很熟悉,HttpWatch是一款强大的网页数据分析工具。集成在Internet Explorer工具栏。包括网页摘要。Cookies管理。缓存管理。消息头发送/接受。字符查询。

如果你的是Firefox火狐浏览器的话,恭喜你,它里面自带了一个比较好用的工具firebug,它的功能是和HttpWatch差不多,区别不大,我就是用Firefox自带的工具进行抓包分析的。

下面就让我用图片展示firebug的安装吧:

三、你最关心的代码实现。

我做的作品是通过抓取我校(广东石油化工学院)的教务系统的数据进行分析和操作的,看到图片上的我画的,诶,是不是真是你想做和抓取的呀?

好了,现在要用的firebug终于到场了,我们点击浏览器小虫子的图标,或者直接按下F12快捷键,便出现这个页面,这个页面正是我们所需要的抓包分析页面。

有木有很激动,看到数据了没有?这些数据正是我们所需要的抓取的数据。

但是问题来了。我是先登录才能到这个页面的啊。

其实我们登陆时是通过cookie进行验证的,如果返回的cookie不为null,那么则是登陆成功

那么问题来了。我要怎么才能到到cookie了。cookie其实就相当于我们的身份证一样,里面有唯一的信息。不多说,直接上代码:

/** * 登录时得到cookie * @param xueHao 学号,即是登陆账号 * @param password 登陆密码 * @return */ public List<Cookie> getCookie(String xueHao,String password) { List<Cookie> cookies = null; // 保存获取的cookie try { HttpClient client = new DefaultHttpClient(); String uriAPI = ":3008/"; HttpPost httpPost = new HttpPost(uriAPI); List<NameValuePair> params = new ArrayList<NameValuePair>(); 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) { // 返回值正常// 获取返回的cookiecookies = ((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; }

你会问params.add(new BasicNameValuePair("X_AJAX", "true"))这些东西是什么啊?别急!再看图

告诉自己,我这次失败了,

leemmmu的博客

相关文章:

你感兴趣的文章:

标签云: