- 浏览: 257561 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
wangking717:
4jcms已转为私人项目了,供以后自己用~ 如果有人感兴趣的, ...
企业网站CMS开发萌芽阶段,正在策划中... -
wangking717:
CommonAccount 写道怎么我写了没反应你需要把jqu ...
Jquery文字连接移动效果,鼠标放上去,横向移动特效 -
程序员是怎么炼成的:
你好,需要用到的jar包有哪些,如果用httclient4来开 ...
HttpClient4 Post XML数据 -
CommonAccount:
怎么我写了没反应
Jquery文字连接移动效果,鼠标放上去,横向移动特效 -
wangking717:
shankesgk2 写道这个还在开发吗?是的,在开发阶段~
企业网站CMS开发萌芽阶段,正在策划中...
在模拟登陆之前做的准备工作就是利用抓包工具分析数据,推荐用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的话,肯定会让你折腾大半天的。。
发表评论
-
TOMCAT6服务器常用配置(包括设置端口,默认路径,GZIP等)
2012-05-05 01:41 1292一般TOMCAT上部署项目的时候,都会用到改端口,设置T ... -
IKAnalyzer分词测试DEMO,非Lucene,Solr整合。
2012-04-11 10:08 2595最近项目里要用到分词,将一个文章标题进行分词,存为TAG。然后 ... -
Spring + Quartz定时器配置与小测试
2012-04-10 17:17 3108各种企业应用几乎都会碰到任务调度的需求,就拿论坛来说:每 ... -
JSTL自定义标签,小功能大用途
2011-09-27 18:08 1655近期做项目,使用JSTL对字符串进行编码,发现没有该函 ... -
Log4j的FileAppender相对目录保存策略
2011-03-13 13:28 2322没办法,用别人的虚拟空间,要保存日志,总不能用Log4j的绝对 ... -
补上JSP的验证码程序
2011-02-13 01:47 1043突然发现,写了好些验证码程序,唯独JAVA的通用数字验证码没写 ... -
DOM4J对SOAP的返回信息解析
2011-01-26 17:48 3169用DOM4J的XML解析式拿不到节点的。所以网上利用DOM4J ... -
JAVA数字证书及TOMCAT SSL支持配置说明
2011-01-18 17:50 2761wangking717 写道 项目 ... -
ANT乱指一点通,哈哈
2011-01-11 11:09 817ANT是一个build tool,也就是一个批处理脚本,可以把 ... -
对于FreeMarker的一些看法
2011-01-10 17:44 955体验了下FreeMarker的一些使用方法,感觉FM很方便,但 ... -
Android小记
2011-01-03 19:54 763wangking 写道 不得不说,当随着千元 ... -
JAVA设计模式之代理模式:Proxy
2010-12-17 13:37 982wangking717 写道 代理 ... -
JAVA定时器三种实现方案
2010-12-13 11:27 19831.在Servlet中启动timer,该Servlet在 ... -
JAVA AES加密解决方案
2010-12-10 15:12 3099写道 此次加密基于AES-128 CBC PKCS5填充模 ... -
JAVA乱码之Byte分析
2010-12-10 14:28 1846在做WEB开发的时候经常会遇到乱码问题,在解析字节数组的时候指 ... -
JAVA有时候也需要序列化
2010-12-08 21:45 1527wangking717 写道 序列化就是将一个对象的状态保存 ... -
webservice之axis2使用总结
2010-12-01 17:24 1637一语概括 写道 WebService用于异构,方便不同的 ... -
我也来说说JAVA方法的参数传递
2010-11-19 14:23 861wangking 写道 在群里看到有人在讨论方法参数传 ... -
用pushlets实现java comet,长连接技术
2010-09-23 16:20 2356现在很多项目不单单只是要求Client->Server, ... -
java线程初步认识
2010-09-23 16:03 946这里写了一个小例子,学习一下线程实现的两种方式(继承自Thre ...
相关推荐
import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.HttpException; import org.apache.commons.httpclient.HttpStatus; import org.apache.commons.httpclient.methods....
...HttpClient org.apache.commons.httpclient....
org.apache.commons.httpclient-3.1.jar 用于解决httpclient jar包依赖!!!
这是我一个抠图程序发送请求时专用的jar,maven仓库不好下载,我就上传到csdn,以便下次可以继续使用
小贝程序员生活\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\...
包括了httpclient的所有包,commons-httpclient3.0.jar,httpclient4.0.jar,commons-logging1.1.1.jar,commons-codec-1.3.jar等
Jsoup+httpclient模拟登陆和抓取页面.pdf
httpClient4.1入门教程.pdf httpClient4.1入门教程.pdf
commons-codec-1.3.jar;commons-httpclient-3.0.jar;commons-logging.jar
该jar包为源码httpclient-4.5.6更新包名后的jar包。为了解决android org.apache.http.legacy 包已有的http和httpclient4.3以上版本冲突。使用时将 org.apache.http包下的资源替换成 org.apache.http4即可。如: ...
org.apache.commons.httpclient.HttpClient; 使用到的相关架包,压缩包中有三个,使用的时候倒要导入!
httpclient简化封装,方便调用webapi接口,使用attrubte来控制模型序列化的位置
httpclient-4.5.2.jar 所需更高版本jar包
在httpclient4.x中没有commons-httpclient-3.0.jar,无法使用import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.HttpException; import org.apache.commons.httpclient....
import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.methods.ByteArrayRequestEntity; import org.apache.commons.httpclient.methods.PostMethod;
htmlparse.jar httpClient.jar je.jar
org.apache.commons.httpclient
httpclient-4.5所需jar包,里面包含httpclient-4.5.jar等等10个必须的开发包。 1.commons-codec-1.9.jar 2.commons-logging-1.2.jar 3.fluent-hc-4.5.jar 4.httpclient-4.5.jar 5.httpclient-cache-4.5.jar 6....
工程里的入口类为:mnLogin.java ,由于模拟登陆的网站,使用了自签名的SSL证书,所以新增两个方法,创建HttpClient不校验服务端证书,后台通过调用登陆接口,获得返回的cookie信息,在使用登陆成功获得cookie,调取...
帮助程序员快速从Apache的HttpClient 3.x升级到HttpClient 4.x