servlet登录验证实例用Httpclient模拟登录出错求帮助=,=

public static Cookie[] getWCookies(String username,String password) throws HttpException, IOException{
HttpClient client =
PostMethod post =
GetMethod get =
client = new HttpClient();
client.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);
post = new PostMethod(&.cn/sso/login.php?client=ssologin.js(v1.3.16)&);
String data = getServerTime();
String nonce = makeNonce(6);
NameValuePair[] nvps = new NameValuePair[] {
new NameValuePair(&entry&, &weibo&),
new NameValuePair(&gateway&, &1&),
new NameValuePair(&from&, &&),
new NameValuePair(&savestate&, &7&),
new NameValuePair(&useticket&, &1&),
new NameValuePair(&ssosimplelogin&, &1&),
new NameValuePair(&vsnf&, &1&),
new NameValuePair(&vsnval&, &&),
new NameValuePair(&su&, encodeAccount(username)),
new NameValuePair(&service&, &miniblog&),
new NameValuePair(&servertime&, data),
new NameValuePair(&nonce&, nonce),
new NameValuePair(&pwencode&, &wsse&),
new NameValuePair(&sp&, new SinaSSOEncoder().encode(password, data, nonce)),
new NameValuePair(&encoding&, &UTF-8&),
new NameValuePair(&returntype&, &META&),
new NameValuePair(
&/ajaxlogin.php?framelogin=1&callback=parent.sinaSSOController.feedBackUrlCallBack&) };
post.setRequestBody(nvps);
client.executeMethod(post);
String url = post.getResponseBodyAsString().substring(post.getResponseBodyAsString().indexOf(&/ajaxlogin.php?&),post.getResponseBodyAsString().indexOf(&code=0&)+6);
get = new GetMethod(url);
client.executeMethod(get);
}catch(IOException e){
e.printStackTrace();
get.abort();
post.abort();
return client.getState().getCookies();
其中密码部分进行了加密,加密的算法在网页的js文件里,网上有人把它改成了Java代码。
下面是SinaSSoEncoder类:
public class SinaSSOEncoder {
private boolean i =
private int g = 8;
public SinaSSOEncoder() {
public String encode(String psw, String servertime, String nonce) {
password = hex_sha1(&& + hex_sha1(hex_sha1(psw)) + servertime + nonce);
private String hex_sha1(String j) {
return h(b(f(j, j.length() * g), j.length() * g));
private String h(int[] l) {
String k = i ? &ABCDEF& : &abcdef&;
String m = &&;
for (int j = 0; j & l.length * 4; j++) {
m += k.charAt((l[j && 2] && ((3 - j % 4) * 8 + 4)) & 15) + &&
+ k.charAt((l[j && 2] && ((3 - j % 4) * 8)) & 15);
private int[] b(int[] A, int r) {
A[r && 5] |= 128 && (24 - r % 32);
A[((r + 64 && 9) && 4) + 15] =
int[] B = new int[80];
int y = -;
int v = -;
int s = -;
for (int o = 0; o & A. o += 16) {
for (int l = 0; l & 80; l++) {
if (l & 16) {
B[l] = A[o + l];
B[l] = d(B[l - 3] ^ B[l - 8] ^ B[l - 14] ^ B[l - 16], 1);
int C = e(e(d(z, 5), a(l, y, v, u)), e(e(s, B[l]), c(l)));
v = d(y, 30);
z = e(z, q);
y = e(y, p);
v = e(v, n);
u = e(u, m);
s = e(s, k);
return new int[] { z, y, v, u, s };
private int a(int k, int j, int m, int l) {
if (k & 20) {
return (j & m) | ((~j) & l);
if (k & 40) {
return j ^ m ^
if (k & 60) {
return (j & m) | (j & l) | (m & l);
return j ^ m ^
private int c(int j) {
return (j & 20) ?
: (j & 40) ?
: (j & 60) ? - : -;
private int e(int j, int m) {
int l = (j & 65535) + (m & 65535);
int k = (j && 16) + (m && 16) + (l && 16);
return (k && 16) | (l & 65535);
private int d(int j, int k) {
return (j && k) | (j &&& (32 - k));
private int[] f(String m, int r) {
int j = (1 && this.g) - 1;
int len = ((r + 64 && 9) && 4) + 15;
for (k = 0; k & m.length() * k += g) {
len = k && 5 & len ? k && 5 :
l = new int[len + 1];
for (k = 0; k & l. k++) {
for (k = 0; k & m.length() * k += g) {
l[k && 5] |= (m.charAt(k / g) & j) && (24 - k % 32);
转:/e241138/archive//2687124.html
相关 [httpclient 模拟 登录] 推荐:
其中密码部分进行了加密,加密的算法在网页的js文件里,网上有人把它改成了Java代码. 下面是SinaSSoEncoder类:. 转:/e241138/archive//2687124.html. 已有
0 人发表留言,猛击-&&
这里&&-参与讨论.
我们要做的就是获取服务器需要的数据,然后用HttpClient模拟浏览器提交. go标签内的href是我们第二次请求的地址,通过这个地址来获取cookie. 用户密码那个field的name属性是随机变化的,需要先获取它然后提交. 思路:先获取表单的值,然后用POST方法提交. 注意添加RequestHeader信息,否则会被服务器拒绝(403).
- ITeye博客
session的保持是通过cookie来维持的,所以如果用户有勾选X天内免登录,这个session 就X天内一直有效,就是通过这个cookie来维护. 如果没选X天内免登录,基本上就本次才能保持session,下次打开浏览器就要重新登录了. 所以在web安全里,黑客通过XSS,最终目的就是获取cookie,从免登录直接进入系统.
- 互联网 - ITeye博客
服务器A需要通过HttpClient去连接另一个系统B提供的服务,运行一段时间后抛出以下异常:. 在服务器B上运行netstat命令,发现大量连接处于
CLOSE_WAIT 状态. 简单来说CLOSE_WAIT数目过大是由于被动关闭连接处理不当导致的. 我说一个场景,服务器A会去请求服务器B上面的apache获取文件资源,正常情况下,如果请求成功,那么在抓取完资源后服务器A会主动发出关闭连接的请求,这个时候就是主动关闭连接,连接状态我们可以看到是TIME_WAIT.
- 企业架构 - ITeye博客
我们将Web Service发布在Tomcat或者其他应用服务器上后,有很多方法可以调用该Web Service,常用的有两种:.
1、通过浏览器HTTP调用,返回规范的XML文件内容.
2、通过客户端程序调用,返回结果可自定义格式.
接下来,我利用Eclipse作为开发工具,演示一个Httpclient调用WebService的简单示例.
- CSDN博客推荐文章
HttpClient:是一个接口. 首先需要先创建一个DefaultHttpClient的实例. 先创建一个HttpGet对象,传入目标的网络地址,然后调用HttpClient的execute()方法即可:. 创建一个HttpPost对象,传入目标的网络地址:. 通过一个NameValuePair集合来存放待提交的参数,并将这个参数集合传入到一个UrlEncodedFormEntity中,然后调用HttpPost的setEntity()方法将构建好的UrlEncodedFormEntity传入:.
- CSDN博客推荐文章
《Apache HttpClient 4.3开发指南》. 作者:chszs,转载需注明. 博客主页:
http://blog.csdn.net/chszs. Apache HttpClient 4系列已经发布很久了,但由于它与HttpClient 3.x版本完全不兼容,以至于业内采用此库的公司较少,在互联网上也少有相关的文档资料分享.
介绍Android中Http请求方式的选择、区别及几个常用框架对API的选择. Android Http请求API主要分两种:. 第一种是Java的HttpURLConnection,默认带gzip压缩. 第二种Apache的HttpClient,默认不带gzip压缩. 两种方式请求connection都是keep alive,默认User-Agent不同.
- 企业架构 - ITeye博客
httpClient4.3开始弃用了DefaultHttpClient和PoolingClientConnectionManager.原来这样配置的连接工厂. 现在改用spring推荐的类,配置如下:.
配置带有连接池的org.springframework.web.client.RestTemplate.
- CSDN博客推荐文章
HttpURLConnection的使用
. * URL请求的类别分为二类,GET与POST请求. * a:) get请求可以获取静态页面,也可以把参数放在URL字串后面,传递给servlet, . * b:) post与get的不同之处在于post的参数不是放在URL字串里面,而是放在http请求的正文内.
坚持分享优质有趣的原创文章,并保留作者信息和版权声明,任何问题请联系:@。75httpclient模拟登陆
上亿文档资料,等你来发现
75httpclient模拟登陆
1.2.;3.importjava.io.Buffered;6.importjava.io.InputStr;8.importorg.apache.http.;12.importorg.apache.http;13.importorg.apache.http;16.importorg.apache.http;20.importja
3. import java.io.BufferedR
4. import java.io.IOE
5. import java.io.InputS
6. import java.io.InputStreamR
8. import org.apache.http.H
9. import org.apache.http.HttpE
10.import org.apache.http.HttpR
11.import org.apache.http.NameValueP
12.import org.apache.http.client.ClientProtocolE
13.import org.apache.http.client.entity.UrlEncodedFormE
14.import org.apache.http.client.methods.HttpG
15.import org.apache.http.client.methods.HttpP
16.import org.apache.http.impl.client.DefaultHttpC
17.import org.apache.http.message.BasicNameValueP
18.import org.apache.http.util.EntityU
20.import java.util.ArrayL
21.import java.util.L
24. * DZ 登录与发贴 实例
26. * @author 创建人
29.public class LoginDZ extends Thread{
static final String domainurl = \ //原始地址
static final String loginurl = \r.php?mod=logging&action=login&loginsubmit=yes&infloat=yes&lssubmit=yes\登录地址
static final String loginUsername = \登录用户名
static final String loginPassword = \密码
static final String username = \登录用户名(自己改)
static final String password = \登录密码(自己改)
* 状态码对应 HttpServletResponse 的常量详细描述
* @author Administrator
static class HttpStatus {
static int SC_MOVED_TEMPORARILY = 301; // 页面已经永久移到另外一个新地址
static int SC_MOVED_PERMANENTLY = 302; // 页面暂时移动到另外一个新的地址
static int SC_SEE_OTHER = 303; // 客户端请求的地址必须通过另外的 URL 来访问
static int SC_TEMPORARY_REDIRECT = 307; // 页面暂时移动到另外一个新的地址
* 获取 formhash 值value
* @param url
* @throws IOException
* @throws ClientProtocolException
* @throws IOException
* @throws ClientProtocolException
public String getFormhash(String url,DefaultHttpClient httpclient) throws ClientProtocolException, IOException {
HttpGet httpGet = new HttpGet(url);
HttpResponse response = httpclient.execute(httpGet);
HttpEntity entity = response.getEntity();
StringBuffer sb =
// 输出页面内容
if (entity != null) {
String charset = EntityUtils.getContentCharSet(entity);
InputStream is = entity.getContent();
sb = new StringBuffer();
BufferedReader br = new BufferedReader(new InputStreamReader(is,
charset));
String line =
while ((line = br.readLine()) != null) {
sb.append(line);
is.close();
int pos = sb.indexOf(\84.
// 找出这个 formhash 的内容,这是登录用的 formhash
String login_formhash = sb.substring(pos + 23, pos + 23 + 8);
return login_
* @param httpclient
* @param user
* @param pass
* @param formhash
提交的表单formhash值
* @throws ClientProtocolException
* @throws IOException
public boolean logicDz(DefaultHttpClient httpclient,String formhash) throws ClientProtocolException, IOException{
/* 创建post连接 */
HttpPost httpPost = new HttpPost(loginurl);
/* 创建登录条件 */
List nvps = new ArrayList();
nvps.add(new BasicNameValuePair(\me));
nvps.add(new BasicNameValuePair(\rd));
nvps.add(new BasicNameValuePair(\sh));
/* 添加到httpPost提交的内容中 */
httpPost.setEntity(new UrlEncodedFormEntity(nvps, \111.
/*执行并打印登录后内容显示情况*/
printHttpGet(httpclient.execute(httpPost));
HttpResponse response = httpclient.execute(httpPost);//不打印登录情况
/*判断登录是否成功*/
HttpEntity entity = response.getEntity();
StringBuffer sb =
// 输出页面内容
if (entity != null) {
String charset = EntityUtils.getContentCharSet(entity);
InputStream is = entity.getContent();
sb = new StringBuffer();
BufferedReader br = new BufferedReader(new InputStreamReader(is,
charset));
String line =
while ((line = br.readLine()) != null) {
sb.append(line+\130.
is.close();
if(sb.indexOf(\访问我的空间\\\1){
int pos = sb.indexOf(\访问我的空间\\\137.
String username =sb.substring(pos+15, pos+50);
username = username.substring(0, username.indexOf(\1));
System.out.println(\登录时的 用户名为:\141.
System.out.println(\#######
############################\142.
/*释放资源*/
httpPost.abort();
* 发贴 成功后返回页面内容
* @param httpclient
* @param url
* @param message
* @param subject
* @param login_formhash
* @return HttpResponse
* @throws ClientProtocolException
* @throws IOException
public HttpResponse postMessage(DefaultHttpClient httpclient,String url,String message,String subject,String login_formhash) throws ClientProtocolException, IOException{
HttpPost httpPost = new HttpPost(url);
HttpResponse response =
List nvps = new ArrayList();
nvps.add(new BasicNameValuePair(\));
nvps.add(new BasicNameValuePair(\));
nvps.add(new BasicNameValuePair(\formhash));
//提交form的hash值(防外提交form的)
/*以下的可以不设置,看了一下论坛中,这两个都有值的*/
nvps.add(new BasicNameValuePair(\\173.
nvps.add(new BasicNameValuePair(\
httpPost.setEntity(new UrlEncodedFormEntity(nvps, \175.
response = httpclient.execute(httpPost);
/*释放资源*/
httpPost.abort();
三亿文库包含各类专业文献、应用写作文书、专业论文、高等教育、幼儿教育、小学教育、外语学习资料、75httpclient模拟登陆等内容。 
  供稿 HttpClient + Jsoup 模拟登陆,解析 HTML,信息筛选(广工图书馆) HttpClient + Jsoup 模拟登陆,解析 HTML 获取信息 微博:http:/...  Php模拟HttpClient请求(一)_IT/计算机_专业资料。PHP 模拟 HTTPClient 请求 PHP 程序与服务器端通讯方法小结 假设有10个网站,分布在各地,它们的库存要同步,而数据...  HttpClient 模拟登录Web版新浪微博_计算机软件及应用_IT/计算机_专业资料。HttpClient 模拟登录 Web 版新浪微博上篇介绍了如何模拟登录手机版微博,过程还是比较简单的,...  安卓HttpClient+Jsoup+Httpwatch 模拟登陆正方教务获取信息分类:android | 标签: 安卓,爬虫 | 作者:u 相关 | 发布日期 :
| 热度 : 1107...  httpclient模拟登陆_计算机软件及应用_IT/计算机_专业资料 暂无评价|0人阅读|0次下载|举报文档 httpclient模拟登陆_计算机软件及应用_IT/计算机_专业资料。httpclient...  目前有很多的开源项目都用到了 HttpClient 提供的 HTTP 功能,登陆网址可以查看...而 PostMethod 则可以模拟 网页里表单提交的过程, 通过设置表单里 post 请求参数...  { HttpClient client = new HttpClient(); client.getHostConfiguration().setHost(LOGON_SITE, LOGON_PORT); //模拟登录页面 login.jsp-&main.jsp PostMethod...  目前已经可以正常的模拟登录大部分网站,在这里把一些技术要点记录一 下。 1 SSL 的问题: httpclient 中可以自定义 SSLContext,也可以通过加载服务端提供的证书来...本帖子已过去太久远了,不再提供回复功能。

我要回帖

更多关于 servlet登录注册 的文章

 

随机推荐