Allen's 데이터 맛집

[1] Java를 사용한 자동 로그인: Robot 클래스를 활용한 원시적 접근 본문

etc Project/셀레니움을 활용한 이메일 자동 로그인

[1] Java를 사용한 자동 로그인: Robot 클래스를 활용한 원시적 접근

Allen93 2024. 9. 19. 15:09
이번 포스팅에서는 Java의 Robot 클래스를 사용하여 브라우저 자동 로그인을 구현하는 방법을 소개하겠습니다. 이 방법은 키보드와 마우스를 제어하여 자동으로 웹사이트에 로그인하는 간단한 예제입니다. 이 프로젝트는 자동화에 대한 기초 개념을 배우는 데 매우 유용합니다.

 

프로젝트 목표

 

이 프로젝트의 목표는 다음과 같습니다:

  1. Robot 클래스를 사용하여 브라우저를 실행하고, 특정 웹사이트에 접속합니다.
  2. 키보드와 마우스를 제어하여 자동으로 로그인 정보를 입력하고 로그인합니다.

 

코드 설명

아래는 Robot 클래스를 사용한 자동 로그인 코드입니다:

import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.*;

public class RobotDemo {
    public static void main(String[] args) {
        
        Runtime rt = Runtime.getRuntime();
        String exeFile =  ""; // 실행할 파일 위치
        Process p;
        
        int URLaddress[] = {
            KeyEvent.VK_D,
            KeyEvent.VK_A,
            KeyEvent.VK_U,
            KeyEvent.VK_M,
            KeyEvent.VK_PERIOD, // . 온점
            KeyEvent.VK_N,
            KeyEvent.VK_E,
            KeyEvent.VK_T,
            KeyEvent.VK_ENTER
        };

        int ID[] = {
            KeyEvent.VK_S,
            KeyEvent.VK_I,
            KeyEvent.VK_L,
            KeyEvent.VK_V,
            KeyEvent.VK_E,
            KeyEvent.VK_R,
            KeyEvent.VK_9,
            KeyEvent.VK_4
        };

        int PW[] = {
            KeyEvent.VK_, // 여기에 비밀번호 키 입력 추가
            // ...
        };

        try {
            Robot robot = new Robot();
            p = rt.exec(exeFile); // 프로그램 실행
            p.waitFor();

            Thread.sleep(1000);
            robot.mouseMove(412, 53); // 주소창에 마우스 이동 후 클릭
            robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
            robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);

            for (int i = 0; i < URLaddress.length; i++) { // naver.com 입력 후 엔터
                robot.keyPress(URLaddress[i]);
                robot.keyRelease(URLaddress[i]);
            }

            robot.delay(1000); // 페이지 로딩을 위해 1초 딜레이

            robot.mouseMove(1302, 313); // naver.com의 로그인 버튼 클릭
            robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
            robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);

            robot.delay(1000); // 페이지 로딩을 위해 1초 딜레이

            robot.mouseMove(697, 239); // ID 텍스트 상자 클릭
            robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
            robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
            robot.delay(1000); // 페이지 로딩을 위해 1초 딜레이

            for (int i = 0; i < ID.length; i++) { // ID 입력
                robot.keyPress(ID[i]);
                robot.keyRelease(ID[i]);
            }

            robot.mouseMove(712, 297); // PW 텍스트 상자 클릭
            robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
            robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);

            for (int i = 0; i < PW.length; i++) { // PW 입력
                robot.keyPress(PW[i]);
                robot.keyRelease(PW[i]);
            }

            robot.mouseMove(790, 390); // LOGIN 버튼 클릭
            robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
            robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);

            System.exit(0); // 시스템 종료

        } catch (AWTException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

주요 코드 설명

  1. 브라우저 실행 및 주소 입력:
Runtime rt = Runtime.getRuntime();
String exeFile =  ""; // 실행할 파일 위치
Process p;

 

  • Runtime.getRuntime().exec(exeFile);을 사용하여 브라우저를 실행합니다.

 

2. Robot 클래스를 사용한 키보드 입력:

Robot robot = new Robot();

 

 

  • Robot 객체를 생성하여 키보드와 마우스를 제어합니다.
  • URL 입력과 로그인 ID, PW 입력을 각각의 배열에 저장하고, 이를 Robot 클래스를 사용하여 입력합니다.

 

3. 마우스 이동 및 클릭:

robot.mouseMove(412, 53); // 주소창에 마우스 이동 후 클릭
robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);

 

 

  • mouseMove 메서드를 사용하여 마우스를 이동시키고, mousePress와 mouseRelease 메서드를 사용하여 클릭 이벤트를 발생시킵니다.

 

4. 딜레이 추가:

robot.delay(1000); // 페이지 로딩을 위해 1초 딜레이

 

 

  • delay 메서드를 사용하여 페이지 로딩을 위한 딜레이를 추가합니다.

5. 로그인 정보 입력:

for (int i = 0; i < ID.length; i++) { // ID 입력
    robot.keyPress(ID[i]);
    robot.keyRelease(ID[i]);
}

 

반복문을 사용하여 ID와 PW를 입력합니다.


Java의 Robot 클래스를 사용하여 간단한 브라우저 자동화와 로그인 과정을 구현하는 예제입니다. 이 코드를 통해 키보드와 마우스를 제어하여 웹 자동화를 구현하는 기본적인 방법을 배울 수 있습니다. 더 나아가 Selenium과 같은 프레임워크를 사용하여 보다 정교하고 강력한 자동화 시스템을 구축할 수 있습니다.


https://github.com/siilver94/Automatic-Email-Sign_in

 

GitHub - siilver94/Automatic-Email-Sign_in

Contribute to siilver94/Automatic-Email-Sign_in development by creating an account on GitHub.

github.com