-
매크로 만드는 법] 4. 인터넷에서 데이터 가져오기 WinHttpRequest오토핫키/속성 강의 2022. 12. 13. 06:58
https://apsalman.tistory.com/75
https://www.youtube.com/channel/UC6hW-NrL9CxDQd2IzWbekYA
시작
사실 이 부분은 적을까 말까 고민을 좀 했다. 왜냐면 이미 연습일지를 포함해서 너무도 많은 포스팅을 했기 때문이다.
하지만 실전에서 사용하려면 조금 더 설명을 해야하지 않을까 생각이 들어 정리를 해보려 한다.
우선은 Winhttp 의 개념을 알아야 하기 때문에 WinAPI 를 배우러 MSDN 에 가라. 라고 하면 너무 날로 먹는 것 같으니까
간단하게 설명하겠다.
WinHttpRequest 는 Microsoft 에서 제공하는 API 이다.
API 는 사용자와 서버 혹은 프로그램의 중간다리라고 생각하면 편하다.
식당에서 주문을 받는 사람 혹은 키오스크 쯤으로 생각하면 된다.
튜토리얼
여기부터는 WinHttp 를 식당에 비유하여 설명할 것이다. 맞지 않는 정보가 있다면 MSDN 을 참고하자. (날먹)
어쨋든 메뉴판도 보면 하나의 규격이 있다.
음식이름 | 음식의 설명 | 들어가는 식재료명 | 열량 | 가격 등등이 있다.
물론 가게마다 달라서 여러가지 정보가 생략되는 경우도 있다.
그래서 우리는 먼저 WinHttp 에 음식을 주문하고 음식을 받아야한다.
먼저 식당에 들어간다.
wh := ComObjCreate("WinHttp.WinHttpRequest.5.1") wh.Open("Post", "https://tailstar.net/index.php?act=procMemberLogin")
ComObjCreate 는 나는 오브젝트 콜이라고 부른다. 객체생성 이라고 하면 될까?
wh 에 WinHttp 를 지정할거야. 라는 뜻이다.
wh.Open("Post", URL) 은 내가 지정하는 URL (식당) 문을 열고(Open) 음식을 요청(Post)할 것이라는 뜻이다.
그런데 WinHttp 라는 식당은 예약제였다. ㅅㅂ 신분확인을 해줘야 하는데 이 새끼들이 좀 까다롭다.
wh.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36") wh.SetRequestHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9") wh.SetRequestHeader("Referer", "https://tailstar.net/index.php?mid=main&act=dispMemberLoginForm") wh.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded")
나 이런 대가리(Header) 를 가진 사람이야 라고 지금 카운터에 존나 쌔게 외쳤다.
보통 Post 할때는 이 4가지 정보
User-Agent | Accept | Referer | Content-Type 을 헤더로 지정해줘야 한다.
wh.Send("error_return_url=%2Findex.php%3Fmid%3Dmain%26act%3DdispMemberLoginForm&mid=main&vid=&ruleset=%40login&success_return_url=https%3A%2F%2Ftailstar.net%2F&act=procMemberLogin&xe_validator_id=modules%2Fmember%2Fskins&user_id=아이디&password=비밀번호")
자 이렇게 음식 주문이 들어갔다.
Msgbox, % wh.Status
주문이 들어갔는지 확인해준다. 200 이 뜨면 들어간 것이다. 잘 들어갔는지는 장담하지 못한다.
wh.WaitForResponse
음식이 올 때까지 기다려준다.
clipboard := wh.ResponseText
도착한 음식을 내 위장에 담아준다.(복사한거임)
음식이 잘 도착했다. 만약 제대로 도착하지 않았다면 로그인했을 때만 보이는 내 닉네임이 보이지 않았을 것이다.
본격적인 API 활용
이제 우리는 본격적으로 API 를 사용할 것이다.
자 위에 2장의 사진을 보자. 이것이 API 이다. 이해가 되는가?
롤 전적검색 사이트 = 롤에서 제공하는 API
메이플 캐릭터 검색 = 메이플에서 제공하는 API
로아 경매장 검색 = 로아에서 제공하는 API
그렇다. 게임들 마저도 API 를 유저들에게 제공한다. 제공하는 이유는 다음과 같다.
쓸데없는 트래픽을 마구마구 주어서 서버에 과부하를 주는 것을 방지
서비스사의 서버에 직접 접근하여 데이터를 수집 하는 것을 방지
API 는 아까 말했다. 주문 받는 사람 혹은 키오스크라고
만약에 주방에서 주문도 받고 음식도 가져다주고 결제도 한다면?
존나 정신없고 한 곳에 사람과 움직임이 몰리면서 정체현상이 생길 것이다.
그것을 방지하기 위해 카운터를 두고 키오스크 (이게 API 임) 를 두는 것이다.
본격적인 내용인 API 활용은 2편에서 만나보자. (내용이 생각보다 길어짐)
'오토핫키 > 속성 강의' 카테고리의 다른 글
매크로 만드는 법] 3-1. 게임 내 픽셀을 찾은 후 조건 만족 시 발동 feat. 메이플스토리 (0) 2022.12.19 매크로 만드는 법] 4-1. 인터넷 데이터 가져오기 API 의 활용 (0) 2022.12.15 매크로 만드는 법] 3. 게임 매크로를 만들기 (0) 2022.12.09 매크로 만드는 법] 2. 매크로를 만들기 위한 준비물 (0) 2022.12.07 매크로 만드는 법] 1. 언어의 선택 (0) 2022.12.07