HTTP Google登录 - Cookie已关闭

时间:2012-12-28 14:47:51

标签: java cookies login apache-httpclient-4.x

我正在尝试登录我的Google帐户。我在旧帖子中读到使用HTTP-Fox来获取所有参数。所以我添加了所有内容,包括隐藏的内容。

package com.businessLogic;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;

public class Browser {
 public static void main (String [] arg ){

    HttpClient client = new DefaultHttpClient();
    HttpPost post = new HttpPost("https://accounts.google.com/ServiceLogin");
    try {
        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
        nameValuePairs.add(new BasicNameValuePair("service", "lso"));
        nameValuePairs.add(new BasicNameValuePair("passive", "1209600"));
        nameValuePairs.add(new BasicNameValuePair("continue", "https://accounts.google.com/o/oauth2/auth?....."));
        nameValuePairs.add(new BasicNameValuePair("ltmpl", "embedded"));
        nameValuePairs.add(new BasicNameValuePair("shdf", "CoMBCxIRdGhpcmR...."));
        nameValuePairs.add(new BasicNameValuePair("scc", "1"));
        nameValuePairs.add(new BasicNameValuePair("dsh", "-2602464068824153107"));
        nameValuePairs.add(new BasicNameValuePair("GALX", "qqYU2P_8USM"));
        nameValuePairs.add(new BasicNameValuePair("pstMsg", "1"));
        nameValuePairs.add(new BasicNameValuePair("dnConn", ""));
        nameValuePairs.add(new BasicNameValuePair("checkConnection", "youtube:816:1"));
        nameValuePairs.add(new BasicNameValuePair("checkedDomains", "youtube"));
        nameValuePairs.add(new BasicNameValuePair("timeStmp", ""));
        nameValuePairs.add(new BasicNameValuePair("secTok", ""));
        nameValuePairs.add(new BasicNameValuePair("_utf8", "â"));
        nameValuePairs.add(new BasicNameValuePair("bgresponse", "!A0LfAt2vXHmPiURq..."));
        nameValuePairs.add(new BasicNameValuePair("Email", "XXX"));
        nameValuePairs.add(new BasicNameValuePair("Passwd", "XXX"));
        nameValuePairs.add(new BasicNameValuePair("signIn", "Anmelden"));

        post.setEntity(new UrlEncodedFormEntity(nameValuePairs));
        HttpResponse response = client.execute(post);
        BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
        String line = "";
        while ((line = rd.readLine()) != null) {
            System.out.println(line);
        }   
    } catch (IOException e) {
        e.printStackTrace();
    }
}
}

响应:

<html><head><title>Google Accounts</title>
</head>
<body dir="ltr" bgcolor="#ffffff" text="#000000" link="#0000cc" vlink="#551a8b" alink="#ff0000">
<div class="topbar aligns" style="font-size:smaller; margin-bottom:0 15px 1px 15px; white-space:nowrap;">
        <a>
              Google Home
</a>
|

<a>Sign in</a></div>
<div class="header margins" style="height: 40px; margin: 13px 15px 9px 15px;"><a href="https://accounts.google.com/"><img src="/googleaccountslogo/en.gif" border="0" class="floats-normal" alt="Google"></a>
</div>
<div style="clear:both;"></div>
<div class="body"><p>Your browser&#39;s cookie functionality is turned off. Please turn it on.
[<a href="http://www.google.com/support/accounts/bin/answer.py?answer=61416&amp;hl=en&amp;ctx=ch_ServiceLogin&amp;p=lso" target="_blank">?</a>]</p>
&copy;2012 Google

</body></html>

登录失败。 “登录”选项也可用。我不知道如何处理这些答案/ Cookies。 我找不到有用的解决方案,因为每个人都使用httpclient属于org.apache.common.*的旧API。

你能帮助我吗?

1 个答案:

答案 0 :(得分:0)

httpFox将在FireFox中显示请求的Cookie。看看那些饼干,它应该为你提供一些线索。显然,这些cookie中的一个或多个必须存在,以便该URL回答您。

http客户端可以指定要通过请求/ POST传递的cookie。