当前位置: 代码迷 >> Web前端 >> httpclient3 自动登陆淘宝, 愉快网
  详细解决方案

httpclient3 自动登陆淘宝, 愉快网

热度:348   发布时间:2012-11-09 10:18:47.0
httpclient3 自动登陆淘宝, 开心网
前提:
需要用到的java包
commons-httpclient-3.1.jar
commons-logging.jar
log4j-1.2.15.jar
commons-codec.jar
登陆淘宝的例子:
package com.spider.cron;


import java.io.IOException;

import org.apache.commons.httpclient.Cookie;
import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;


public class TaoBaoLogin {

		private static final String LOGON_SITE = "http://www.taobao.com";
		private static final int LOGON_PORT = 80;
	
		private static final String TAOBAO_BASE_LOGIN_BEFORE = "http://member1.taobao.com/member/login.jhtml?f=top&redirectURL=http%3A%2F%2Fwww.taobao.com%2F";
		private static final String TAOBAO_BASE_LOGIN = "http://login.taobao.com/member/login.jhtml";

		public static void main(String args[]) throws HttpException, IOException {
			String taobaoUser="woshigoojje@163.com";
			
			String taobaoPwd="3DES_2_000000000000000000000000000000_61F0B8BE021BBBDD020919017B6816F5";
			String taobaoTid="XOR_1_000000000000000000000000000000_63584054400B0F717B750370";
			
			HttpClient client = new HttpClient();
			client.getHostConfiguration().setHost(LOGON_SITE, LOGON_PORT);
			
		
			String _tb_token_Value="";
			Cookie[] cookies = client.getState().getCookies();        
	        String responseString = processGet(client,null,TAOBAO_BASE_LOGIN_BEFORE,cookies,true,true);   

	     
	        responseString=responseString.substring(responseString.indexOf("_tb_token_")+"_tb_token_".length());
	        responseString=responseString.substring(responseString.indexOf("_tb_token_")+"_tb_token_".length());
	        _tb_token_Value=responseString.substring(responseString.indexOf("value=")+"value='".length(),responseString.indexOf(">")-1);
	       
	        PostMethod post = new PostMethod(TAOBAO_BASE_LOGIN);
	        NameValuePair[] params= new NameValuePair[] {        		
	        new NameValuePair("_oooo_", ""),
			new NameValuePair("_tb_token_", _tb_token_Value),
			new NameValuePair("abtest", ""),
			new NameValuePair("action", "Authenticator"),
			new NameValuePair("actionForStable", "enable_post_user_action"),
			new NameValuePair("CtrlVersion", "1,0,0,7"),
			new NameValuePair("done", ""),
			new NameValuePair("event_submit_do_login", "anything"),
			new NameValuePair("from", ""),
			new NameValuePair("loginType", "4"),
			new NameValuePair("mcheck", ""),
			new NameValuePair("mi_uid", ""),
			new NameValuePair("pstrong", ""),
			new NameValuePair("support", "000001"),
			new NameValuePair("tid", taobaoTid),
			new NameValuePair("TPL_password", taobaoPwd),
			new NameValuePair("TPL_redirect_url", ""),
			new NameValuePair("TPL_redirect_url", ""),
			new NameValuePair("TPL_redirect_url", ""),
			new NameValuePair("TPL_redirect_url", ""),
			new NameValuePair("TPL_redirect_url", ""),
			new NameValuePair("TPL_redirect_url", ""),
			new NameValuePair("TPL_username", taobaoUser),
			new NameValuePair("yparam", "")
	        };
	        processPost(client, post, TAOBAO_BASE_LOGIN, params, cookies, true, false);
			Header header=post.getResponseHeader("Location");
			String redirectUrl=header.getValue();
			
			
			responseString = processGet(client, null, redirectUrl, cookies, true, true);
			
			
			responseString=responseString.substring(0,responseString.indexOf("我的彩票"));
			System.out.println("main(String[]) - " + responseString); 

			String caiPiaoUrl=responseString.substring(responseString.lastIndexOf("<a")+"<a href='".length(),responseString.lastIndexOf(">")-1);
	
			processGet(client, null, caiPiaoUrl, cookies, true, false);

			
			
		}
		
		

		public static String processGet(HttpClient client,GetMethod get,String url,Cookie[] cookies,boolean needAppendCookies,boolean needResponse) throws IOException{
			if(client==null || url==null || url=="") return "";
			if(get==null)
				get=new GetMethod();
			get = new  GetMethod(url);  
			if(cookies!=null)
				get.setRequestHeader("Cookie" , cookies.toString());
	        client.executeMethod(get);
	        if(needAppendCookies){
		        cookies = client.getState().getCookies();   
		        client.getState().addCookies(cookies);   
	        }
	        if(needResponse)
	        	return get.getResponseBodyAsString();   
			get.releaseConnection();
			return "";
		}
		

