2011년 8월 2일 화요일

SWT Browser를 이용한 웹페이지 자동 로그인

package org.javaya.test.swt;

import org.eclipse.swt.SWT;
import org.eclipse.swt.browser.*;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*;

/**
 * tistory에 접속해서 자동으로 로그인 한다.<br/>
 * SWT Browser 클래스를 이용해서 시스템 기본 웹브라우저로 결과를 출력<br/>
 * 이클립스에서 실행할 경우에는 <Ctrl+F11>로 실행하면 되며, <br/>
 * java app로 실행할 경우에는 SWT관련 jar 파일을 클래스패스에 추가해야 한다. <br/>
 * 서버에서 쿠키값을 받아서 이동하기 위해 http://www.tistory.com/ 으로 접속한 뒤 사용자 페이지로 이동 <br/>
 */
public class ShowTistory {
public String url1 = "http://www.tistory.com/"; // tistory main
public String url2 = "http://???.tistory.com/"; // 로그인 하고자 하는 tistory 주소

Browser browser = null;
Shell shell = null;

/**
* Runs the application
*/
public void run() {
Display display = new Display();
shell = new Shell(display);
shell.setText("Browser");
createContents(shell);
shell.open();

// Navigate to url1
browser.setUrl(url1);

while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
display.dispose();
}

final void setTitle(String title) {
this.shell.setText(title);
}

final void executeScript(String script) {
browser.execute(script);
}

final void maximize() {
shell.setMaximized(true);
}

/**
* Creates the main window's contents
* @param shell the main window
*/
private void createContents(Shell shell) {
shell.setLayout(new FillLayout());

// Create a web browser
browser = new Browser(shell, SWT.NONE);

browser.addStatusTextListener(new org.eclipse.swt.browser.StatusTextListener()
{
public void changed(org.eclipse.swt.browser.StatusTextEvent e) {
if (e.text.contains("완료")) {}
}
});

browser.addLocationListener(new org.eclipse.swt.browser.LocationListener()
{
public void changed(LocationEvent e) {
setTitle("Teleweb");
executeScript("document.getElementById('loginid').value = '???@daum.net';"); // tistory ID
executeScript("document.getElementById('password').value = '???';"); // tistory password
executeScript("login();");
executeScript("confirm('이동');");
executeScript("document.location.href='" + url2 + "';");
maximize();
browser.removeLocationListener(this);
}

public void changing(LocationEvent e) {
// TODO Auto-generated method stub
}
});

}

/**
* The application entry point
* @param args the command line arguments
*/
public static void main(String[] args) {
new ShowTistory().run();

}
}

댓글 없음:

댓글 쓰기