public void initCookie() { // try { // System.setProperty("webdriver.chrome.driver", "./chromedriver.exe"); // driver = new ChromeDriver(); // driver.get("http://weibo.com/"); // WebElement e = driver.findElement(By.name("username")); // e.sendKeys(account.getUsername()); // e = driver.findElement(By.name("password")); // e.sendKeys(account.getPassword()); // e = driver.findElement(By // .xpath("//span[@node-type='submitStates']")); // e.click(); // Set<Cookie> cookies = driver.manage().getCookies(); // // httpClient.startSession(new URL("http://weibo.com")); // HttpState state = new HttpState(); // String ck = ""; // for (Cookie c : cookies) { // ck += c.getName() + "=" + c.getValue() + "; "; // } // account.setCookie(ck); // driver.close(); // } catch (Exception e) { // e.printStackTrace(); // } try { HttpClient httpClient = new HttpClient(); httpClient.setTimeout(30000); HostConfiguration conf = new HostConfiguration(); conf.setHost(new URI("http://www.weibo.com")); httpClient.setHostConfiguration(conf); httpClient.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF-8"); httpClient.getParams().setBooleanParameter(HttpMethodParams.SINGLE_COOKIE_HEADER, true); httpClient.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY); GetMethod method = new GetMethod( "http://login.sina.com.cn/sso/prelogin.php?entry=weibo&callback=sinaSSOController.preloginCallBack&su=&rsakt=mod&client=ssologin.js(v1.4.11)&_=1387711657507"); httpClient.executeMethod(method); String s = method.getResponseBodyAsString(); int idx; idx = s.indexOf("servertime\":") + "servertime\":".length(); String servertime = s.substring(idx, s.indexOf(",", idx)); idx = s.indexOf("nonce\":\"") + "nonce\":\"".length(); String nonce = s.substring(idx, s.indexOf("\"", idx)); idx = s.indexOf("pubkey\":\"") + "pubkey\":\"".length(); String pubkey = s.substring(idx, s.indexOf("\"", idx)); idx = s.indexOf("rsakv\":\"") + "rsakv\":\"".length(); String rsakv = s.substring(idx, s.indexOf("\"", idx)); PostMethod post = new PostMethod("http://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.11)"); final WebClient webClient = new WebClient(); HtmlPage page = webClient.getPage("http://www.baidu.com/"); InputStream is = Testweibo.class.getClassLoader().getResourceAsStream("weibo.js"); String script = IOUtils.toString(is); is.close(); ScriptResult sr = page.executeJavaScript(script); script = "sinaSSOController.rsaPubkey = '" + pubkey + "';sinaSSOController.servertime = '" + servertime + "';sinaSSOController.nonce = '" + nonce + "';sinaSSOController.rsakv = '" + rsakv + "';sinaSSOController.from = 'weibo';sinaSSOController.useTicket = 1;"; sr = page.executeJavaScript(script); script = "sinaSSOController.login('" + account.getUsername() + "','" + account.getPassword() + "',7);"; sr = page.executeJavaScript(script); NativeObject no = (NativeObject) sr.getJavaScriptResult(); for (Object o : no.getAllIds()) { // System.out.println(o + "=>" + no.get(o)); post.setParameter(o + "", no.get(o) + ""); } webClient.closeAllWindows(); post.setParameter("gateway", "1"); post.setParameter("savestate", "7"); post.setParameter("useticket", "1"); post.setParameter( "pagerefer", "http://login.sina.com.cn/sso/logout.php?entry=miniblog&r=http%3A%2F%2Fweibo.com%2Flogout.php%3Fbackurl%3D%252F"); post.setParameter("vsnf", "1"); post.setParameter("encoding", "UTF-8"); post.setParameter("prelt", "140"); post.setParameter( "url", "http://www.weibo.com/ajaxlogin.php?framelogin=1&callback=parent.sinaSSOController.feedBackUrlCallBack"); post.setParameter("returntype", "META"); httpClient.executeMethod(post); s = new String(post.getResponseBody(), "UTF-8"); idx = s.indexOf("location.replace('") + "location.replace('".length(); String url = s.substring(idx, s.indexOf("'", idx)); // System.out.println(url); logger.debug(url); method = new GetMethod(url); httpClient.executeMethod(method); ; // System.out.println(method.getResponseBodyAsString()); logger.debug(method.getResponseBodyAsString()); // method = new GetMethod("http://weibo.com/"); // httpClient.executeMethod(method); // System.out.println(method.getURI()); // System.out.println(new String(method.getResponseBody(),"UTF-8")); // String ck = ""; // for (Cookie c : httpClient.getState().getCookies()) { //// if(c.getDomain().equals(".weibo.com")||c.getDomain().equals("weibo.com")) // ck += c.getName() + "=" + c.getValue() + "; "; // } // account.setCookie(ck); clientMap.put(account.getUsername(), httpClient); } catch (Exception e) { e.printStackTrace(); } }