前提:
需要用到的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();
}
}