반응형

안녕하세요, 

본 원문은 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. ~ 부분에 프로필 생성, 혹은 알트창 제거, 등 여러 문구가 있으니 찾아보시기 바랍니다 .

 

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

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

 

페이지 스크롤기능

클릭기능

키 보내기

마우스 좌표클릭

마우스 클릭

쿠키 수집

탭 이동

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

 

 

 

반응형
반응형

안녕하세요, 

매크로를 만들어보자 라는 타이틀을 가지고 찾아왔습니다. 

우리가 흔히 알고있는 광클매크로, 키보드 마우스 매크로 등 현재 배포되어있는 프로그램을 많이 사용하실텐데요,

 

리스트를 작성하여 자기가 원하는 매크로를 직접 등록하여 만들 수 있는 프로그램을 제작하려고합니다.

흔히 우리가 말하는, 자동화프로그램, 사무용프로그램, 게임 매크로등 여러가지 다방면으로 매크로를 작성할 수있는

 오토핫키를 사용하려고합니다. 다만, 게임에서 사용할경우 특정 N사 G사는 게임가드로 뮤텍스 등, 여러 우회방법이 필요합니다. 

 

우리가 만들 프로그램의 주요기능은 4가지입니다. 

 

1. 키보드 및 마우스를 컨드롤할 수있는

2. 딜레이를 넣을 수있는

3. 반복문을 사용하여 반복적인 작업을 할 수있는

4. 기타.

 

 

준비물 1.  : 오토핫키 다운로드 

https://peuming.tistory.com/2?category=940949 

 

오토핫키 강좌 - 오토핫키 다운로드 및 설치

안녕하세요 네이버 블로그를 운영하다 티스토리로 옴기게 되었습니다. 처음부터 시작하여, 누구나 쉽게 접할 수있는 오토핫키를 알려주는 강좌를 전해드리고자 이렇게 찾아뵙게되었습니다. 1.

peuming.tistory.com

 

준비물2. : 오토핫키 스크립트 편집기 

https://peuming.tistory.com/3?category=940949 

 

오토핫키 강좌 - 오토핫키 스크립트 편집기(SciTE4AutoHotkey) 및 한글패치

오토핫키 스크립트 편집기(SciTE4AutoHotkey) 프로그래밍을 할려면 편집기가 필요하겠죠? 메모장으로 적어서 하나하나 적을 수는없으니깐요, 그래서 이번에 권유드리는 편집기는 오토핫키 SciTE4AutoHo

peuming.tistory.com

 

준비물3. : 편집기 한글패치 

https://blog.naver.com/k6441630/222195323951

 

[설치편] 오토핫키 편집기( SciTE4AutoHotkey) 한글패치

이번에 소개해드릴 프로그램은 SciTE4AutoHotkey 한글패치 파일입니다. 다운로드는 첨부파일 확인해주...

blog.naver.com

 

준비물4. GUI 인터페이스를 만들 수 있는 프로그램 

https://peuming.tistory.com/4?category=940949 

 

오토핫키 강좌 - Smart Gui (스마트 구이) 다운로드

오토핫키 GUI 디자인 및 사용자편의를 위한 디스플레이 제작은 SmartGui를 사용하시면 됩니다. Duplicate Control : 컨트롤 복사 Move Control : 컨트롤 이동 Set Position : 컨트롤 위치,크기값 변경 Delete Co..

peuming.tistory.com

다운로드 해주시기 바랍니다 ! 

반응형
반응형

오토핫키를 이용하여 컴퓨터 재부팅시 프로그램 자동실행하는 방법을 알아보도록 하겠습니다. 

 


Fileinstall, key.exe, %A_WINDIR%\system32\key.exe                      ;key는 자신 프로그램명으로 수정가능합니다.
FileCreateShortcut, key.exe, %A_startmenucommon%\key.lnk
FileCreateShortcut, key.exe, %A_StartupCommon%\key.lnk


-해석 
Fileinstall, key.exe, %A_WINDIR%\system32\key.exe                       ;압축풀기 
FileCreateShortcut, key.exe, %A_startmenucommon%\key.lnk            ;시작메뉴에 key의 바로가기를 생성합니다
FileCreateShortcut, key.exe, %A_StartupCommon%\key.lnk               ;시작프로그램에 key의 바로가기를 생성.

 

 

 

반응형
반응형

#ClipboardTimeout

첫 번째 시도가 실패할 때 스크립트가 클립보드에 계속 액세스하는 시간을 변경합니다.

#ClipboardTimeout Milliseconds

Parameters

Milliseconds( 밀리세컨드 MS 표기 1000 = 1초)

간격의 길이(밀리초)입니다. 무기한으로 계속 시도하려면 -1을 지정하십시오. 한 번만 시도하려면 0을 지정하십시오. 이 지시문을 포함하지 않는 스크립트는 1000ms 시간 초과를 사용합니다.

Remarks

Some applications keep the clipboard open for long periods of time, perhaps to write or read large amounts of data. In such cases, increasing this setting causes the script to wait longer before giving up and displaying an error message.

This settings applies to all clipboard operations, the simplest of which are the following examples: Var := Clipboard and Clipboard := "New Text".

Whenever the script is waiting for the clipboard to become available, new threads cannot be launched and timers will not run. However, if the user presses a hotkey, selects a custom menu item, or performs a GUI action such as pressing a button, that event will be buffered until later; in other words, its subroutine will be performed after the clipboard finally becomes available.

This directive does not cause the reading of clipboard data to be reattempted if the first attempt fails. Prior to [v1.1.16], it did cause the script to wait until the timeout expired, but in doing so prevented any further data from being retrieved.

Like other directives, #ClipboardTimeout cannot be executed conditionally.

 

일부 응용 프로그램은 클립보드를 장시간 열어두는데, 아마도 많은 양의 데이터를 쓰거나 읽기 위해서일 것이다. 이러한 경우 이 설정을 늘리면 스크립트가 더 오래 기다린 후 오류 메시지를 표시합니다.


이 설정은 모든 클립보드 작업에 적용되며, 그 중 가장 간단한 예는 다음과 같습니다. Var := 클립보드 및 클립보드 := "새 텍스트".
스크립트가 클립보드를 사용할 수 있을 때까지 대기할 때마다 새 스레드를 시작할 수 없으며 타이머가 실행되지 않습니다. 그러나 사용자가 단축키를 누르거나, 사용자 지정 메뉴 항목을 선택하거나, 버튼을 누르는 등의 GUI 작업을 수행할 경우 해당 이벤트는 나중에 버퍼링됩니다. 즉, 해당 서브루틴은 클립보드를 사용할 수 있게 된 후에 수행됩니다.

이 지시문은 첫 번째 시도가 실패하더라도 클립보드 데이터 읽기를 다시 시도하지 않습니다. [v1.1.16] 이전 버전에서는 스크립트가 시간 초과가 만료될 때까지 대기했지만, 그렇게 함으로써 더 이상의 데이터를 검색할 수 없었습니다.
다른 지침과 마찬가지로 #Clipboard시간 초과를 조건부로 실행할 수 없습니다.

Clipboard, Thread

Examples - 예시 

Causes the script to wait 2 seconds instead of 1 second before giving up accessing the clipboard and displaying an error message.

스크립트가 클립보드 액세스를 포기하고 오류 메시지를 표시하기 전에 1초가 아닌 2초 동안 대기하도록 합니다.

#ClipboardTimeout 2000
 
반응형

+ Recent posts