[SpringBoot] Selenium으로 구글 로그인하기

울상냥·2023년 7월 19일
0

SpringBoot

목록 보기
11/11
post-thumbnail
post-custom-banner

[SpringBoot] Selenium으로 Velog 로그인하기 에서 벨로그 로그인 화면을 띄워 사용자 로그인 후 인증정보를 가져오도록 했었다.
나는 깃헙 계정으로 가입했기 때문에 이외의 소셜 로그인은 테스트하지 못했었다.
그런데..

구글 로그인이 불가능했다!!! 셀레니움의 크롬드라이버로는 구글 로그인을 진행할 수 없었던 것이다.

파이썬의 경우에는 undetexted-chromedriver 로 간단하게 해결이 가능한 것 같은데 자바는 지원하지 않는 듯 하다.


크롬 디버그 모드

셀레니움 크롬드라이버로 크롬을 실행하게 되면 위의 캡쳐와 같이

Chrome이 자동화된 테스트 소프트웨어에 의해 제어되고 있습니다.

라는 문구를 확인할 수 있는데 이는 크롬이 테스트모드로 실행되기 때문이다.
때문에 구글에서는 브라우저 또는 앱이 안전하지 않을 수 있다며 로그인을 차단하는 것이다.

따라서 디버거 크롬으로 로그인을 진행해주어야한다.

chrome.exe

우선 어느 디렉토리에 크롬이 설치되어있는지 찾아봤다.

  • C:\Program Files\Google\Chrome\Application\
  • C:\Program Files (x86)\Google\Chrome\Application\

일반적으로 둘중 한 곳에 있다하는데 나는 Program Files에 있었다.

cmd에서 해당 경로에서
chrome.exe --remote-debugging-port=9222 --user-data-dir="C:\Selenium\ChromeData" 를 우선 실행해 보았다.

실행이 잘 된다.

init


		(...)

        Runtime.getRuntime().exec("C:/Program Files/Google/Chrome/Application/chrome.exe --remote-debugging-port=9222 --user-data-dir=\"C:/Selenium/ChromeData\"");
        
        (...)
        
        chromeOptions.setExperimentalOption("debuggerAddress", "127.0.0.1:9222");

다음과 같은 코드를 추가해 셀레니움이 디버그모드로 실행된 크롬창을 실행하도록 했다.
이후 구글로그인이 잘 되었다!!


쿠키 삭제

위에서 실행한 chrome.exe --remote-debugging-port=9222 --user-data-dir="C:\Selenium\ChromeData" 에서 --user-data-dir에 해당하는 경로에 쿠키정보 등이 담기게 된다.
따라서 로그인정보도 저장될 수 있는데 쿠키를 삭제하고 싶으면 해당 디렉토리를 삭제 해주면 된다.

로그아웃 이후에 자동로그인이 되지 않도록 로그아웃시에 해당 디렉토리를 삭제하도록 했다.

	public void logout() {

        FileSystemUtils.deleteRecursively(new File("C:/Selenium/ChromeData"));
    }

약간의 수정..

일회성이 아닌 이전의 쿠키정보를 갖고있기때문에 벨로그 로그인을 진행하게되면 자동로그인이 될 수 있다.
자동로그인이 진행되는 경우에 로그인 버튼이 클릭되지않도록 로그인 여부를 확인하는 함수를 작성했다.

	private boolean isLoggedIn() {

        return driver.manage().getCookieNamed("access_token") != null;
    }

로그인이 되어있지 않은 경우에만 로그인 버튼이 눌리도록 수정했다.


	(...)
    if (!isLoggedIn()) {
            driver.findElement(By.className(LOGIN_BUTTON_CLASS_NAME)).click();
        }

구글 로그인문제를 해결하느라 크롬 디버그 모드를 사용하게 되었는데 매번 로그인정보를 입력하지 않게되어 좋은거같다..ㅎ

profile
안되면 되게하라
post-custom-banner

1개의 댓글

comment-user-thumbnail
2023년 7월 19일

유익한 글 잘 봤습니다, 감사합니다.

답글 달기