public static WeiBoUser login(String uin, String p) {
WeiBoUser u = null;
DefaultHttpClient client = new DefaultHttpClient(
new ThreadSafeClientConnManager());
/*
* client.getParams().setParameter(
* HttpConnectionParams.CONNECTION_TIMEOUT, 5000);
*/
try {
/********************* 获取验证码 ***********************/
HttpGet get = new HttpGet("http://check.ptlogin2.qq.com/check?uin="
+ uin + "&appid=46000101&ptlang=2052&r=" + Math.random());
get.setHeader("Host", "check.ptlogin2.qq.com");
get.setHeader("Referer", "http://t.qq.com/?from=11");
get
.setHeader("User-Agent",
"Mozilla/5.0 (Windows NT 5.1; rv:13.0) Gecko/20100101 Firefox/13.0");
HttpResponse response = client.execute(get);
String entity = EntityUtils.toString(response.getEntity());
String[] checkNum = entity.substring(entity.indexOf("(") + 1,
entity.lastIndexOf(")")).replace("'", "").split(",");
System.out.println(checkNum[0]);
System.out.println(checkNum[1]);
System.out.println(checkNum[2].trim());
System.out.println(checkNum[2].trim().replace("\\x", ""));
String pass = "";
/******************** *加密密码 ***************************/
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("javascript");
String jsFileName = "src/md5.js"; // 指定md5加密文件
// 读取js文件
FileReader reader;
reader = new FileReader(jsFileName);
engine.eval(reader);
if (engine instanceof Invocable) {
Invocable invoke = (Invocable) engine;
// 调用preprocess方法,并传入两个参数密码和验证码
pass = invoke.invokeFunction("QXWEncodePwd",
checkNum[2].trim(), p, checkNum[1].trim()).toString();
System.out.println("c = " + pass);
}
reader.close();
/************************* 登录 ****************************/
get = new HttpGet(
"http://ptlogin2.qq.com/login?ptlang=2052&u="
+ uin
+ "&p="
+ pass
+ "&verifycode="
+ checkNum[1]
+ "&aid=46000101&u1=http%3A%2F%2Ft.qq.com&ptredirect=1&h=1&from_ui=1&dumy=&fp=loginerroralert&action=4-12-14683&g=1&t=1&dummy=");
get.setHeader("Connection", "keep-alive");
get.setHeader("Host", "ptlogin2.qq.com");
get.setHeader("Referer", "http://t.qq.com/?from=11");
get
.setHeader("User-Agent",
"Mozilla/5.0 (Windows NT 5.1; rv:13.0) Gecko/20100101 Firefox/13.0");
response = client.execute(get);
entity = EntityUtils.toString(response.getEntity());
System.out.println(entity);
if (entity.indexOf("登录成功") > -1) {
get = new HttpGet("http://t.qq.com");
response = client.execute(get);
entity = EntityUtils.toString(response.getEntity());
Document doc = Jsoup.parse(entity);
Element es = doc.getElementById("topNav1");
String displayName = "";
if (es != null) {
Elements e = es.getElementsByTag("u");
if (e != null && e.size() > 0)
displayName = e.get(0).text();
}
u = new WeiBoUser();
u.setUserName(uin);
u.setUserPass(p);
u.setDisplayName(displayName);
}
} catch (Exception e) {
e.printStackTrace();
System.out.println(e.getMessage());
return null;
}
return u;
}