Jsoup模擬登錄例子

Jsoup模擬登錄小例子,不一樣的網站,須要不一樣的模擬策略,散仙在這裏僅僅做爲一個引導學習。 

Java代碼   收藏代碼
    1. package com.jsouplogin;  
    2.   
    3. import java.util.HashMap;  
    4. import java.util.List;  
    5. import java.util.Map;  
    6.   
    7. import org.jsoup.Connection;  
    8. import org.jsoup.Jsoup;  
    9. import org.jsoup.Connection.Method;  
    10. import org.jsoup.Connection.Response;  
    11. import org.jsoup.nodes.Document;  
    12. import org.jsoup.nodes.Element;  
    13.   
    14. /** 
    15.  * 使用Jsoup模擬登錄Iteye 
    16.  *  
    17.  *  
    18.  * 大致思路以下: 
    19.  *  
    20.  * 第一次請求登錄頁面,獲取頁面信息,包含表單信息,和cookie(這個很重要),拿不到,會模擬登錄不上 
    21.  *  
    22.  *  
    23.  * 第二次登錄,設置用戶名,密碼,把第一次的cooking,放進去,便可 
    24.  *  
    25.  * 怎麼肯定是否登錄成功? 
    26.  *  
    27.  * 登錄後,打印頁面,會看見歡迎xxx,便可證實 
    28.  *  
    29.  *  
    30.  * @date 2014年6月27日 
    31.  * @author qindongliang 
    32.  *  
    33.  *  
    34.  * **/  
    35. public class JsoupLoginIteye {  
    36.       
    37.     public static void main(String[] args)throws Exception {  
    38.           
    39.         JsoupLoginIteye jli=new JsoupLoginIteye();  
    40.         jli.login("xxxxx", "xxxxx");//輸入Iteye的用戶名,和密碼  
    41.           
    42.     }  
    43.     /** 
    44.      * 模擬登錄Iteye 
    45.      *  
    46.      * @param userName 用戶名 
    47.      * @param pwd 密碼 
    48.      *  
    49.      * **/  
    50.     public void login(String userName,String pwd)throws Exception{  
    51.           
    52.         //第一次請求  
    53.         Connection con=Jsoup.connect("http://www.iteye.com/login");//獲取鏈接  
    54.         con.header("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0");//配置模擬瀏覽器  
    55.         Response rs= con.execute();//獲取響應  
    56.         Document d1=Jsoup.parse(rs.body());//轉換爲Dom樹  
    57.         List<Element> et= d1.select("#login_form");//獲取form表單,能夠經過查看頁面源碼代碼得知  
    58.           
    59.        //獲取,cooking和表單屬性,下面map存放post時的數據   
    60.        Map<String, String> datas=new HashMap<>();  
    61.        for(Element e:et.get(0).getAllElements()){  
    62.            if(e.attr("name").equals("name")){  
    63.                e.attr("value", userName);//設置用戶名  
    64.            }  
    65.              
    66.            if(e.attr("name").equals("password")){  
    67.                e.attr("value",pwd); //設置用戶密碼  
    68.            }  
    69.              
    70.            if(e.attr("name").length()>0){//排除空值表單屬性  
    71.                  datas.put(e.attr("name"), e.attr("value"));    
    72.            }  
    73.        }  
    74.           
    75.          
    76.        /** 
    77.         * 第二次請求,post表單數據,以及cookie信息 
    78.         *  
    79.         * **/  
    80.        Connection con2=Jsoup.connect("http://www.iteye.com/login");  
    81.        con2.header("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0");  
    82.        //設置cookie和post上面的map數據  
    83.        Response login=con2.ignoreContentType(true).method(Method.POST).data(datas).cookies(rs.cookies()).execute();  
    84.        //打印,登錄成功後的信息  
    85.        System.out.println(login.body());  
    86.          
    87.        //登錄成功後的cookie信息,能夠保存到本地,之後登錄時,只需一次登錄便可  
    88.        Map<String, String> map=login.cookies();  
    89.        for(String s:map.keySet()){  
    90.            System.out.println(s+"      "+map.get(s));  
    91.        }  
    92.       
    93.     }  
    94.       
    95.       
    96.       
    97.   
    98.       
    99.       
    100. }  
相關文章
相關標籤/搜索