Android:HttpWatch+jsoup抓包

來源:互聯網
上載者:User

標籤:httpwatch   jsoup   抓包   

最近對抓包挺感興趣的,所以就花了一點時間去研究。最後總結一下這套方法吧。

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(只是示範作用,校外網是點不進的)

    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程式碼片段
<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">&nbsp;&nbsp;36小時內滿足你五個慾望― &lt;創意駭客松活動 資料人生篇&gt; 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">&nbsp;&nbsp;關於舉辦學生社區X計劃之汕頭傳統手工藝探尋活動的通知</a></TD>                            <TD width="25%" align="center">學生處</TD>                            <TD width="25%" align="center">2015-04-10</TD>                  </TR>

所以就根據Selector of jsoup寫一個解析的方法

    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請求的也大同小異,要分析的資料要多一點。

Android:HttpWatch+jsoup抓包

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.