반응형

안녕하세요, 

본 원문은 https://github.com/Xeo786/Rufaydium-Webdriver 의 자료를 가지고 제작되었습니다.

 

크롬 셀레니움을 사용할때 오토핫키, 혹은 다른 언어도 크롬 드라이버를 사용하였습니다. 

이 Rufaydium의 제작자의 설명을 번역하면,

 

"브라우저와 상호 작용하기 위한 AutoHotkey WebDriver 라이브러리. 루페이디움은 웹드라이버 세션을 생성하는 동안 자동으로 최신 웹드라이버를 다운로드하고 브라우저 버전에 따라 웹드라이버를 업데이트합니다."

"지원되는 브라우저: 크롬, MS 엣지, 파이어폭스, 오페라."

 

해당 루페디움 을 다운로드하시고 사용하시면됩니다 .

 

기본적인 소스는 

 

#Include Rufaydium.ahk
/*
	Load "chromedriver.exe" from "A_ScriptDir"
	In case Driver is not yet available, it will Download "chromedriver.exe" into "A_ScriptDir"
	before starting the Driver.
*/
Chrome := new Rufaydium("chromedriver.exe")


f1::
/*
	Create new session if WebBrowser Version Matches the Webdriver Version.
	It will ask to download the compatible WebDriver if not present.
*/
Page := Chrome.NewSession()
; navigate to url
Page.Navigate("https://www.autohotkey.com/")
return

f12::
Chrome.QuitAllSessions() ; close all session 
Chrome.Driver.Exit() ; then exits driver
return

 

위 처럼 되어있는데요, 

루페이디움 / 루페디움을 사용하는 방법은 위 깃 허브에 잘 나와있지만, 

 

네이버 로그인을 셀레니움으로 도큐먼트 식으로 보내면 캡챠때문에 막혀버리더라구요, 

 

이때 좋은 기능은 cdp 라는 기능을 사용하시면 되는데, 직접적인 타이핑 효과를 낼 수있습니다 .

 

f1::
Page := Chrome.getSessionByUrl("https://nid.naver.com/nidlogin.login?mode=form&url=https%3A%2F%2Fwww.naver.com")
if !isobject(page)
{
	Page := Chrome.NewSession()
	Page.Navigate("https://nid.naver.com/nidlogin.login?mode=form&url=https%3A%2F%2Fwww.naver.com")
}else{
	msgbox,64,안내, 객체오류
	return
}

Loop,{
Data:= Page.html ; 현재 Html 에 저장된 정보를 불러온다. 
		if(Rolad_Data != ""){
			RegExMatch(Data,"비밀번호 찾기",Login_ro_a)
			RegExMatch(Data,"아이디 찾기",Login_ro_b)
			RegExMatch(Data,"회원가입",Login_ro_c)
				if(Login_ro_a != "" and Login_ro_b != "" and Login_ro_c != ""){
						Page.cdp.QuerySelector("#id").sendkey("아이디")
						sleep,1500 ; 시간텀 삭제유무 
						Settings := Page.getElementsByclassname("input_row")[0]  ;비밀번호창클릭
						Settings.Click()
						sleep,2000; 시간텀 삭제유무 
						Page.cdp.QuerySelector("#pw").sendkey("비밀번호") ; 유저 비밀번호 
						sleep,1500 ;; 시간텀 삭제유무 
						Settings := Page.getElementsByClassName("btn_login")[0] ;로그인 버튼클릭
						Settings.Click()
						sleep,1500						
						msgbox,로그인성공!
                        break

				}
		}

}

 

의소스 코드로 네이버 로그인을하면 캡챠 없이 로그인이 가능한 것을 볼 수있습니다 .

여러가지의 방법이 있겠지만, 

 

기본적으로 네이버 네거티브 , : Page.Navigate 의 페이지 이동후 로딩이 끝난후 하단 로직이 실행되지만,

또다른 변수로 인해, 잘 불러오지 않았을경우

Data 의 정보가 공백이지 않을때 라는 조건을 달아주고

 

정규식으로 해당 정보에 로그인 페이지 내부에있는, 회원가입, 아이디 찾기 비밀번호 찾기의 문구 3가지가 있어야지만

아이디 / 비밀번호를 적는 행위를 하도록 하였습니다 .

 

 

이 루페이디움 라이브러리는, 실행즉시 크롬 드라이버를 자동으로 버전에 맞게 다운로드하고, 따로

Chrome. ~ 부분에 프로필 생성, 혹은 알트창 제거, 등 여러 문구가 있으니 찾아보시기 바랍니다 .

 

대표적으로 루페이디움 셀레니움의 기능이 여러가지가 있습니다.

해당 페이지로 들어가서 확인바라며,

 

페이지 스크롤기능

클릭기능

키 보내기

마우스 좌표클릭

마우스 클릭

쿠키 수집

탭 이동

등등 여러가지 기능들이있으니 참고바랍니다. 

 

 

 

반응형

+ Recent posts