`
eimhee
  • 浏览: 2159785 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

httpclient3 自动登陆淘宝, 开心网

    博客分类:
  • JAVA
阅读更多


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

    }

}

 

12
2
分享到:
评论
12 楼 dingxanghua 2013-07-12  
淘宝登录还是用c#的webbroser控件吧,就6行左右代码,httpclient的这个玩不起来
11 楼 dingxanghua 2013-07-12  
对我的帮助很大,对httpclient认识更深刻了。
10 楼 zhutianxiang 2013-04-13  
你这段登录淘宝的目前已经无效了。是解析登录页面,获取"_tb_token_"时出错了,登录页面现在搜索不到这个字符串了。能修改一下再提供吗?可以加我扣,我有后续问题可能需要你帮助,非常感谢。16530202
9 楼 ctfzh 2010-11-18  
不错,学习了
8 楼 long502147 2010-11-15  
加个验证码!这个就不灵了~
7 楼 zrf8579 2010-11-14  
我测试了一下,如果登录时勾选“使用安全控件”,password处就是使用3DES方式,如果不勾选,直接会以明文方式发送TPL_password
使用安全控件的loginType为4,不使用的话loginType为3
6 楼 eimhee 2010-11-14  
zrf8579 写道
taobaoPwd和taobaoTid两个值怎么获得的?可以生成么?

要抓包工具才能获取到
5 楼 zrf8579 2010-11-13  
taobaoPwd和taobaoTid两个值怎么获得的?可以生成么?
4 楼 ustcfrank 2010-11-11  
yangguo 写道
有什么用呢?

秒杀
3 楼 yuhe 2010-11-10  
my god
xie xie lou zhu  这样的话都不能发。
2 楼 eimhee 2010-11-10  
yangguo 写道
有什么用呢?

写外挂, 自动发帖, 自动投票的第一步就是要先登陆
1 楼 yangguo 2010-11-10  
有什么用呢?

相关推荐

    用httpclient写的登录开心网

    标题中的“用httpclient写的登录开心网”表明我们将探讨如何使用Apache HttpClient库来实现对开心网的模拟登录。HttpClient是一个Java库,它提供了强大的HTTP客户端功能,包括发起HTTP请求、处理响应以及管理会话等...

    JAVA爬虫实现自动登录淘宝

    JAVA爬虫可以用来自动登录淘宝网,实现自动登录淘宝网的功能。 在本例中,我们使用了Selenium工具来实现自动登录淘宝网。Selenium是一个用于Web应用程序自动化的工具,可以模拟用户的行为来自动获取网络资源。在本...

    httpclient自动注册网站

    在IT行业中,HttpClient是一个非常重要的工具,特别是在网络编程和网页自动化操作中。本文将深入探讨如何使用HttpClient库来实现一个自动注册网站的功能。这个“httpclient自动注册网站”的项目涉及了HTTP协议的理解...

    java httpclient 模拟登录

    在"java httpclient 模拟登录"这个场景下,我们通常会用到HttpClient来模拟用户登录网站的过程,获取登录后的session信息,以便后续能够访问登录后才能看到的页面内容。以下将详细介绍如何使用Java HttpClient进行...

    java模拟淘宝登录源码

    Java模拟淘宝登录源码是一种常见的网络编程技术,主要用于自动化测试、数据抓取或者模拟用户行为。在这个场景中,我们使用的工具是HTTPClient库,这是一个强大的Java HTTP客户端应用编程接口,可以方便地处理HTTP...

    httpclient如何保持session会话模拟登录后的操作

    由于CookieStore已经被设置在上下文中,HttpClient会自动附带之前登录时获取的Cookie,从而保持会话: ```java HttpGet subsequentRequest = new HttpGet("http://example.com/protected/page"); HttpResponse ...

    HttpClient模拟登录实例

    在本实例中,我们将探讨如何使用HttpClient库来模拟登录网站,获取用户信息,以及处理带有验证码的登录场景。 首先,我们需要理解HttpClient的基本使用。HttpClient的核心类包括HttpClient本身,HttpGet、HttpPost...

    HttpClient 3.x to HttpComponents HttpClient 4.x

    随着技术的发展,从早期的HttpClient 3.x版本迁移到更新的HttpComponents HttpClient 4.x版本是一个常见的需求。这不仅仅是一个简单的升级过程,而是涉及到对API的变化、编程模型的更新以及对网络编程的更深层次理解...

    httpclient官网教程中文版

    ### Httpclient官网教程中文版知识点总结 #### 一、引言 HTTP协议作为互联网的核心通信标准之一,在现代网络服务及物联网设备中扮演着至关重要的角色。随着技术的发展,越来越多的应用和服务依赖于HTTP协议来实现...

    HttpClient登录

    本示例将详细介绍如何使用HttpClient实现网易相册的登录。 首先,我们需要了解HttpClient的基本使用。HttpClient主要包括以下几个核心组件: 1. `CloseableHttpClient`:这是HttpClient的主要接口,负责创建和管理...

    HttpClient4模拟登录回贴

    这篇博客“HttpClient4模拟登录回贴”显然探讨了如何利用HttpClient4库进行网络模拟登录以及在特定网站上发布帖子。HttpClient4适用于各种场景,如自动化测试、数据抓取等,它允许开发者构建复杂的HTTP交互逻辑。 ...

    httpclient测试登录并提交表单功能

    ### httpclient 测试登录并提交表单功能 #### 概述 本文将详细介绍如何使用Apache HttpClient库进行模拟登录以及提交表单数据的操作。通过一个具体的示例程序来演示这一过程,帮助读者理解整个流程。 #### 使用...

    HttpClient代理访问网络

    HttpClient代理访问网络

    httpclient4.3登陆人人

    在描述中提到,“最新版httpclient自动登录人人代码”意味着这个压缩包包含了一个使用HttpClient实现的人人网登录程序。这个程序可能包含了设置用户名和密码,发送POST请求到人人网登录接口,以及解析和验证登录结果...

    原创: httpclient 4.0 使用 - 访问开心网的各种组件 例子

    《HttpClient 4.0 使用详解:访问开心网组件实例》 HttpClient 是 Apache 开源基金会提供的一个 HTTP 客户端库,被广泛应用于 Java 开发中,用于执行 HTTP 请求。HttpClient 4.0 版本引入了许多改进和新特性,使得...

    httpclient模拟登录实例

    本篇文章将详细讲解如何使用HttpClient进行模拟登录操作,结合源码分析,帮助开发者深入理解其工作原理。 HttpClient库由Apache基金会开发,提供了全面的HTTP协议支持,包括标准与扩展的HTTP方法、连接管理、重试...

    HttpClient 登录163邮箱

    当收到包含Set-Cookie头的响应时,HttpClient会自动保存cookie,并在后续请求中发送它们。 7. **源码分析** 博文链接提供的源码可能展示了如何利用HttpClient库构造请求,发送登录数据,处理响应,以及如何解析...

    (最新)HttpClient4模拟登录腾讯微博

    这篇最新的文章“HttpClient4模拟登录腾讯微博”探讨了如何利用HttpClient4实现对腾讯微博的模拟登录,这在自动化测试、数据抓取等场景中非常实用。 HttpClient4库提供了丰富的API,可以定制化地构造HTTP请求,包括...

Global site tag (gtag.js) - Google Analytics