模拟21cn邮箱登陆
用抓包工具firebug(本人使用的也可以时别的),找到登陆页面分析出form表单,21cn登陆的页面url是:
http://open.e.189.cn/189mail/account/unifyAccountLogin.do?appId=8013411507&version=v1.0&clientType=1¶s=C753AEA2F4A5B49F4CDB8FAA67B76EC6B7574A025C7762D4B6DF40517C089400A12B34FB306F67961C52F90B185E9D2C7C91EDA1D5B11ECCDCB6EC2E081060E34B9901761CBD9B3AC9654C6BC9A017CC5284E04EBEC9F4DF237F2E2E06E396BA5437FB665FEAE4C766ED22EDBE96383CFF858694C6148A8345A9C00695A3844735E4FF01FF0CC59FC1A62C672F9D3B168FE0AB271811A3EE5ECA0C342123FDF9B37CD271F748B2F33D6E3E28&sign=28E498416D78B2FEBED59826838D59B8EBFA374C&format=redirect
第一步:获得下一步post请求的需要的参数和cookies下面代码
//usename:为自己的用户名
//pwd为自己的邮箱密码
public static void login(String username, String pwd) {
Map<String, String> cookies3 = null ;
String str[] = new String[10];
// 第一次请求
// 获取链接
String url = "http://open.e.189.cn/189mail/account/unifyAccountLogin.do?appId=8013411507&version=v1.0&clientType=1¶s=C753AEA2F4A5B49F4CDB8FAA67B76EC6B7574A025C7762D4B6DF40517C089400A12B34FB306F67961C52F90B185E9D2C7C91EDA1D5B11ECCDCB6EC2E081060E34B9901761CBD9B3AC9654C6BC9A017CC5284E04EBEC9F4DF237F2E2E06E396BA5437FB665FEAE4C766ED22EDBE96383CFF858694C6148A8345A9C00695A3844735E4FF01FF0CC59FC1A62C672F9D3B168FE0AB271811A3EE5ECA0C342123FDF9B37CD271F748B2F33D6E3E28&sign=28E498416D78B2FEBED59826838D59B8EBFA374C&format=redirect";
Connection con = Jsoup.connect(url);
con.header("User-Agent", "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:41.0) Gecko/20100101 Firefox/41.0");
// 配置模拟浏览器)
// 获取响应
Response rs;
try {
rs = con.execute();
// System.out.println(rs.body());
// Document doc=con.get();
// 转换为dom
Document dl = Jsoup.parse(rs.body());
// 获取form表单,
List<Element> et = dl.select("#loginForm");
// 获取,cooking的表单属性。下面map存放post的数据
Map<String, String> map = new HashMap<String, String>();
/* map.put(“userName”, username);
map.put(“password”,pwd);*/
for (Element e : et.get(0).getAllElements()) {
// e.attr(“name”).equals(“userName”)表示name标签的值
if (e.attr(“name”).equals(“userName”)) {
// 设置用户名
e.attr(“value”, username);
}
if (e.attr(“name”).equals(“password”)) {
// 设置用户密码
e.attr(“value”, pwd);
}
// 排除空值表单属性
if (e.attr(“name”).length() > 0) {
map.put(e.attr(“name”), e.attr(“value”));
}
}
int i = 0;
for (Map.Entry<String, String> ele : map.entrySet()) {
System.err.println(ele);
str[i] = ele.getValue();
i++;
}
//获取页面cookie
Connection con1= Jsoup.connect("https://open.e.189.cn/api/common/loginSubmit.do?accountType="+str[5]+"&appId="+str[6]+"&returnUrl="+str[8]+"&clientType=