实战新浪登录
import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.apache.http.Header; import org.apache.http.HttpEntity; import org.apache.http.NameValuePair; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.cookie.Cookie; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.BasicCookieStore; import org.apache.http.impl.cookie.BasicClientCookie; import org.apache.http.message.BasicNameValuePair; import org.apache.http.protocol.HTTP; import org.apache.http.util.EntityUtils; public class Test { @SuppressWarnings("unchecked") public static void main(String[] args) throws Exception { CustomerHttpClient httpClient = new CustomerHttpClient(); String result = ""; String get = ""; String jsSource = Tools.readFile("html.html","utf-8"); String userNmae = Tools.ExcuteJs(jsSource,"encryptUname"," @qq.com"); // 获取第一次信息 get = "http://login.sina.com.cn/sso/prelogin.php?entry=weibo&callback=sinaSSOController.prelo" + "ginCallBack&su=" + userNmae + "&rsakt=mod&checkpin=1&client=ssologin.js(v1.4.18)&_=1405321676456"; result = httpClient.get(get, null, null); String rsakv = Tools.QuMiddle(result, "rsakv\":\"", "\",\"showp"); String middle = Tools .QuMiddle(result, "rsakv\":\"", "\",\"showpin"); String pubKey = Tools.QuMiddle(result, "ubkey\":\"", "\",\"rsa"); String serverTime = Tools.QuMiddle(result, "ertime\":", ",\"pci"); String nonce = Tools.QuMiddle(result, "once\":\"", "\",\"pu"); String pcid = Tools.QuMiddle(result, "\"pcid\":\"", "\",\""); String showpin = Tools.QuMiddle(result, "\"showpin\":", ","); String password = Tools.ExcuteJs(jsSource,"encryptPassword",pubKey, serverTime, "a15 142",nonce); // List formParams = new ArrayList(); // formParams.add(new BasicNameValuePair("entry", "weibo")); // formParams.add(new BasicNameValuePair("gateway", "1")); // formParams.add(new BasicNameValuePair("from", "")); // formParams.add(new BasicNameValuePair("savestate", "7")); // formParams.add(new BasicNameValuePair("useticket", "0")); // formParams.add(new BasicNameValuePair("service", "miniblog")); // formParams.add(new BasicNameValuePair("pagerefer", "")); // formParams.add(new BasicNameValuePair("vsnf", "1")); // formParams.add(new BasicNameValuePair("su", userNmae)); // formParams.add(new BasicNameValuePair("nonce", nonce)); // formParams.add(new BasicNameValuePair("pwencode", "rsa2")); // formParams.add(new BasicNameValuePair("servertime", serverTime)); // formParams.add(new BasicNameValuePair("rsakv", rsakv)); // formParams.add(new BasicNameValuePair("sp", password)); // formParams.add(new BasicNameValuePair("sr", "1366*768")); // formParams.add(new BasicNameValuePair("encoding", "UTF-8")); // formParams.add(new BasicNameValuePair("cdult", "UTF-8")); // formParams.add(new BasicNameValuePair("domain", "sina.com.cn")); // formParams.add(new BasicNameValuePair("prelt", "249")); // formParams.add(new BasicNameValuePair("returntype", "TEXT")); // UrlEncodedFormEntity entity = new UrlEncodedFormEntity(formParams, "UTF-8"); String post = "entry=weibo&gateway=1&from=&savestate=7&useticket=0&pagerefer=&" + "vsnf=1&su=" + "ODE0NDc4MDYlNDBxcS5jb20%3d" + "&service=miniblog&" + "servertime=" + serverTime + "&nonce=" + nonce + "&pwencode=rsa2&rsakv=" + rsakv + "&sp=" + password + "&sr=1366*768&" + "encoding=UTF-8&cdult=3&domain=sina.com.cn&prelt=249&returntype=TEXT"; StringEntity reqEntity = new StringEntity(post); result = httpClient.post("http://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.18)", reqEntity); String savestate = Tools.QuMiddle(result, "osavestate=", "\",\"http"); String ticket = Tools.QuMiddle(result, "ticket=", "&sso"); List<String> list = new ArrayList<String>(); list.add("Referer,http://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.18)"); get = "http://crosdom.weicaifu.com/sso/crosdom?action=login&savestate=" + savestate + "&callback=sinaSSOController.doCrossDomainCallBack&" + "scriptId=ssoscript0&client=ssologin.js(v1.4.18)&_=1405340450375" ; result = httpClient.get(get, list, null); get = "http://passport.weibo.com/wbsso/login?ssosavestate=" + savestate + "&url=http%3A%2F%2Fweibo.com%2Fajaxlogin.php%3Fframelogin%3D1" + "%26callback%3Dparent.sinaSSOController.feedBackUrlCallBack%26sudaref%3Dweibo.com&ticket=" + ticket + "&retcode=0" ; list = new ArrayList<String>(); list.add("Referer,http://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.18)"); result = httpClient.get(get, null, null); get = "http://passport.weibo.com/wbsso/login?ssosavestate=" + savestate + "&url=http%3A%2F%2Fweibo.com%2Fajaxlogin.php%3Fframelogin%3D1" + "%26callback%3Dparent.sinaSSOController.feedBackUrlCallBack%26sudaref%3Dweibo.com&ticket=" + ticket + "&retcode=0" ; // result = httpClient.get("http://weibo.com", list, null); result = httpClient.get("http://weibo.com", null, null); int a = 1; // StringEntity reqEntity = new StringEntity("entry=weibo&gateway=1&from=&savestate=7&useticket=0&pagerefer=&"); // reqEntity.setContentType("application/x-www-form-urlencoded"); // System.out.println(reqEntity.getContentEncoding()); // System.out.println(reqEntity.getContentLength()); // System.out.println(reqEntity.getContentType().toString()); // 默认是自动管理cookie的 // CustomerHttpClient httpClient = new CustomerHttpClient(); // BasicClientCookie c = new BasicClientCookie("sex","value"); // c.setDomain("localhost"); // c.setPath("/"); // c.setExpiryDate(new Date(new Date().getTime()+1000000)); // List<String> heads = new ArrayList<String>(); ////heads.add("Cookie,sex=lisi; Domain=localhost; Expires=Fri 16-Jan-2043 21:48:29 GMT; Path=/"); //c.setComment("comment"); //String result = httpClient.get("http://localhost:8080/login/Login", heads); // // //String result = httpClient.get("http://localhost:8080/web/MM", heads); // result = httpClient.get("http://localhost:8080/web/MM", heads); // //result = httpClient.get("http://localhost:8080/web/MM", null,c); // System.out.println(result); } }