Jsoup模擬登陸例子
Jsoup模擬登陸小例子,不同的網站,需要不同的模擬策略,散仙在這里僅僅作為一個引導學習。
package com.jsouplogin;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.jsoup.Connection;
import org.jsoup.Jsoup;
import org.jsoup.Connection.Method;
import org.jsoup.Connection.Response;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
/**
* 使用Jsoup模擬登陸Iteye
*
*
* 大體思路如下:
*
* 第一次請求登陸頁面,獲取頁面信息,包含表單信息,和cookie(這個很重要),拿不到,會模擬登陸不上
*
*
* 第二次登陸,設置用戶名,密碼,把第一次的cooking,放進去,即可
*
* 怎么確定是否登陸成功?
*
* 登陸后,打印頁面,會看見歡迎xxx,即可證明
*
*
* @date 2014年6月27日
* @author qindongliang
*
*
* **/
public class JsoupLoginIteye {
public static void main(String[] args)throws Exception {
JsoupLoginIteye jli=new JsoupLoginIteye();
jli.login("xxxxx", "xxxxx");//輸入Iteye的用戶名,和密碼
}
/**
* 模擬登陸Iteye
*
* @param userName 用戶名
* @param pwd 密碼
*
* **/
public void login(String userName,String pwd)throws Exception{
//第一次請求
Connection con=Jsoup.connect("http://www.iteye.com/login");//獲取連接
con.header("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0");//配置模擬瀏覽器
Response rs= con.execute();//獲取響應
Document d1=Jsoup.parse(rs.body());//轉換為Dom樹
List<Element> et= d1.select("#login_form");//獲取form表單,可以通過查看頁面源碼代碼得知
//獲取,cooking和表單屬性,下面map存放post時的數據
Map<String, String> datas=new HashMap<>();
for(Element e:et.get(0).getAllElements()){
if(e.attr("name").equals("name")){
e.attr("value", userName);//設置用戶名
}
if(e.attr("name").equals("password")){
e.attr("value",pwd); //設置用戶密碼
}
if(e.attr("name").length()>0){//排除空值表單屬性
datas.put(e.attr("name"), e.attr("value"));
}
}
/**
* 第二次請求,post表單數據,以及cookie信息
*
* **/
Connection con2=Jsoup.connect("http://www.iteye.com/login");
con2.header("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0");
//設置cookie和post上面的map數據
Response login=con2.ignoreContentType(true).method(Method.POST).data(datas).cookies(rs.cookies()).execute();
//打印,登陸成功后的信息
System.out.println(login.body());
//登陸成功后的cookie信息,可以保存到本地,以后登陸時,只需一次登陸即可
Map<String, String> map=login.cookies();
for(String s:map.keySet()){
System.out.println(s+" "+map.get(s));
}
}
} 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!