Login on website with java

后端 未结 2 1214
萌比男神i
萌比男神i 2020-12-15 13:37

I would like to login to a website with java. I use the org.apache.http and I already written

HttpClient client = new DefaultHttpClient();
HttpPost post = ne         


        
2条回答
  •  心在旅途
    2020-12-15 14:39

    • Before submit the page encode the password (onsubmit). You should do the same in the code.

    • The value of the action attribute does not match with your code (https://accounts.google.com...). You should send the post request to the login.php?do=login.

    And there are a lot of hidden fields:

    
    
    
    
         
    
    
    
    
    

    You should send these parameters too.

    Usually it's easier to install an HttpFox Firefox Add-on an inspect the request for the post parameters than decoding the javascript.

    My browser sends these post parameters (captured with HttpFox, the password is pass1):

    vb_login_username: user1
    vb_login_password:
    s: 5d8bd41a83318e683de9c55a38534407
    securitytoken: 0dcd78b4c1a376232b62126e7ad568e0d1213f95
    do: login
    vb_login_md5password: a722c63db8ec8625af6cf71cb8c2d939
    vb_login_md5password_utf: a722c63db8ec8625af6cf71cb8c2d939
    

    Edit:

    The following works for me, I can get the "Thank you for logging in" message in the printed html code:

    final HttpClient client = new DefaultHttpClient();
    final HttpPost post = new HttpPost(
            "http://www.xtratime.org/forum/login.php?do=login");
    try {
        final List nameValuePairs = 
            new ArrayList(1);
        nameValuePairs.add(new BasicNameValuePair("vb_login_username",
                "my user"));
        nameValuePairs.add(new BasicNameValuePair("vb_login_password", ""));
        nameValuePairs.add(new BasicNameValuePair("s", ""));
        nameValuePairs.add(new BasicNameValuePair("securitytoken",
                "inspected with httpfox, like f48d01..."));
        nameValuePairs.add(new BasicNameValuePair("do", "login"));
        nameValuePairs.add(new BasicNameValuePair("vb_login_md5password",
                "inspected with httpfox, like 8e6ae1..."));
        nameValuePairs.add(new BasicNameValuePair(
                "vb_login_md5password_utf",
                "inspected with httpfox, like 8e6ae1..."));
    
        post.setEntity(new UrlEncodedFormEntity(nameValuePairs));
        final HttpResponse response = client.execute(post);
        final BufferedReader rd = new BufferedReader(new InputStreamReader(
                response.getEntity().getContent()));
        String line = "";
        while ((line = rd.readLine()) != null) {
            System.out.println(line);
        }
    } catch (final IOException e) {
        e.printStackTrace();
    }
    

提交回复
热议问题