`
wangking717
  • 浏览: 263247 次
  • 性别: Icon_minigender_2
  • 来自: 成都
社区版块
存档分类
最新评论

用HttpClient模拟登陆OpenID.org.cn

阅读更多

在模拟登陆之前做的准备工作就是利用抓包工具分析数据,推荐用wireshark。本次抓openid.org.cn,纯属演示,没实际意义,切勿搞破坏或者偷数据。

 

抓包下来的数据如下:


看来OpenID没做什么安全机制方面的考虑,就单纯的讲文本域username,password post到www.openid.org.cn/login上。

 

OK。万事俱备只欠东风,开始模拟登陆吧。

 

 

package test;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;

public class SimulateLogin {

	    private HttpClient httpClient;  
	  
	    public SimulateLogin(String loginURL,String userName, String password) {  
	        this.httpClient = new DefaultHttpClient();  
	        // 构造一个POST请求
	        HttpPost httpPost = new HttpPost(loginURL);  
	        //httpPost.setHeader("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.472.63 Safari/534.3");    //如果对方系统没做特殊限制,可不用
	        // 将要POST的数据封包  
	        List<NameValuePair> params = new ArrayList<NameValuePair>();  
	        params.add(new BasicNameValuePair("username", userName));  
	        params.add(new BasicNameValuePair("password", password));  
	  
	        // 封包添加到Post请求  
	        try {  
	            httpPost.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));  
	        } catch (UnsupportedEncodingException e1) {  
	            e1.printStackTrace();  
	        }
	        HttpResponse response = postMethod(httpPost); 
	    }  
	  
	    /**
	     * 嗅探指定的GET页面
	     * @param url
	     * @return String txt
	     */
	    public String notifyGetPage(String url) {  
	        HttpGet get = new HttpGet(url);  
	        ResponseHandler<String> responseHandler = new BasicResponseHandler();  
	        String txt = null;  
	        try {  
	            txt = httpClient.execute(get, responseHandler);  
	        } catch (ClientProtocolException e) {  
	            e.printStackTrace();  
	        } catch (IOException e) {  
	            e.printStackTrace();  
	        } finally {  
	            get.abort();  
	        }  
	        return txt;  
	    }  
	    
	    /**
	     * 嗅探指定的POST页面,,因为post方法要封装参数,因此在函数外部封装好传参  
	     * @param post
	     * @return String txt
	     */ 
	    public String notifyPostPage(HttpPost post) {  
	        ResponseHandler<String> responseHandler = new BasicResponseHandler();  
	        String txt = null;
	        try {  
	        	txt = httpClient.execute(post,responseHandler);  
	        } catch (ClientProtocolException e) {  
	            e.printStackTrace();  
	        } catch (IOException e) {  
	            e.printStackTrace();  
	        } finally {  
	            post.abort();  
	        }  
	        return txt;  
	    }
	  
	    // 用post方法向服务器请求 并获得响应,因为post方法要封装参数,因此在函数外部封装好传参  
	    public HttpResponse postMethod(HttpPost post) {  
	        HttpResponse resp = null;  
	        try {  
	            resp = httpClient.execute(post);  
	        } catch (ClientProtocolException e) {  
	            e.printStackTrace();  
	        } catch (IOException e) {  
	            e.printStackTrace();  
	        } finally {  
	            post.abort();  
	        }  
	        return resp;  
	    }
	  
	    // 用get方法向服务器请求 并获得响应  
	    public HttpResponse getMethod(String url) {  
	        HttpGet get = new HttpGet(url);  
	        HttpResponse resp = null;  
	        try {  
	            resp = httpClient.execute(get);  
	        } catch (ClientProtocolException e) {  
	            e.printStackTrace();  
	        } catch (IOException e) {  
	            e.printStackTrace();  
	        } finally {  
	            get.abort();  
	        }  
	        return resp;  
	    }  
	  
	    public static void main(String[] args) {  
	    	SimulateLogin simulateLogin = new SimulateLogin("http://www.openid.org.cn/login","【用户名】", "【密码】");  
	        System.out.println(simulateLogin.notifyGetPage("http://www.openid.org.cn/sites"));  //获得我访问过的站点信息
	    }  
	
}
 

 

很简单吧..这是最简单的登陆,如果站点用到验证码,或者用JS加密字符串,SSL的话,肯定会让你折腾大半天的。。

  • 大小: 52.7 KB
分享到:
评论

相关推荐

    可用org.apache.commons.httpclient-3.1.0.jar.zip

    import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.HttpException; import org.apache.commons.httpclient.HttpStatus; import org.apache.commons.httpclient.methods....

    commons-httpclient-3.1jar包下载

    ...HttpClient org.apache.commons.httpclient....

    org.apache.commons.httpclient-3.1.jar

    《Apache Commons HttpClient 3.1:HTTP客户端编程的基石》 ...然而,需要注意的是,HttpClient 3.1已不再维护,最新的稳定版本为HttpClient 4.x,对于新项目建议使用更现代的版本以获取更好的性能和兼容性。

    httpclient 4.X版本下载有的带源码包

    2013-11-21 15:31 292,890 httpclient-4.0.2.jar 2017-12-20 12:08 351,132 httpclient-4.1.1.jar 2012-08-03 01:45 451,595 httpclient-4.1.2-sources.jar 2012-08-03 01:44 352,254 httpclient-4.1.2.jar 2012-08-...

    commons-httpclient-3.0.jar JAVA中使用HttpClient可以用到

    《JAVA中使用HttpClient:commons-httpclient-3.0.jar详解》 在JAVA开发中,进行HTTP请求时,Apache的HttpClient库是一个不可或缺的工具。本文将深入解析`commons-httpclient-3.0.jar`,它是HttpClient的一个重要...

    org.apache.commons.httpclient相关架包

    标题中的"org.apache.commons.httpclient相关架包"指的是这个库的一系列组件,主要包含在`httpclient.jar`文件中。这个JAR文件包含了HttpClient库的所有必需类和资源,可以被导入到Java项目中以实现HTTP通信功能。 ...

    .org.apache.commons.httpclient-3.1.0.jar

    小贝程序员生活\jar\lib\com.springsource.org.apache.commons.httpclient-3.1.0.jar 小贝程序员生活\jar\lib\com.springsource.org.apache.commons.httpclient-3.1.0.jar 小贝程序员生活\jar\lib\...

    org.apache.commons.httpclient 远程下载文件

    此外,Apache HttpClient库已经被弃用,现在推荐使用Java 7及更高版本内置的`java.net.HttpURLConnection`或更现代的库如Apache HttpClient 4.x或OkHttp。不过,对于理解HTTP客户端编程的基本原理,HttpClient仍然是...

    commons-httpclient-3.1.jar

    import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.methods.ByteArrayRequestEntity; import org.apache.commons.httpclient.methods.PostMethod;

    httpclient-4.5.jar

    本文将深入探讨`httpclient-4.5.jar`这个包,以及它所依赖的相关jar包,帮助你更好地理解和使用这个强大的工具。 HTTPClient 4.5是Apache HttpClient项目的最新稳定版本,它提供了全面的HTTP协议支持,包括标准方法...

    httpclient.jar包下载.zip

    将`httpclient.jar`下载并添加到项目类路径中,即可使用HttpClient的功能。 总的来说,HttpClient是Java开发者处理HTTP通信的强大工具,它简化了网络请求的实现,同时提供了丰富的功能和配置选项,满足各种网络应用...

    【ASP.NET编程知识】.NET CORE HttpClient的使用方法.docx

    .NET CORE HttpClient 的使用方法 .NET CORE 中的 HttpClient 是一个非常重要的组件,它提供了一个强大且灵活的方式来发送 HTTP 请求。然而,在使用 HttpClient 时,我们需要注意一些重要的配置和使用方法,以避免...

    HttpClient 3.x to HttpComponents HttpClient 4.x

    例如,在HttpClient 3.x中,代码可能会使用`***mons.httpclient.HttpClient`类和`***mons.httpclient.methods.GetMethod`等,而在4.x版本中,这些都被新的API所替代。程序员需要熟悉`org.apache....

    httpClient组合包.zip

    此外,HttpClient还支持异步操作,可以在多线程环境中高效地处理并发请求。 2. **httpcore-4.4.12.jar**:这是HttpClient的核心库,包含了HTTP协议的基本组件,如连接管理、请求和响应模型、编码器和解码器等。...

    Jsoup+httpclient模拟登陆和抓取页面.pdf

    Jsoup+httpclient模拟登陆和抓取页面.pdf

    org.apache.commons.httpclient相关资源包

    在标题"org.apache.commons.httpclient相关资源包"中,我们可以看出这是关于使用Apache HttpClient进行HTTP通信的知识点。Apache HttpClient库是Apache软件基金会的一个项目,它提供了对HTTP协议的全面支持,包括GET...

    com.springsource

    ... com.springsource.org.apache.commons.httpclient-3.1.0.jar, com.springsource.org.apache.commons.io-1.4.0.jar,com.springsource.org.apache.commons.logging-1.1.1.jar, ...

    HttpClient依赖jar包.zip

    在实际应用中,为了使用HttpClient,你需要将zip文件中的jar包解压后添加到项目的类路径中。同时,根据项目需求,可能还需要添加其他依赖,例如处理JSON或XML数据的库。在编写代码时,可以参考Apache HttpClient的...

    httpclient-4.5.2.jar.zip

    本文将深入探讨HttpClient 4.5.2的核心特性、使用方法以及实际应用中的关键点。 1. HttpClient 4.5.2概述: HttpClient 4.x系列是Apache基金会开发的一个开源项目,旨在提供一个高效的、高度可定制的HTTP客户端API...

    httpclient5-5.0.3.jar

    这是我一个抠图程序发送请求时专用的jar,maven仓库不好下载,我就上传到csdn,以便下次可以继续使用

Global site tag (gtag.js) - Google Analytics