hc-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Min (Frank) Ni" <...@paperhost.com>
Subject RE: Yahoo login with Httpclient
Date Fri, 30 Apr 2004 17:07:59 GMT
Hi Mike, Oleg :

I've been trying different things and it seems "MrPostman" (inside www.sf.net ) got me a little
closer. I can use the following programs and try to log into Yahoo. Although I still can't
see the logged-in page, but if I supply the wrong Id/password, it will tell me, seems to me
it's a step closer than what I can get by using HttpClient. 

I hope there is something in MrPostman that HttpClient can absorb so that I only need to use
HttpClient alone to login. I hope I just need to supply it with an url and HttpClient will
handle all the troubles for me transparently without me knowing it (or is it posibble, just
like a browser does ?). Thanks.

I am attaching :

Yahoo_Login.java
YahooMailSession.java

You still need "MrPostman-1.0.3beta2.jar" from the site : www.sf.net  (I tried to attach it
to the email, it didn't work.)

Please let me know if someone get a break through ^_^

Frank

-----Original Message-----
From: Michael Becke [mailto:becke@u.washington.edu]
Sent: Friday, April 30, 2004 11:06 AM
To: Commons HttpClient Project
Subject: Re: Yahoo login with Httpclient


I'm not sure.  The POST/GET is being done via JavaScript, and I'm not 
exactly sure which it's doing.  I have a feeling either will work.

Mike

Min (Frank) Ni wrote:

> OK thanks. Should the second GetMethod() in loginMD5() be PostMethod() ?
> 
> Frank
> 
> -----Original Message-----
> From: Michael Becke [mailto:becke@u.washington.edu]
> Sent: Friday, April 30, 2004 10:19 AM
> To: Commons HttpClient Project
> Subject: Re: Yahoo login with Httpclient
> 
> 
> Hi Frank,
> 
> I was also unable to get this to work. I just wanted to post the code
> that I was trying with, thinking that it may help you to figure this one 
> out.
> 
> Mike
> 
> Min (Frank) Ni wrote:
> 
>>Hello Mike:
>>
>>According to your advice, I changed the code to look like the
>>following, but I am getting "Invalid Password" error. I used the Id
>>and password from the IE browser and it logged me in.
>>
>>I noticed in your loginMD5(), there are two GetMethod()'s, should the
>>second one be "PostMethod()" ? I'm not familiar with HttpClient
>>enough to be sure.
>>
>>==============================================================================================================
>> import java.io.BufferedReader; import java.io.InputStream; import
>>java.io.InputStreamReader; import java.security.MessageDigest; import
>>java.util.regex.Matcher; import java.util.regex.Pattern;
>>
>>import org.apache.commons.httpclient.HttpClient; import
>>org.apache.commons.httpclient.NameValuePair; import
>>org.apache.commons.httpclient.cookie.CookiePolicy; import
>>org.apache.commons.httpclient.methods.GetMethod; import
>>org.apache.commons.httpclient.methods.PostMethod; //import
>>org.apache.commons.httpclient.params.HttpMethodParams;
>>
>>public class YahooLogin { private HttpClient client;
>>
>>private String password  = "javatest"; private String login =
>>"javamr";
>>
>>private String host; private String u; private String challenge;
>>
>>public YahooLogin() { client = new HttpClient();
>>
>>//
>>client.getParams().setParameter(HttpMethodParams.USER_AGENT,
>>"Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/124
>>(KHTML, like Gecko) Safari/125.1"); }
>>
>>public void parseResponse(InputStream is) throws Exception { 
>>BufferedReader reader = new BufferedReader(new
>>InputStreamReader(is)); String line = null;
>>
>>Pattern uP = Pattern.compile(".*name=\"\\.u\" value=\"([^\"]+)\".*");
>> Pattern challengeP = Pattern.compile(".*name=\"\\.challenge\"
>>value=\"([^\"]+)\".*"); Pattern hostP =
>>Pattern.compile(".*method=post action=\"([^\"]+)\".*");
>>
>>while ((line = reader.readLine()) != null) { Matcher uM =
>>uP.matcher(line); Matcher challengeM = challengeP.matcher(line); 
>>Matcher hostM = hostP.matcher(line);
>>
>>if (uM.matches()) { u = uM.group(1); } if (challengeM.matches()) { 
>>challenge = challengeM.group(1); } if (hostM.matches()) { host =
>>hostM.group(1); } }
>>
>>System.out.println("u=" + u); System.out.println("host=" + host); 
>>System.out.println("challenge=" + challenge); }
>>
>>public void loginNormal() throws Exception {
>>
>>GetMethod get = new
>>GetMethod("http://login.yahoo.com/config/login?.src=www&.done=http://www.yahoo.com");
>>
>>
>>get.setRequestHeader("user-agent", "Mozilla/5.0 (Macintosh; U; PPC
>>Mac OS X; en-us) AppleWebKit/124 (KHTML, like Gecko) Safari/125.1");
>>
>>client.executeMethod(get);
>>
>>parseResponse(get.getResponseBodyAsStream());
>>
>>NameValuePair[] pairs = { new NameValuePair("login", login), new
>>NameValuePair("password", password), new NameValuePair(".tries",
>>"1"), new NameValuePair(".src", "www"), new NameValuePair(".md5",
>>""), new NameValuePair(".hash", ""), new NameValuePair(".js", ""), 
>>new NameValuePair(".last", ""), new NameValuePair(".promo", ""), new
>>NameValuePair(".intl", "us"), new NameValuePair(".bypass", ""), new
>>NameValuePair(".partner", ""), new NameValuePair(".u", u), new
>>NameValuePair(".v", "0"), new NameValuePair(".challenge", challenge),
>> new NameValuePair(".yplus", ""), new NameValuePair(".emailCode",
>>""), new NameValuePair("pkg", ""), new NameValuePair("stepid", ""), 
>>new NameValuePair(".ev", ""), new NameValuePair("hasMsgr", "0"), new
>>NameValuePair(".chkP", "Y"), new NameValuePair(".done",
>>"http://www.yahoo.com"), new NameValuePair(".persistent", "y"), };
>>
>>PostMethod post = new PostMethod(host);
>>
>>post.setRequestHeader("user-agent", "Mozilla/5.0 (Macintosh; U; PPC
>>Mac OS X; en-us) AppleWebKit/124 (KHTML, like Gecko) Safari/125.1");
>>
>>post.addRequestHeader("Accept", "*/*"); 
>>post.addRequestHeader("Accept-Language", "en-us, ja;q=0.21,
>>de-de;q=0.86, de;q=0.79, fr-fr;q=0.71, fr;q=0.64, nl-nl;q=0.57,
>>nl;q=0.50, it-it;q=0.43, it;q=0.36, ja-jp;q=0.29, en;q=0.93,
>>es-es;q=0.14, es;q=0.07"); post.setRequestBody(pairs); 
>>client.executeMethod(post);
>>
>>post.getResponseBodyAsString(); }
>>
>>public void loginMD5() throws Exception {
>>
>>GetMethod get = new
>>GetMethod("http://login.yahoo.com/config/login?.src=www&.done=http://www.yahoo.com");
>>
>>
>>get.setRequestHeader("user-agent", "Mozilla/5.0 (Macintosh; U; PPC
>>Mac OS X; en-us) AppleWebKit/124 (KHTML, like Gecko) Safari/125.1");
>>
>>client.executeMethod(get);
>>
>>parseResponse(get.getResponseBodyAsStream());
>>
>>MessageDigest digest = MessageDigest.getInstance("MD5"); 
>>digest.update(password.getBytes("US-ASCII"));
>>
>>String hash1 = new String(digest.digest(), "US-ASCII"); String hash2
>>= hash1 + challenge;
>>
>>digest.update(hash2.getBytes("US-ASCII")); String hash = new
>>String(digest.digest(), "US-ASCII");
>>
>>NameValuePair[] pairs = { new NameValuePair("login", login), new
>>NameValuePair("password", hash), new NameValuePair(".save", "1"), new
>>NameValuePair(".tries", "1"), new NameValuePair(".src", "www"), new
>>NameValuePair(".md5", "1"), new NameValuePair(".hash", "1"), new
>>NameValuePair(".js", "1"), new NameValuePair(".last", ""), new
>>NameValuePair(".promo", ""), new NameValuePair(".intl", "us"), new
>>NameValuePair(".bypass", ""), new NameValuePair(".u", u), new
>>NameValuePair(".v", "0"), new NameValuePair(".challenge", challenge),
>> new NameValuePair(".yplus", ""), new NameValuePair(".emailCode",
>>""), new NameValuePair("pkg", ""), new NameValuePair("stepid", ""), 
>>new NameValuePair(".ev", ""), new NameValuePair("hasMsgr", "0"), new
>>NameValuePair(".chkP", "Y"), new NameValuePair(".done",
>>"http://www.yahoo.com"), new NameValuePair(".persistent", "y"), };
>>
>>get = new GetMethod("http://login.yahoo.com/config/login");
>>
>>get.setRequestHeader("user-agent", "Mozilla/5.0 (Macintosh; U; PPC
>>Mac OS X; en-us) AppleWebKit/124 (KHTML, like Gecko) Safari/125.1");
>>
>>get.addRequestHeader("Accept", "*/*"); 
>>get.addRequestHeader("Accept-Language", "en-us, ja;q=0.21,
>>de-de;q=0.86, de;q=0.79, fr-fr;q=0.71, fr;q=0.64, nl-nl;q=0.57,
>>nl;q=0.50, it-it;q=0.43, it;q=0.36, ja-jp;q=0.29, en;q=0.93,
>>es-es;q=0.14, es;q=0.07"); get.setQueryString(pairs); 
>>client.executeMethod(get);
>>
>>get.getResponseBodyAsString(); }
>>
>>public static void main(String[] args) throws Exception {
>>
>>System.setProperty("org.apache.commons.logging.Log",
>>"org.apache.commons.logging.impl.SimpleLog"); 
>>System.setProperty("org.apache.commons.logging.simplelog.showdatetime",
>>"true"); 
>>System.setProperty("org.apache.commons.logging.simplelog.log.httpclient.wire",
>>"trace"); 
>>System.setProperty("org.apache.commons.logging.simplelog.log.org.apache.commons.httpclient",
>>"debug");
>>
>>new YahooLogin().loginNormal();
>>
>>new YahooLogin().loginMD5();
>>
>>} } 
>>==============================================================================================================
>>
>>
>>Thanks for your kind help.
>>
>>Frank
>>
>>-----Original Message----- From: Michael Becke
>>[mailto:becke@u.washington.edu] Sent: Thursday, April 29, 2004 10:28
>>PM To: Commons HttpClient Project Subject: Re: Yahoo login with
>>Httpclient
>>
>>
>>Oops. Yes, I'm using HttpClient from the HEAD branch.  If you take
>>out the references to HttpMethodParams and add the following for each
>> method, it should work:
>>
>>method.setRequestHeader("user-agent", "Mozilla/5.0 (Macintosh; U; PPC
>> Mac OS X; en-us) AppleWebKit/124 (KHTML, like Gecko) Safari/125.1");
>>
>>
>>You can also change the user agent to something else if you like.
>>
>>Mike
>>
>>On Apr 29, 2004, at 9:54 AM, Min (Frank) Ni wrote:
>>
>>
>>
>>>Hi Mike:
>>>
>>>Thank you for your sample code, I tried to compile it, but got the
>>> following errors :
>>>
>>>=======================================================================
>>> ======================================== YahooLogin.java [13:1]
>>>package org.apache.commons.httpclient.params does not exist import
>>>org.apache.commons.httpclient.params.HttpMethodParams; ^ 
>>>YahooLogin.java [28:1] cannot find symbol symbol  : variable
>>>HttpMethodParams location: class YahooLogin 
>>>client.getParams().setParameter(HttpMethodParams.USER_AGENT, 
>>>"Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/124 
>>>(KHTML, like Gecko) Safari/125.1"); ^ YahooLogin.java [28:1] cannot
>>>find symbol symbol  : method getParams() location: class
>>>org.apache.commons.httpclient.HttpClient 
>>>client.getParams().setParameter(HttpMethodParams.USER_AGENT, 
>>>"Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/124 
>>>(KHTML, like Gecko) Safari/125.1"); ^ 3 errors Errors compiling
>>>YahooLogin. 
>>>=======================================================================
>>> ========================================
>>>
>>>I have mounted "commons-httpclient-2.0.jar" and
>>>"commons-logging.jar" on to my project in NetBeans, Have I missed
>>>anything else that has "package
>>>org.apache.commons.httpclient.params" ?
>>>
>>>Frank
>>>
>>>-----Original Message----- From: Michael Becke
>>>[mailto:becke@u.washington.edu] Sent: Thursday, April 29, 2004
>>>12:35 AM To: Commons HttpClient Project Subject: Re: Yahoo login
>>>with Httpclient
>>>
>>>
>>>Well, I've tried a variety of things, but I cannot successfully
>>>login to yahoo.  Attached is the code that I've been using.  It
>>>includes two methods, one to simulate logging in from a browser
>>>with JavaScript turned off, and another to simulate with JS on.
>>>Perhaps someone else can figure it out from here.
>>>
>>>Mike
>>>
>>>
>>>---------------------------------------------------------------------
>>> To unsubscribe, e-mail: 
>>>commons-httpclient-dev-unsubscribe@jakarta.apache.org For
>>>additional commands, e-mail: 
>>>commons-httpclient-dev-help@jakarta.apache.org
>>>
>>
>>
>>
>>---------------------------------------------------------------------
>> To unsubscribe, e-mail:
>>commons-httpclient-dev-unsubscribe@jakarta.apache.org For additional
>>commands, e-mail: commons-httpclient-dev-help@jakarta.apache.org
>>
>>
>>---------------------------------------------------------------------
>> To unsubscribe, e-mail:
>>commons-httpclient-dev-unsubscribe@jakarta.apache.org For additional
>>commands, e-mail: commons-httpclient-dev-help@jakarta.apache.org
>>
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: commons-httpclient-dev-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: commons-httpclient-dev-help@jakarta.apache.org
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: commons-httpclient-dev-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: commons-httpclient-dev-help@jakarta.apache.org
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: commons-httpclient-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-httpclient-dev-help@jakarta.apache.org



Mime
View raw message