Sie sind auf Seite 1von 10

How To Automate Login A Website Java Example

Tools & Java Library used in this example

1. Google Chrome Browser Network tab to analyze HTTP request and response header
fields.

2. jsoup library Extracts HTML form values.

3. JDK 6.

1. Analyze Http Headers, form data.


To login a website, you need to know following values :

1. Login form URL.

2. Login form data.

3. URL for authentication.

4. Http request / response header.

Uses Google Chrome to get above data. In Chrome, right click everywhere, choose Inspect
Element -> Network tab.
Before you code, try login via Chrome, observe how the HTTP request, response and form data
works, later you need to simulate the same steps in Java.

2. HttpsURLConnection Example
In this example, we show you how to login Gmail.

Summary :

1. Send an HTTP GET request to Google login form


https://accounts.google.com/ServiceLoginAuth

2. Analyze the form data via Google Chromes Network feature. Alternatively, you can view
the HTML source code.

3. Use jSoup library to extract all visible and hidden forms data, replace with your username
and password.

4. Send a HTTP POST request back to login form, along with the constructed parameters

5. After user authenticated, send another HTTP GET request to Gmail


page. https://mail.google.com/mail/

Note
This example is just to show you the capability and functionality of Java HttpURLConnection. In
general, you should use the Google Gmail API to interact with Gmail.

HttpUrlConnectionExample.java
package com.mkyong;

import java.io.BufferedReader;

import java.io.DataOutputStream;

import java.io.InputStreamReader;

import java.io.UnsupportedEncodingException;

import java.net.CookieHandler;

import java.net.CookieManager;
import java.net.URL;

import java.net.URLEncoder;

import java.util.ArrayList;

import java.util.List;

import javax.net.ssl.HttpsURLConnection;

import org.jsoup.Jsoup;

import org.jsoup.nodes.Document;

import org.jsoup.nodes.Element;

import org.jsoup.select.Elements;

public class HttpUrlConnectionExample {

private List<String> cookies;

private HttpsURLConnection conn;

private final String USER_AGENT = "Mozilla/5.0";

public static void main(String[] args) throws Exception {

String url = "https://accounts.google.com/ServiceLoginAuth";

String gmail = "https://mail.google.com/mail/";

HttpUrlConnectionExample http = new HttpUrlConnectionExample();


// make sure cookies is turn on

CookieHandler.setDefault(new CookieManager());

// 1. Send a "GET" request, so that you can extract the form's data.

String page = http.GetPageContent(url);

String postParams = http.getFormParams(page, "username@gmail.com",


"password");

// 2. Construct above post's content and then send a POST request for

// authentication

http.sendPost(url, postParams);

// 3. success then go to gmail.

String result = http.GetPageContent(gmail);

System.out.println(result);

private void sendPost(String url, String postParams) throws Exception {

URL obj = new URL(url);

conn = (HttpsURLConnection) obj.openConnection();

// Acts like a browser

conn.setUseCaches(false);

conn.setRequestMethod("POST");
conn.setRequestProperty("Host", "accounts.google.com");

conn.setRequestProperty("User-Agent", USER_AGENT);

conn.setRequestProperty("Accept",

"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0
.8");

conn.setRequestProperty("Accept-Language", "en-US,en;q=0.5");

for (String cookie : this.cookies) {

conn.addRequestProperty("Cookie", cookie.split(";", 1)[0]);

conn.setRequestProperty("Connection", "keep-alive");

conn.setRequestProperty("Referer",
"https://accounts.google.com/ServiceLoginAuth");

conn.setRequestProperty("Content-Type", "application/x-www-form-
urlencoded");

conn.setRequestProperty("Content-Length",
Integer.toString(postParams.length()));

conn.setDoOutput(true);

conn.setDoInput(true);

// Send post request

DataOutputStream wr = new DataOutputStream(conn.getOutputStream());

wr.writeBytes(postParams);

wr.flush();

wr.close();
int responseCode = conn.getResponseCode();

System.out.println("\nSending 'POST' request to URL : " + url);

System.out.println("Post parameters : " + postParams);

System.out.println("Response Code : " + responseCode);

BufferedReader in =

new BufferedReader(new InputStreamReader(conn.getInputStream()));

String inputLine;

StringBuffer response = new StringBuffer();

while ((inputLine = in.readLine()) != null) {

response.append(inputLine);

in.close();

// System.out.println(response.toString());

private String GetPageContent(String url) throws Exception {

URL obj = new URL(url);

conn = (HttpsURLConnection) obj.openConnection();

// default is GET
conn.setRequestMethod("GET");

conn.setUseCaches(false);

// act like a browser

conn.setRequestProperty("User-Agent", USER_AGENT);

conn.setRequestProperty("Accept",

"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0
.8");

conn.setRequestProperty("Accept-Language", "en-US,en;q=0.5");

if (cookies != null) {

for (String cookie : this.cookies) {

conn.addRequestProperty("Cookie", cookie.split(";", 1)
[0]);

int responseCode = conn.getResponseCode();

System.out.println("\nSending 'GET' request to URL : " + url);

System.out.println("Response Code : " + responseCode);

BufferedReader in =

new BufferedReader(new InputStreamReader(conn.getInputStream()));

String inputLine;

StringBuffer response = new StringBuffer();


while ((inputLine = in.readLine()) != null) {

response.append(inputLine);

in.close();

// Get the response cookies

setCookies(conn.getHeaderFields().get("Set-Cookie"));

return response.toString();

public String getFormParams(String html, String username, String password)

throws UnsupportedEncodingException {

System.out.println("Extracting form's data...");

Document doc = Jsoup.parse(html);

// Google form id

Element loginform = doc.getElementById("gaia_loginform");

Elements inputElements = loginform.getElementsByTag("input");

List<String> paramList = new ArrayList<String>();

for (Element inputElement : inputElements) {


String key = inputElement.attr("name");

String value = inputElement.attr("value");

if (key.equals("Email"))

value = username;

else if (key.equals("Passwd"))

value = password;

paramList.add(key + "=" + URLEncoder.encode(value, "UTF-8"));

// build parameters list

StringBuilder result = new StringBuilder();

for (String param : paramList) {

if (result.length() == 0) {

result.append(param);

} else {

result.append("&" + param);

return result.toString();

public List<String> getCookies() {

return cookies;
}

public void setCookies(List<String> cookies) {

this.cookies = cookies;

Output

Sending 'GET' request to URL : https://accounts.google.com/ServiceLoginAuth

Response Code : 200

Extracting form data...

Sending 'POST' request to URL : https://accounts.google.com/ServiceLoginAuth

Post parameters : dsh=-


293322094146108856&GALX=CExqdUbvEr4&timeStmp=&secTok=&_utf8=%E2%98%83

&bgresponse=js_disabled&Email=username&Passwd=password&signIn=Sign+in&Persiste
ntCookie=yes&rmShown=1

Response Code : 200

Sending 'GET' request to URL : https://mail.google.com/mail/

Response Code : 200

<!-- gmail page content.....-->

Das könnte Ihnen auch gefallen