2021.05.01 - [기타] - [WEB] Selenium으로 트위터 자동 로그인하기 (JAVA)

 

[WEB] Selenium으로 트위터 자동 로그인하기 (JAVA)

driver.get("https://twitter.com/"); //id wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//*[@id=\"react-root\"]/div/div/div/main/div/div/div/div[1]/div[1]/div/form/div/div[3]/div")));..

nato-blog.tistory.com

  위 글에 써진 대로 트위터 / 그랑블루의 쿠키를 취득, 한번 로그인한 정보를 유지하도록 만들었다

 

0. 기획 변경

 

  처음에는 그랑블루 계정들을 다 흝으며 소환석 데이터를 얻어 볼 생각이었지만, 힘들겠다는 생각이 들었다.

 

  우선, 소환석은 이벤트 등으로 신규 소환석을 얻음에 따라 자주 변경되는 데이터이다. 데이터를 얻는건 어렵지 않지만, 바뀌는 데이터를 추적하는건 다른 문제이다.

 

  또한 현재 신규계정번호가 3000만을 넘었으며, 작년 했던 켐페인이 "유저수 2700만 기념 켐페인!" 이었단걸 생각하면 현재 유저수는 못해도 2800만에 근접하지 않았을까 싶었다.

  이 경우 1초에 1명씩 확인한다 하면 하루 14만명 확인이 가능하며, 총 200일은 돌려야 전체 유저를 확인하게 된다.

  그정도면 내가 친구를 납치해다 만두만 먹이며 그랑블루를 시키는 쪽이 더 빠르겠다 싶었다.

 

  그래서 특정랭크 이상의 유저만 관리하고, 일정 주기마다 데이터 갱신을 돌리는 식으로 하려고 생각해봤지만, (ex. 225랭크 이상인 유저가 40만이라면, 3~4일정도면 갱신 가능하다) 이 역시 처음 한번 분류하는게 힘들고, 랭크의 상승을 알기 힘들다는게 문제가 되었다.

 

  하여 기획을 변경해 게시판처럼 사람들이 자기 소환석 현황을 게시하고, 다른 사람들이 이를 확인할 수 있도록 하는 정도는 쉽게 만들수 있지 않을까 생각했다.

  기존 SNS/커뮤니티에 존재하던 친구찾기 게시글들을 한 장소에 모아놓는 느낌?

 

  여기서 게시판을 따로 사이트를 만들지 말고, 트위터에 게시글을 올리는 식으로 하면 좋겠다고 생각했다.

  트위터라면 누구나 쉽게 이용 가능하고, 검색 시스템같은것도 잘 지원해 조건 설정도 가능하니 말이다.

 

1. 플레이어 데이터 획득

 

  로그인 세션을 문제없이 취득했다면, 사용자 id만 있다면 누구든지 접근해서 데이터를 얻어낼 수 있다.

 

  그러므로 우선 어떤 데이터들을 획득할 지 정리해 클래스로 만들어 보았다.

  우선 입력된 id, 이름, 랭크(레벨)과 원 목적이던 14개의 소환석 정보를 획득토록 하였다.

  summon은 img태그에 저장된 이미지 주소를 저장하며, summonLevel은 text로 된 상세설명을 저장한다.

 

  데이터 추출은 간단하게, 해당 주소에 접속 후 html 태그를 찾아 내부 요소를 추출하는 식으로 간단하게 완료하였다.

 

  데이터 정상 추출을 확인하기 위해 이름, rank, 이미지를 표시할 뿐인 간단한 페이지를 만들었다.

 

 

  정상적으로 데이터를 띄우는 걸 볼 수 있다.

 

2. 이미지 추출, 합성

 

  저장한 이미지 url들은 ImageIO를 사용해 실제 image객체로 저장한 후, Graphics를 사용해 하나의 이미지로 합쳐주었다.

 

  배경이 될 이미지를 추출하고, png를 jpg로 변환한 후 graphics를 만든다.

 

  그리고 소환석들의 url으로 이미지를 추출해, size를 조정한 후 graphics로 그리도록 하였다.

 

 

  파일의 저장 경로는 해당 사용자의 id로 폴더를 만들어 저장하도록 했다.

 

 

  결과로 나온 이미지로, 엉망진창이지만.. 일단 의도한대로 작동한다는 점에 만족하고 다음 작업으로 넘어가기로 했다.

+ Recent posts