session的保持是通过cookie来维持的,所以如果用户有勾选X天内免登录,这个session 就X天内一直有效,就是通过这个cookie来维护。如果没选X天内免登录,基本上就本次才能保持session,下次打开浏览器就要重新登录了。 
所以在web安全里,黑客通过XSS,最终目的就是获取cookie,从免登录直接进入系统。

这次要讲的是,得到用户cookie后,免登录,用HttpClient 保持原来session访问原本一定要登录才能做的事。

HttpClient 4.x 库可以自己处理Cookie 
有两咱广度可以添加cookie, 
1.通过  httpclient.setCookieStore(cookieStore) 
2.通过  httpGet 或者 httpPost 的addHeader(new BasicHeader("Cookie",cookie));

第一种, 
HttpClient是否在下次请求中携带从服务器端请求来的Cookie,完全是由设置决定的。

httpclient.getParams.setParameter(ClientPNames.COOKIE_POLICY, CookiePolicy.BEST_MATCH) 或者 CookiePolicy.BROWSER_COMPATIBILITY 
如果设置为Cookie策略为BEST_MATCH,或BROWSER_COMPATIBILITY的话,HttpClient会在请求中携带由服务器返回的Cookie。如果不设置,应该需要手动添加了CookieStore,才会保持sesson.

如果设置为Cookie策略为默认的话,没设置,则需要手动通过 
httpclient.setCookieStore(cookieStore); 去设置.

注:如果用的是同一个HttpClient(上下两个请求用同一个httpclient对象。 
且没去手动连接放掉client.getConnectionManager().shutdown(); )! 
都不用去设置cookie的ClientPNames.COOKIE_POLICY。httpclient都是会保留cookie的!

第二种, 
通过Header去设置cookie,这种方法,就是今天要用的应用场景, 
我们得到一个登录的cookie,免登录访问。 
可以用浏览器登录,然后f12通过console 执行 document.cookie 得到cookie, 
用这个cookie ,在访问时,设置  httpGet 或者 httpPost 的addHeader(new BasicHeader("Cookie",cookie));就可以免登录访问。

这种场景我用来用第一种方法,设置没成功,可能是因为用第一种时,没设置path,domain,expire 的原因,我猜的。

这种场景可以解决第一次登录也需要验证码的网站。没有登录就没办法发布或刷新信息。 
如赶集网。

(转) httpclient对cookie的处理的更多相关文章

  1. Java通过httpclient获取cookie模拟登录

    package Step1; import org.apache.commons.httpclient.Cookie; import org.apache.commons.httpclient.Htt ...

  2. httpclient提示Cookie rejected: violates RFC 2109: domain must start with a dot

    使用httpclient时发生如下告警信息: WARN - HttpMethodBase.processResponseHeaders(1505) | Cookie rejected: "$ ...

  3. HttpClient使用cookie

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

  4. .net 中HttpClient 携带cookie传输

    CookieContainer cookieContainer = new CookieContainer(); Cookie cookie = new Cookie("username&q ...

  5. HttpClient传递Cookie

    使用代码访问http资源,我们通常用WebRequest,当然,HttpClient提供了更方便的封装,我用得更多.只是碰到一些需要(cookie)鉴权的情况,需要把cookie伴随请求一起发到服务器 ...

  6. HttpClient获取Cookie的两种方式

    转载:http://blog.csdn.net/zhangbinu/article/details/72777620 一.旧版本的HttpClient获取Cookies p.s. 该方式官方已不推荐使 ...

  7. 使用HttpClient 4.3.4 自动登录并抓取中国联通用户基本信息和账单数据,GET/POST/Cookie

    一.什么是HttpClient? HTTP 协议可能是现在 Internet 上使用得最多.最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源.虽然在 JDK 的 ...

  8. httpclient cookie相关介绍

    http状态管理 cookie是HTTP代理和目标服务器可以交流保持回话的状态信息的令牌或短包. httpclient使用Cookie接口来代表抽象的cookie令牌,在它的简单形式中http的coo ...

  9. httpclient 模拟浏览器动作需注意的cookie和HTTP头等信息

    转自:http://resolute.javaeye.com/blog/491701 commons-httpclient是apache下的一个开源项目,提供了一个纯java实现的http客户端.使用 ...

随机推荐

  1. leetcode 509斐波那契数列

    递归方法: 时间O(2^n),空间O(logn) class Solution { public: int fib(int N) { ?N:fib(N-)+fib(N-); } }; 递归+记忆化搜索 ...

  2. 第五周作业,LVM和TCP

    1.磁盘lvm管理,完成下面要求,并写出详细过程: 1) 创建一个至少有两个PV组成的大小为20G的名为testvg的VG;要求PE大小 为16MB, 而后在卷组中创建大小为5G的逻辑卷testlv; ...

  3. rsync启动脚本

    rsync启动脚本 01 #!/bin/bash  www.ahlinux.com 02 # 03 # rsyncd      This shell script takes care of star ...

  4. zabbix_server调优

    调整zabbix_server参数    /usr/local/zabbix/etc/zabbix_server.conf StartPollers=160 StartPollersUnreachea ...

  5. Struts+Hibernate+Spring面试题合集及答案

    Struts+Hibernate+Spring面试题合集及答案 Struts+Hibernate+Spring面试题合集 1 1. Hibernate部分 2 1.1. Hibernate工作原理 2 ...

  6. 软件设计分为结构化设计(SD)

    软件设计分为结构化设计(SD)与面向对象设计(OOD). 其中结构化设计SD是一种面向数据流的方法,它以SRS(软件需求规格说明书)和SA(结构化分析)阶段所产生的和数据字典等文档为基础,是一个自顶向 ...

  7. Java第二周总结报告

    第二周的学习,开始正式实践进行Java的学习. 本周做了什么? 了解的Java的一些基本知识,如Java变量,数据类型和运算符等.Java变量对不同的数据类型最好采用不同的命名规则,合理的命名有利于提 ...

  8. ubuntu中用命令创建数据库

    # switch to postgres account sudo su postgres # create a new postgres login: jetty; and set the pass ...

  9. 直线的Bresenham算法

    在实验课上用自己的算法画直线被diss效率低 花了半天时间看了下Bresenham算法真

  10. A*算法【拼图游戏】

    数据结构 using System; using System.Collections.Generic; using System.Linq; using System.Text; using Sys ...