Android:HttpWatch+jsoup抓包
2015-04-10 13:48
239 查看
最近对抓包挺感兴趣的,所以就花了一点时间去研究。最后总结一下这套方法吧。
关于HttpWatch的使用可以参考:HttpWatch工具简介及使用技巧
总而言之,在这里Jsoup就是用来解析服务器返回的HTML代码。
Download the jsoup
Selector of jsoup
1.安装HttpWatch、打开IE右击网页或者选择工具栏,打开HttpWatch
![](http://img.blog.csdn.net/20150410130148081)
2.找到我们想要抓取数据的目标网站、HttpWatch点击Record、进入目标网站、HttpWatch点击Stop。这样我们就抓了第一个数据了。
![](http://img.blog.csdn.net/20150410130725693)
3.分析数据:从上图可以知道,这是个HttpGet请求,于是我们就写一个HttpGet方法,在OverView一栏可以看到请求的URL是:
http://notes.stu.edu.cn/login/Login.jsp?logintype=1(只是演示作用,校外网是点不进的)
4.没什么意外的话,我们的回调方法会得到一段服务器返回的html代码。接下来我们就用jsoup去解析这段html代码,我们可以在HttpWatch里面的Content看一下返回的html。
![](http://img.blog.csdn.net/20150410131555611)
我们想要的信息是这样一段html代码段
所以就根据Selector of jsoup写一个解析的方法
可以看到我们还把每条信息携带的文件名链接也解析出来
5.我们点击校内新闻网的具体新闻,
![](http://img.blog.csdn.net/20150410132616574)
对应上图和上上图可以发现具体新闻的URL就是一个主机名+我们解析出来的文件名链接。我们再对这个URL进行抓包操作即可得到新闻内容啦。
![](http://img.blog.csdn.net/20150410134446747)
具体新闻
![](http://img.blog.csdn.net/20150410134547087)
最后说明:上述的抓包过程都是HttpGet请求的,对于HttpPost请求的也大同小异,要分析的数据要多一点。
HttpWatch
这个软件相当于IE的一个插件(FireFox也支持)。HttpWatch是强大的网页数据分析工具,集成在Internet Explorer工具栏,包括网页摘要、Cookies管理、缓存管理、消息头发送/接受、字符查询、POST 数据和目录管理功能、报告输出等功能。总之HttpWatch 是一款能够收集并显示深层信息的软件。关于HttpWatch的使用可以参考:HttpWatch工具简介及使用技巧
jsoup
jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。总而言之,在这里Jsoup就是用来解析服务器返回的HTML代码。
Download the jsoup
Selector of jsoup
实战一次
抓取目标:校内新闻网站1.安装HttpWatch、打开IE右击网页或者选择工具栏,打开HttpWatch
2.找到我们想要抓取数据的目标网站、HttpWatch点击Record、进入目标网站、HttpWatch点击Stop。这样我们就抓了第一个数据了。
3.分析数据:从上图可以知道,这是个HttpGet请求,于是我们就写一个HttpGet方法,在OverView一栏可以看到请求的URL是:
http://notes.stu.edu.cn/login/Login.jsp?logintype=1(只是演示作用,校外网是点不进的)
[code] public static void sendHttpGetRequest(final String url, final HttpCallBack callBack) { new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub HttpClient client = new DefaultHttpClient(); HttpGet httpGet = new HttpGet(url); // httpGet.setHeader("Cookie", cookie_grade); HttpResponse response = null; try { response = client.execute(httpGet); HttpEntity entity = response.getEntity(); String string = EntityUtils.toString(entity, "utf-8"); if (callBack != null) callBack.onFinish(string); } catch (ClientProtocolException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }).start(); }
4.没什么意外的话,我们的回调方法会得到一段服务器返回的html代码。接下来我们就用jsoup去解析这段html代码,我们可以在HttpWatch里面的Content看一下返回的html。
我们想要的信息是这样一段html代码段
[code]<TR class=datalight> <TD width="50%"><a target ='_blank' href="/page/maint/template/news/newstemplateprotal.jsp?templatetype=1&templateid=3&docid=2382"><img class="vt" src="/csweb/images/38.jpg"> 36小时内满足你五个欲望― <创意黑客松活动 数据人生篇> 20150327-29</a></TD> <TD width="25%" align="center">网络与信息中心</TD> <TD width="25%" align="center">2015-04-10</TD> </TR> <TR class=datalight> <TD width="50%"><a target ='_blank' href="/page/maint/template/news/newstemplateprotal.jsp?templatetype=1&templateid=3&docid=2381"><img class="vt" src="/csweb/images/38.jpg"> 关于举办学生社区X计划之汕头传统手工艺探寻活动的通知</a></TD> <TD width="25%" align="center">学生处</TD> <TD width="25%" align="center">2015-04-10</TD> </TR>
所以就根据Selector of jsoup写一个解析的方法
[code] private Map<String, String> parseNoteHtml(String html) { Map<String, String> map = new LinkedHashMap<String, String>(); Document doc = Jsoup.parse(html); Elements elements = doc.select("table[class=ListStyle]"); Elements elements2 = elements.select("TR[class=datalight]"); for (Element element : elements2) { Elements element_href = element.select("a"); for (Element element_ : element_href) { map.put(element.text(), element_.attr("href")); } } return map; }
可以看到我们还把每条信息携带的文件名链接也解析出来
for (Element element_ : element_href) { map.put(element.text(), element_.attr("href")); }
5.我们点击校内新闻网的具体新闻,
对应上图和上上图可以发现具体新闻的URL就是一个主机名+我们解析出来的文件名链接。我们再对这个URL进行抓包操作即可得到新闻内容啦。
结果
新闻条目具体新闻
最后说明:上述的抓包过程都是HttpGet请求的,对于HttpPost请求的也大同小异,要分析的数据要多一点。
相关文章推荐
- http抓包工具推荐WSockExpert/httpwatch/HttpAnalyzer/DebugBar
- 天天记录 - Android抓包 - 抓取HTTP,TCP协议数据
- Android Fiddler 手机抓包 Http 数据
- AndroidHttpCapture---手机轻松抓包工具
- 用Fiddler在Android上抓包(Http+https)
- 小巧的网页抓包工具:HttpWatch
- HTTP相关,Android使用Fidder抓包
- android 开发环境的效率匹配(host修改和http抓包)
- 使用mitmproxy进行Android的http抓包
- (Android APP)HTTP调试代理之Fiddler抓包
- android_http抓包
- [HTTP]Android抓包方法(Wireshark)
- AndroidHttpClient & jsoup 解析 正方教务系统
- 一步步教你为网站开发Android客户端---HttpWatch抓包,HttpClient模拟POST请求,Jsoup解析HTML代码,动态更新ListView
- android http 抓包
- http抓包工具推荐WSockExpert/httpwatch/HttpAnalyzer/DebugBar
- 天天记录 - Android抓包 - 抓取HTTP,TCP协议数据
- android http 抓包
- 用Fiddler在Android上抓包(Http+https)
- 网页抓包工具httpwatch