		public static String processPost(HttpClient client,PostMethod post,String url,NameValuePair[] params,Cookie[] cookies,boolean needAppendCookies,boolean needResponse) throws IOException{
			if(client==null || url==null || url=="") return "";
			if(post==null)
				post = new PostMethod(url);
			
			if(params!=null && params.length>0)
				post.setRequestBody(params);
			if(cookies!=null)
				post.setRequestHeader("Cookie" , cookies.toString());
			client.executeMethod(post);
			if(needAppendCookies){
		        cookies = client.getState().getCookies();   
		        client.getState().addCookies(cookies);   
	        }
			if(needResponse)
	        	return post.getResponseBodyAsString();
			post.releaseConnection();
			return "";
		}
		

		public static String processDetail(String tempStr,String startFlag,String endFlag,int starts,int ends){
			if(tempStr==null || "".equals(tempStr)) return "";
			int start=tempStr.indexOf(startFlag);
			int end=tempStr.indexOf(endFlag);
			if(start==-1 || end==-1 || (end-ends)<(start+starts)) return "";
			try{
			tempStr=tempStr.substring(start+starts,end-ends);
			}catch(Exception e){
				System.out.println("processDetail(String, String, String, int, int) " + e.toString()); 
				return "";
			}
			return tempStr;
		}

}



登陆开心网的例子:
package com.spider.cron;

import org.apache.commons.httpclient.Cookie;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;

public class LoginKaixin {
    private static final String LOGON_SITE = "http://www.kaixin001.com";

    private static final int LOGON_PORT = 80;

    public static void main(String[] args) throws Exception {
        HttpClient client = new HttpClient();
        client.getHostConfiguration().setHost(LOGON_SITE, LOGON_PORT);

        // 登录页面
        PostMethod post = new PostMethod(
                "http://www.kaixin001.com/login/login.php");
        NameValuePair ie = new NameValuePair("User-Agent",
                "Mozilla/4.0 (compatible; MSIE 6.0; Windows 2000)");
        NameValuePair url = new NameValuePair("url", "/home/");
        NameValuePair username = new NameValuePair("email", "xxx@163.com");
        NameValuePair password = new NameValuePair("password", "xxxxxx");
        post.setRequestBody(new NameValuePair[] { ie, url, username, password });
        client.executeMethod(post);
        System.out
                .println("******************************登录******************************");
        Cookie[] cookies = client.getState().getCookies();
        client.getState().addCookies(cookies);
        post.releaseConnection();
        System.out
                .println("******************************页面转向******************************");
        String newUrl = "http://www.kaixin001.com/home/";
        System.out.println("==========Cookies============");
        int i = 0;
        for (Cookie c : cookies) {
            System.out.println(++i + ":   " + c);
        }
        client.getState().addCookies(cookies);
        post.releaseConnection();
        GetMethod get = new GetMethod(newUrl);
        get.setRequestHeader("Cookie", cookies.toString());
        client.executeMethod(get);
        String responseString = get.getResponseBodyAsString();
        // 登录后首页的内容
        System.out.println(responseString);
        get.releaseConnection();
        System.out
                .println("******************************组件功能******************************");
        // "http://www.kaixin001.com/!slave/index.php", "朋友买卖"
        // "http://www.kaixin001.com/!parking/index.php", "争车位"
        // "http://www.kaixin001.com/!house/index.php?_lgmode=pri", "买房子"
        // http://www.kaixin001.com/!house/index.php?_lgmode=pri&t=49
        // "http://www.kaixin001.com/!house/garden/index.php","花园"
        // (1)进入朋友买卖****************
        System.out
                .println("******************************(1)进入朋友买卖******************************");
        String slave = "http://www.kaixin001.com/!slave/index.php";
        get = new GetMethod(slave);
        get.setRequestHeader("Cookie", cookies.toString());
        client.executeMethod(get);
        responseString = get.getResponseBodyAsString();
        System.out.println(responseString);
        get.releaseConnection();
        // (2)进入争车位****************
        System.out
                .println("******************************(2)进入争车位******************************");
        String parking = "http://www.kaixin001.com/!parking/index.php";
        get = new GetMethod(parking);
        get.setRequestHeader("Cookie", cookies.toString());
        client.executeMethod(get);
        responseString = get.getResponseBodyAsString();
        System.out.println(responseString);
        get.releaseConnection();
        // (3)进入买房子****************
        System.out
                .println("******************************(3)进入买房子*******************************");
        String house = "http://www.kaixin001.com/!house/index.php?_lgmode=pri&t=49";
        get = new GetMethod(house);
        get.setRequestHeader("Cookie", cookies.toString());
        client.executeMethod(get);
        responseString = get.getResponseBodyAsString();
        System.out.println(responseString);
        get.releaseConnection();
        // (4)进入花园****************
        System.out
                .println("******************************(4)进入花园*******************************");
        String garden = "http://www.kaixin001.com/!house/garden/index.php";
        get = new GetMethod(garden);
        get.setRequestHeader("Cookie", cookies.toString());
        client.executeMethod(get);
        responseString = get.getResponseBodyAsString();
        System.out.println(responseString);
        get.releaseConnection();

    }

}