用於登陸後的信息收集爬蟲

有時候我們需要的用戶信息是要通過用戶登錄後得到,這些信息其實也可以通過爬蟲獲得。
本Demo中用到的2個外部庫 org.jsoup,jxl(用於寫EXCEL),
同樣以中南財經政法大學教務處學生個人信息系統爲例:
網址:http://202.114.224.81:7777/zhxt_bks/zhxt_bks.html
這裏是登陸
接下來就是查看網頁源碼,即找到傳遞賬號密碼的目的地址
http://202.114.224.81:7777/pls/wwwbks/bks_login2.login
驗證
登陸進去後查看所需調轉的網頁地址
http://202.114.224.81:7777/pls/wwwbks/xk.CourseView
(我這次是爲了得到課表,所以進入的是課表的網頁)
地址
接下來就是定位所需的內容
定位

接下來就是Po出源代碼
首先是遠程登陸的代碼:

 public static String login(String xh,String pwd) throws IOException
    {
        Map<String,String>   datas=new HashMap<String, String>();
        //對應學號和密碼stuid pwd
        datas.put("stuid", xh);
        datas.put("pwd", pwd);
        //將值傳入服務器,這個網址我在前面的圖中用箭頭指出了
        Connection connection=Jsoup.connect("http://202.114.224.81:7777/pls/wwwbks/bks_login2.login").data(datas);
        //得到Cookie才能進行頁面跳轉
        connection.get();
       //每次cookie不同
String  accountCookie=connection.response().cookie("ACCOUNT");
connection2=Jsoup.connect("http://202.114.224.81:7777/pls/wwwbks/bkscjcx.curscopre")

          return accountCookie;
    }

接下來是主函數:

public static void main(String args[]) throws IOException, BiffException, WriteException
    {
        int m=0;
        //我在這裏就不暴露自己的賬號密碼,總之xh寫自己的賬號
        //pwd   寫密碼
        String xh="";
        String pwd="";  

        WritableWorkbook book = Workbook.createWorkbook(new File("E:/學生信息表.xls")); //打開文件
        WritableSheet sheet = book.createSheet("第一頁", 0); //生成名爲“第一頁”的工作表,參數0表示第一
        //跳轉的網頁地址
        String searchKBUrl="http://202.114.224.81:7777/pls/wwwbks/xk.CourseView";
        //獲得Cookie
        String accountCookie=login(xh, pwd);
        //傳入Cookie值進行頁面的跳轉
        Connection connection=Jsoup.connect(searchKBUrl).cookie("ACCOUNT", accountCookie);
        //建立連接
        Document logindoc=connection.get();
        String[] str={"星期一","星期二","星期三","星期四","星期五","星期六","星期日"};
        String[] str1={"第一節","第二節","第三節","第四節","第五節"};
        for(int i=0;i<5;i++)
             sheet.addCell(new Label(0,i+1,str1[i]));
        for(int j=0;j<7;j++)
             sheet.addCell(new Label(j+1,0,str[j]));
        for(int i=0;i<5;i++)
        {
            for (int j=0;j<7;j++)
            {
                String courseContent=logindoc.getElementsByClass("td_biaogexian").get(m).getElementsByTag("p").text();
                StringBuffer sBuffer=new StringBuffer();
                char[] name=courseContent.toCharArray();
                for(int k=0;k<name.length;k++)
                {
                 if(!(name[k]==160))
                     sBuffer.append(name[k]);   
                }

                sheet.addCell(new Label(j+1,i+1,sBuffer.toString()));
                 m++;
            }
        }
     book.write();
     book.close();
    }

Po出結果圖:
結果
有人可能會說爲什麼我自己進行登錄的時候是需要驗證碼的。但是我在這裏並沒有進行驗證碼的輸入,因爲學校比較low.做的是前端驗證碼。如果遠程登錄直接掛服務器的話就可以繞過前端,樓主曾試過暴力破解別人的學生信息密碼,就是不停地循環迭代,(密碼只有6位),8G內存的筆記本,2個半小時就得到了密碼。

發佈了36 篇原創文章 · 獲贊 51 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章