随便找了个网站想试一下用PostMethod模拟登录发包,但是登录不了,跟正常登录的数据相比的话缺了几行数据
这是自己发包后抓回来的数据(账号密码的*是自己替换的):POST /usercenter/login HTTP/1.1
User-Agent: Jakarta Commons-HttpClient/3.0.1
Host: www.anjuke.com
Content-Length: 154
Content-Type: application/x-www-form-urlencodedloginpost=1&formhash=&sid=anjuke&url=aHR0cDovL3NoZW56aGVuLmFuanVrZS5jb20v&systemtime=1328966446&username=******&password=******&submit=&returntype=META
然后这是正常页面登录抓回来的数据:POST /usercenter/login HTTP/1.1
Host: my.anjuke.com
Connection: keep-alive
Content-Length: 149
Cache-Control: max-age=0
Origin: http://my.anjuke.com
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.126 Safari/535.1
Content-Type: application/x-www-form-urlencoded
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Referer: http://my.anjuke.com/my/login?history=aHR0cDovL3NoZW56aGVuLmFuanVrZS5jb20v
Accept-Encoding: gzip,deflate,sdch
Accept-Language: zh-CN,zh;q=0.8
Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3
Cookie: aQQ_ajkguid=95EBDCE5-204F-2738-C217-F800EFCB5C0A; __gads=ID=8ff0af22c5dc81fb:T=1315548741:S=ALNI_MbU6sWMhM3XTNqidSJadtGm7RMI2A; sessid=43BD473B-306C-AFAA-4E52-5CE6524D1E1A; aQQ_ajklogintime=1328956754; ctid=13; lui=3221775%3A1; aQQ_ajklastuser=mxchenry; aQQ_ckiprocondnum=0; miv=1; ajk_mem_id=0; lastlanded=1328966446; __utma=1.1347894574.1328956755.1328961188.1328966446.3; __utmb=1.2.10.1328966446; __utmc=1; __utmz=1.1328961188.2.2.utmcsr=my.anjuke.com|utmccn=(referral)|utmcmd=referral|utmcct=/usercenter/login; __utma=122822679.939354939.1315548579.1328961272.1328966448.9; __utmb=122822679.1.10.1328966448; __utmc=122822679; __utmz=122822679.1328966448.9.8.utmcsr=shenzhen.anjuke.com|utmccn=(referral)|utmcmd=referral|utmcct=/loginpost=1&formhash=&sid=anjuke&url=aHR0cDovL3NoZW56aGVuLmFuanVrZS5jb20v&systemtime=1328966446&username=******&password=******&remember=1&submit=对比之下明显是少了
Cache-Control: max-age=0
Origin: http://my.anjuke.com
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Referer: http://my.anjuke.com/my/login?history=aHR0cDovL3NoZW56aGVuLmFuanVrZS5jb20v
Accept-Encoding: gzip,deflate,sdch
Accept-Language: zh-CN,zh;q=0.8
Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3
Cookie: aQQ_ajkguid=95EBDCE5-204F-2738-C217-F800EFCB5C0A; __gads=ID=8ff0af22c5dc81fb:T=1315548741:S=ALNI_MbU6sWMhM3XTNqidSJadtGm7RMI2A; sessid=43BD473B-306C-AFAA-4E52-5CE6524D1E1A; aQQ_ajklogintime=1328956754; ctid=13; lui=3221775%3A1; aQQ_ajklastuser=mxchenry; aQQ_ckiprocondnum=0; miv=1; ajk_mem_id=0; lastlanded=1328966446; __utma=1.1347894574.1328956755.1328961188.1328966446.3; __utmb=1.2.10.1328966446; __utmc=1; __utmz=1.1328961188.2.2.utmcsr=my.anjuke.com|utmccn=(referral)|utmcmd=referral|utmcct=/usercenter/login; __utma=122822679.939354939.1315548579.1328961272.1328966448.9; __utmb=122822679.1.10.1328966448; __utmc=122822679; __utmz=122822679.1328966448.9.8.utmcsr=shenzhen.anjuke.com|utmccn=(referral)|utmcmd=referral|utmcct=/
这一堆东西,但用PostMethod方法似乎是只能配出下面这一块loginpost=1&formhash=&sid=anjuke&url=aHR0cDovL3NoZW56aGVuLmFuanVrZS5jb20v&systemtime=1328966446&username=******&password=******&submit=&returntype=META
那少的这部分是怎么触发的 
谢了

解决方案 »

  1.   

    这是自己的代码
    public static String login(String email, String passwd) throws HttpException, IOException
    {
    PostMethod post = new PostMethod("http://my.anjuke.com/usercenter/login");
    post.addParameter("loginpost", "1");
    post.addParameter("formhash", "");
    post.addParameter("sid", "anjuke");
    post.addParameter("url", "aHR0cDovL3NoZW56aGVuLmFuanVrZS5jb20v");
    post.addParameter("systemtime", "1329013759");
    post.addParameter("username", email);
    post.addParameter("password", passwd);
    post.addParameter("remember", "1");
    HttpClient client = new HttpClient();
    client.executeMethod(post);
    GetMethod get = new GetMethod("http://my.anjuke.com/member/modify/info/");
    client.executeMethod(get);
    System.out.println(new String(get.getResponseBody()));
    return new String(get.getResponseBody());
    }
     
    public static void main(String[] args) throws HttpException, IOException
    {
    login("******","******");
    }
      

  2.   

    cookie你是没办法控制的啊,你用的是HTTPCLIENT,而不是浏览器,服务器是不会给你丢cookie的,这些部分当然是不存在啊,还有Cache-Control: max-age=0什么的一样!
      

  3.   

    那些都是跟浏览器交互产生的东西Cache-Control是缓存控制Accept-Encoding: gzip,deflate,sdch
    Accept-Language: zh-CN,zh;q=0.8
    Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3
    接收的语言类型,编码,字符集什么的
      

  4.   

    哦 那是不是把User-Agent: Jakarta Commons-HttpClient/3.0.1改成
    User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.126 Safari/535.1?
      

  5.   

    试了下 用这个改一下
    client.getParams().setParameter(HttpMethodParams.USER_AGENT," Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.126 Safari/535.1");//设置信息 
    但还是取不回数据
    POST /usercenter/login HTTP/1.1
    User-Agent:  Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.126 Safari/535.1
    Host: my.anjuke.com
    Content-Length: 149
    Content-Type: application/x-www-form-urlencoded
      

  6.   

    而且request回来的数据包都是未登录的状态