Mega Code Archive

 
Categories / Android / Security
 

Web authentication Confirmation

//package com.maxiujun.android.doudroid.test.utils; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.apache.http.HttpResponse; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.client.params.ClientPNames; import org.apache.http.client.params.CookiePolicy; import org.apache.http.conn.ClientConnectionManager; import org.apache.http.conn.scheme.PlainSocketFactory; import org.apache.http.conn.scheme.Scheme; import org.apache.http.conn.scheme.SchemeRegistry; import org.apache.http.conn.ssl.SSLSocketFactory; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager; /**  * Type comments here.  *   * @author Xiujun Ma <maxj@adv.emcom.jp>  * @version Jul 31, 2010  */ class OauthWebConfirm {   private static HttpClient httpClient = new CHttpClient();   public static String email = "";   public static String pwd = "";   public static void confirm(String url) {     httpClient.getParams().setParameter(ClientPNames.COOKIE_POLICY, CookiePolicy.BROWSER_COMPATIBILITY);     try {       // login       HttpPost loginpost = new HttpPost("http://www.douban.com/login");       String loginentity = "redir=&form_email=" + URLEncoder.encode(email, "UTF-8") + "&form_password=" + URLEncoder.encode(pwd, "UTF-8") +"&remember=on&user_login=%E8%BF%9B%E5%85%A5";       StringEntity reqEntity = new StringEntity(loginentity);       reqEntity.setContentType("application/x-www-form-urlencoded");       loginpost.setEntity(reqEntity);       loginpost.setHeader("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8");       httpClient.execute(loginpost);              // agree page       HttpGet get = new HttpGet(url);       get.setHeader("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8");       HttpResponse res2 = httpClient.execute(get);       String restring2 = convertStreamToString(res2.getEntity().getContent());       // agree action       HttpPost agreepost = new HttpPost(url);              StringBuilder stringBuilder = new StringBuilder();       stringBuilder.append("oauth_token=").append(getFromValue(restring2, "oauth_token"));       stringBuilder.append("&oauth_callback=").append(getFromValue(restring2, "oauth_callback"));       stringBuilder.append("&ssid=").append(getFromValue(restring2, "ssid"));       stringBuilder.append("&confirm=").append(getFromValue(restring2, "confirm"));       StringEntity agreeEntity = new StringEntity(stringBuilder.toString());       agreeEntity.setContentType("application/x-www-form-urlencoded");       agreepost.setEntity(agreeEntity);       agreepost.setHeader("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8");       httpClient.execute(agreepost);       // HttpResponse res3 = httpClient.execute(agreepost);              // String restring3 = convertStreamToString(res3.getEntity().getContent());            } catch (ClientProtocolException e) {       e.printStackTrace();     } catch (IOException e) {       e.printStackTrace();     }   }   public static String convertStreamToString(InputStream is) throws IOException {     if (is != null) {       StringBuilder sb = new StringBuilder();       String line;       try {         BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));         while ((line = reader.readLine()) != null) {           sb.append(line).append("\n");         }       } finally {         is.close();       }       return sb.toString();     } else {       return "";     }   }      public static String getFromValue(String html, String name) {          Pattern p = Pattern.compile("name=\\\"" + name + "\\\" value=\\\".+\\\"");     Matcher m = p.matcher(html);     String ex = "";     if(m.find()) ex = m.group(0);     else return "";     String value = "";         try {           value = URLEncoder.encode(ex.split("value=\"")[1].replace("\"", ""), "UTF-8");         } catch (UnsupportedEncodingException e) {           e.printStackTrace();         }     return value;   } } class CHttpClient extends DefaultHttpClient {   @Override   protected ClientConnectionManager createClientConnectionManager() {     SchemeRegistry registry = new SchemeRegistry();     registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));     registry.register(new Scheme("https", SSLSocketFactory.getSocketFactory(), 443));          return new ThreadSafeClientConnManager(this.getParams(), registry);   } }