-
오토핫키 연습일지 #13] WinHttp 로그인 상태 유지오토핫키/연습일지 2022. 11. 5. 01:10
https://apsalman.tistory.com/75
https://www.youtube.com/channel/UC6hW-NrL9CxDQd2IzWbekYA
연습 #13
https://apsalman.tistory.com/78
일전에 WinHttp 를 사용하여 로그인해야만 볼 수 있는 정보들을 확인하는 법에 대해서 알아봤었다.
이번에는 로그인 세션을 유지하고 동적크롤링을 하는 법에 대해 연습하였다.
시작
우선 로그인 세션을 유지하는 방법을 간단하게 이해해보려 한다. 전문가가 아니기 때문에 느낌으로만
사이트에 접속하는 순간 나라는 존재를 매번 확인하지 않도록 임시 주민등록증을 부여한다.(세션)
이 값을 들고 계속 Post Get 을 해주면 압살맨 너구나! ㅇㅋ 그에 맞는 정보줄게 가 되는 것이다.
결국 SessionID 라는 identification 을 준다. 그 이름은 JSessionID 와 phpSessionID 두가지였다.
어쨋든 이 쿠키값을 얻으면 로그인을 유지할 수 있다는 거겠지?
오늘은
오토소장님이 관리하시는 사이트인 오토연구소를 이용해보겠다.
robots.txt 에 들어가서 크롤링 허용 여부를 확인해준다. 일단은 허용한다고 한다. 물론 과도한 트래픽을 주면 안된다.
wh := ComObjCreate("WinHttp.WinHttpRequest.5.1") wh.Open("Get", "https://autolabs.co.kr/") wh.Send() RegExMatch(wh.GetResponseHeader("set-cookie"), "(.*?);", PHPSESSID)
사이트에 처음 접속하여 세션값을 얻어준다.
wh.GetResponseHeader("set-cookie") 로 얻을 수 있고 이 결과값을 정규식으로 원하는 값만 잘라주면 된다.
로그인
각종 커뮤니티 사이트들은 거의 대부분 로그인 시 요구하는 정보가 같다.
wh.Open("Post", "https://autolabs.co.kr/") 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://autolabs.co.kr/") wh.SetRequestHeader("Cookie", PHPSESSID) wh.Send("error_return_url=%2F&mid=HOME&ruleset=%40login&act=procMemberLogin&success_return_url=%2F&user_id=ㅇㅇㅇㅇ&password=ㅇㅇㅇㅇ")
로그인 정보를 헤더와 함께 Post 해준다.
Msgbox, % wh.Status
결과를 보자. 200 이 떴다면 성공인 것이다.
이 로그인 세션을 계속 유지하면서 로그인 시 보이는 정보들을 얻어갈 수 있을 것이다.
wh.Open("Post", "https://autolabs.co.kr/") 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://autolabs.co.kr/") wh.SetRequestHeader("Cookie", PHPSESSID)
우리가 처음에 따놨던 이 정보들만 계속 같이 보내주면 된다. ㅎㅎ 정말 쉽지 않은가?
'오토핫키 > 연습일지' 카테고리의 다른 글
오토핫키 연습일지 #15] 자바스크립트를 오토핫키에서 실행하기 (0) 2024.10.11 오토핫키 연습일지 #14] 네이버 카페 아이디 이메일 추출 (1) 2022.11.15 오토핫키 연습일지 #12] WinHttp 를 이용하여 사이트 로그인 (0) 2022.11.02 오토핫키 연습일지 #11] 메이플 오토룬 (1) 2022.10.06 오토핫키 연습일지 #10] 정해둔 파일들 손쉽게 실행하기 feat. 휠다운, 툴팁 (0) 2022.09.28