- 浏览: 1073978 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (453)
- Struts2 (30)
- Spring (14)
- iBATIS (6)
- Hibernate (13)
- JVM (5)
- JSON (10)
- Ajax (5)
- Flex (1)
- JavaScript (25)
- PowerDesigner (4)
- 项目管理 (7)
- 数据库 (29)
- 生活 (18)
- 软件应用 (21)
- 无线技术 (2)
- Linux (39)
- TOP开发学习 (2)
- JAVA工具小TIPS (2)
- Java通用 (52)
- XML (3)
- 软件测试 (29)
- Maven (10)
- Jquery (1)
- 正则表达式 (3)
- 应用服务器 (15)
- Android (5)
- linux 和windowx 下 tomcat 设置JVM (8)
- 应用服务器 连接池 (4)
- Linux 后台输出中文乱码 (1)
- Hadoop (28)
- python (2)
- Kafka (7)
- Storm (5)
- Elasticsearch (7)
- fddd (1)
最新评论
-
kafodaote:
Kafka分布式消息系统实战(与JavaScalaHadoop ...
分布式消息系统Kafka初步 -
小灯笼:
LoadRunner性能测试实战课程网盘地址:http://p ...
LoadRunner性能测试应用(八) -
成大大的:
Kafka分布式消息系统实 ...
分布式消息系统Kafka初步 -
hulalayaha2:
Loadrunner性能测试视频教程下载学习:http://p ...
LoadRunner性能测试应用(八) -
993042835:
搞好 谢谢
org.hibernate.exception.ConstraintViolationException: could not delete:
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="woshigoojje@163.com";
//下面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("<a")+"<a href='".length(),responseString.lastIndexOf(">")-1);
//用get方式,模拟请求,最后一个参数为false,表示,我不需要返回值,我只要访问该网址就可以
//这是为了
processGet(client, null, caiPiaoUrl, cookies, true, false);
//下面还等什么?实际登录你的淘宝号,找到相应的链接,用httpwatch检查参数
//模拟提交吧。
}
/**
* get方式请求
*
* @param client httpclient
* @param get getmethond
* @param url 地址
* @param cookies 请求时附加 cookies
* @param needAppendCookies 是否返回后附加 cookies
* @param needResponse 是否需要返回
* @return
* @throws IOException
*/
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 "";
}
/**
* post方式请求
*
* @param client httpclient
* @param post postmethond
* @param url 地址
* @param params post参数
* @param cookies 请求时附加cookies
* @param needAppendCookies 是否在返回后附加cookies
* @param needResponse 是否需要返回内容
* @return
* @throws IOException
*/
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 "";
}
/**
* 截取字符串
* etc. processDetail("<a href='g.cn'</td>","href='","</td","href='".length(),"</td".length()-1),返回g.cn
* @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;
}
}
个人签名
-------------------------------------
发表评论
-
java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream
2013-05-10 16:10 779C:\Program Files (x86)\MyEc ... -
读取word pdf中的文字 用第三方组件 pdfbox 和 poi
2013-03-20 23:51 944读取word pdf中的文字 用第三方组件 pdfbox 和 ... -
非常好使的FileUtil 类
2013-03-09 12:45 970package com.zqk.util; imp ... -
eclipse 3.4.1 导入项目后 Target runtime Apache Tomcat v5.0 is not defi...
2012-05-29 09:27 1777下载最新版本eclipse3.4.1后,导入以前的项目,报 ... -
MyEclipse 6.5 序列号生成器
2011-06-10 09:47 1634import java.awt.event.ActionEve ... -
字节序 整形与字节数组转换
2010-12-15 13:43 2312Big Endian and Little Endian ... -
JPEG文件数据结构以及将位图保存为JPG的代码 转2
2010-12-02 13:31 2803三、实例分析 用系统自带的画图程序画一个32×24的红色方块 ... -
JPEG文件数据结构以及将位图保存为JPG的代码 转1
2010-12-02 13:30 3008JPEG文件数据结构以及将位图保存为JPG的代码一、简 ... -
Nginx+resin调优文档
2010-11-18 17:02 2271http://blog.liuts.com/post/204/ ... -
分析 Tomcat startup.bat 启动脚本
2010-11-03 14:53 3188分析 Tomcat startup.bat 启 ... -
Tomcat配置优化 转
2010-11-03 14:51 10351.精简Tomcat和配置文件1.1 .删除不需要的管理应用和 ... -
URLConnection 读取字节流
2010-10-27 13:15 32292008-11-08 山寨Wget实现又惹事了 h ... -
字节到整形的转换
2010-10-27 12:47 1369public byte[] intToByte(int i) ... -
Gif 文件格式分析
2010-10-27 11:45 1020GIF文档ˉˉˉˉˉˉ 1.概述~~~~~~~~ ... -
JPG文件格式解码图片高度和宽度的分析
2010-10-27 10:34 977213. 简单说一下 JPG 文件的解码 ---------- ... -
CSS制作多种链接样式
2010-10-15 11:54 1085多种链接样式制作方法 ... -
虚拟主机上给一个网卡设置多个IP地址
2010-10-13 17:22 1834配置虚拟主机时有一种方式是在一块网卡上绑定多个IP,操作如下: ... -
linux下一个网卡配置多个IP
2010-10-13 17:21 930文本控制台下面有netconfig,还有ifconfig工具, ... -
[转载]linux中sar的详细使用
2010-10-13 17:06 858在使用UNIX操作系统的过程中,我们常常 ... -
Linux中sar命令
2010-10-13 17:05 960Linux中sar命令 sar这东 ...
相关推荐
用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。 Java日期选择控件完整源代码 14个目标文件 内容索引:JAVA源码,系统相关,日历,...
用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。 Java日期选择控件完整源代码 14个目标文件 内容索引:JAVA源码,系统相关,日历,...
Cleo 是一个灵活的软件库用于处理一些预输入和自动完成的搜索功能,该项目是 LinkedIn 公司的开源项目。 SwingSet 增强现实标记跟踪软件库 AccuTag AccuTag是AR(增强现实)标记跟踪软件库。它利用GPGPU的快速和...
Cleo 是一个灵活的软件库用于处理一些预输入和自动完成的搜索功能,该项目是 LinkedIn 公司的开源项目。 SwingSet 增强现实标记跟踪软件库 AccuTag AccuTag是AR(增强现实)标记跟踪软件库。它利用GPGPU的快速和...
Cleo 是一个灵活的软件库用于处理一些预输入和自动完成的搜索功能,该项目是 LinkedIn 公司的开源项目。 SwingSet 增强现实标记跟踪软件库 AccuTag AccuTag是AR(增强现实)标记跟踪软件库。它利用GPGPU的快速和...
Cleo 是一个灵活的软件库用于处理一些预输入和自动完成的搜索功能,该项目是 LinkedIn 公司的开源项目。 SwingSet 增强现实标记跟踪软件库 AccuTag AccuTag是AR(增强现实)标记跟踪软件库。它利用GPGPU的快速和...
Cleo 是一个灵活的软件库用于处理一些预输入和自动完成的搜索功能,该项目是 LinkedIn 公司的开源项目。 SwingSet 增强现实标记跟踪软件库 AccuTag AccuTag是AR(增强现实)标记跟踪软件库。它利用GPGPU的快速和...
Cleo 是一个灵活的软件库用于处理一些预输入和自动完成的搜索功能,该项目是 LinkedIn 公司的开源项目。 SwingSet 增强现实标记跟踪软件库 AccuTag AccuTag是AR(增强现实)标记跟踪软件库。它利用GPGPU的快速和...
Cleo 是一个灵活的软件库用于处理一些预输入和自动完成的搜索功能,该项目是 LinkedIn 公司的开源项目。 SwingSet 增强现实标记跟踪软件库 AccuTag AccuTag是AR(增强现实)标记跟踪软件库。它利用GPGPU的快速和...
Cleo 是一个灵活的软件库用于处理一些预输入和自动完成的搜索功能,该项目是 LinkedIn 公司的开源项目。 SwingSet 增强现实标记跟踪软件库 AccuTag AccuTag是AR(增强现实)标记跟踪软件库。它利用GPGPU的快速和...
Cleo 是一个灵活的软件库用于处理一些预输入和自动完成的搜索功能,该项目是 LinkedIn 公司的开源项目。 SwingSet 增强现实标记跟踪软件库 AccuTag AccuTag是AR(增强现实)标记跟踪软件库。它利用GPGPU的快速和...
Cleo 是一个灵活的软件库用于处理一些预输入和自动完成的搜索功能,该项目是 LinkedIn 公司的开源项目。 SwingSet 增强现实标记跟踪软件库 AccuTag AccuTag是AR(增强现实)标记跟踪软件库。它利用GPGPU的快速和...
Cleo 是一个灵活的软件库用于处理一些预输入和自动完成的搜索功能,该项目是 LinkedIn 公司的开源项目。 SwingSet 增强现实标记跟踪软件库 AccuTag AccuTag是AR(增强现实)标记跟踪软件库。它利用GPGPU的快速和...
Cleo 是一个灵活的软件库用于处理一些预输入和自动完成的搜索功能,该项目是 LinkedIn 公司的开源项目。 SwingSet 增强现实标记跟踪软件库 AccuTag AccuTag是AR(增强现实)标记跟踪软件库。它利用GPGPU的快速和...
Cleo 是一个灵活的软件库用于处理一些预输入和自动完成的搜索功能,该项目是 LinkedIn 公司的开源项目。 SwingSet 增强现实标记跟踪软件库 AccuTag AccuTag是AR(增强现实)标记跟踪软件库。它利用GPGPU的快速和...