httpclient自动登录淘宝网,并处理相关网页
文章分类:Java编程
说明文档:
http://www.docin.com/p-44079878.html
svn下载源码(使用svn工具下载):
svn://www.svnhost.cn/gaoqs_open_source/taobao_login/trunk/com.gaoqs.auto.login
(相关的jar包,请看文档,就3个,大家自己找一下,或是下载svn里有)
Java代码
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="[email protected]";
//下面2个值从httpwatch中得到
String taobaoPwd="3DES_2_000000000000000000000000000000_61F0B8BE021BBBDD020919017B6816F5";
String taobaoTid="XOR_1_000000000000000000000000000000_63584054400B0F717B750370";
HttpClient client = new HttpClient();
client.getHostConfiguration().setHost(LOGON_SITE, LOGON_PORT);
//取得_tb_token_值
String _tb_token_Value="";
Cookie[] cookies = client.getState().getCookies();
String responseString = processGet(client,null,TAOBAO_BASE_LOGIN_BEFORE,cookies,true,true);
//取第二个_tb_token_为,现在的登录方式
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);
//post请求,发送登录验证
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();
//处理302内部跳转
responseString = processGet(client, null, redirectUrl, cookies, true, true);
//打开我的票页面
responseString=responseString.substring(0,responseString.indexOf("我的彩票"));
System.out.println("main(String[]) - 我的彩票页面返回内容为:" + responseString);
//解析返回的html字符串,得到,彩票购买的链接
String caiPiaoUrl=responseString.substring(responseString.lastIndexOf("","href='"," * @param tempStr 原字串
* @param startFlag 开始标识
* @param endFlag 结束标识
* @param starts 开始+
* @param ends 结束-
* @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;
}
}
个人签名
-------------------------------------
图盾 淘宝保护 保护图片 图片防盗