以下两个例子都是模拟登录教务网站 思想都是相通的,借助 Fillder 工具分析 , 登录所需参数逐步进行登录
/**
* 登录教务网站
*
* @param params
* (账号 ,密码)
* @return JsoupResult(cookie)
* @throws Exception
*/
private JsoupResponse login(Hashtable<String, Object> params)
throws Exception {
debug("> > > enter into login");
String userName = "";
String passWord = "";
if (params.containsKey("password")) {
Password password = (Password) params.get("password");
passWord = PasswordUtils.decrypt(password.getPasswordContent());
userName = password.getUserName();
} else {
userName = (String) params.get("userName");
passWord = (String) params.get("passWord");
}
Connection.Response resLogin = Jsoup
// 进入页面 ,获取参数
.connect(
"http://211.70.128.166/cas/login?service=http%3A%2F%2F211.70.128.166%2Fc%2Fportal%2Flogin")
.header("Host", "211.70.128.166")
.header("User-Agent",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.154 Safari/537.36")
.timeout(10000).execute();
Map<String, String> param = new HashMap<String, String>();
Document doc = resLogin.parse();
String lt = doc.select("tbody").select("input").eq(5).attr("value");
param.put("lt", lt);
param.put("_eventId", "submit");
param.put("logintype", "cas");
param.put("username", userName);
param.put("password", passWord);
Connection.Response res = Jsoup
// 利用参数进入主页面
.connect(
"http://211.70.128.166/cas/login?service=http%3A%2F%2F211.70.128.166%2Fc%2Fportal%2Flogin")
.header("Referer",
"http://211.70.128.166/cas/login?service=http%3A%2F%2F211.70.128.166%2Fc%2Fportal%2Flogin")
.header("Host", " 211.70.128.166")
.header("Accept-Language", "zh-CN,zh;q=0.8")
.header("User-Agent",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36")
.data(param).cookies(resLogin.cookies()).timeout(10000)
.method(Method.POST).execute();
if (res.parse().html().contains("注销")) {
debug("登录成功!!!");
return JsoupResponse.getInstance().cookieMap(res.cookies());
} else {
throw new JsoupException(JsoupError.LoginFalse, "登录失败!请检查登录账号密码!");
}
}
例2:
/**
* 登录教务网站
*
* @param params
* (账号 ,密码)
* @return JsoupResult(cookie)
* @throws Exception
*/
private JsoupResponse login(Hashtable<String, Object> params)
throws Exception {
debug("> > > enter into login");
String userName = "";
String passWord = "";
if (params.containsKey("password")) {
Password password = (Password) params.get("password");
passWord = PasswordUtils.decrypt(password.getPasswordContent());
userName = password.getUserName();
} else {
userName = (String) params.get("userName");
passWord = (String) params.get("passWord");
}
String sessionId = "";
if (params.containsKey("sessionId")) {
sessionId = (String) params.get("sessionId");
}
Connection.Response response = Jsoup
.connect("http://jw.coscoqmc.com.cn/_data/index_login.aspx")
.header("Host", "jw.coscoqmc.com.cn")
.header("Referer", "http://jw.coscoqmc.com.cn/index.aspx")
.header("User-Agent",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.154 Safari/537.36")
.cookie("ASP.NET_SessionId", sessionId).timeout(100000)
.execute();
String __VIEWSTATE = response.parse().select("input[name=__VIEWSTATE]")
.get(0).val();
String code = (String) params.get("code");
Map<String, String> param = new HashMap<String, String>();
param.put("__VIEWSTATE", __VIEWSTATE);
param.put(
"pcInfo",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.154 Safari/537.36 LBBROWSERundefined5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.154 Safari/537.36 LBBROWSER SN:NULL");
param.put("typeName", "学生");
param.put("Sel_Type", "STU");
param.put("txt_asmcdefsddsd", userName);
param.put("txt_pewerwedsdfsdff", passWord);
param.put("txt_sdertfgsadscxcadsads", code);
param.put("sbtState", "");
param.put("dsdsdsdsdxcxdfgfg", processUserNamePwd(userName, passWord));
param.put("fgfggfdgtyuuyyuuckjg", processCode(code));
Connection.Response res = Jsoup
.connect("http://jw.coscoqmc.com.cn/_data/index_login.aspx")
.header("Origin", "http://jw.coscoqmc.com.cn")
.header("Referer",
"http://jw.coscoqmc.com.cn/_data/index_login.aspx")
.header("Host", "jw.coscoqmc.com.cn")
.header("Accept-Language", "zh-CN,zh;q=0.8")
.header("User-Agent",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.154 Safari/537.36 LBBROWSER")
.data(param).cookie("ASP.NET_SessionId", sessionId)
.timeout(100000).method(Method.POST).execute();
Connection.Response resLogin = Jsoup
.connect("http://jw.coscoqmc.com.cn/SYS/Main_tools.aspx")
.header("Host", "jw.coscoqmc.com.cn")
.header("User-Agent",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.154 Safari/537.36")
.header("Referer", "http://jw.coscoqmc.com.cn/MAINFRM.aspx")
.cookie("ASP.NET_SessionId", sessionId).timeout(10000)
.execute();
if (resLogin.parse().html().contains("注销")) {
debug("登录成功!!!");
return JsoupResponse.getInstance().cookieMap(resLogin.cookies());
} else {
throw new JsoupException(JsoupError.LoginFalse, "登录失败!请检查登录账号密码!");
}
}