매크로 프로그램 다운로드
https://autopeak.co.kr
#매크로 #메크로 #매크로프로그램 #엔지엠소프트웨어 #지존오토 #엔지엠에디터 #엔지엠플레이어 #오토핫키 #비활성매크로 #하드웨어매크로 #기계식매크로 #마우스광클릭 #키보드매크로 #이미지서치 #이미지매치 #이미지맥스 #블로그 #카페 #인스타그램 #유튜브 #소셜네트워크 #카카오톡 #텔레그램 #자동화
안녕하세요. 업무 자동화 RPA 매크로 오토픽입니다.
오늘 주제는 네이버, 예스24, 인터파크, 멜론 티켓팅등등... 왜 실패하는지에 대해 알아보도록 하겠습니다.
여러분들이 티켓팅이나 수강신청할 때 서버 시간을 알려준다는 사이트를 이용하는 분들이 많을겁니다.
아래와 같은 사이트가 대표적인데요.
네이버 선착순을 위해 네이버 서버의 시간을 알아야 합니다.
일반적으로 프로그래밍을 할 때 서버의 시간이 기준이 되기 때문입니다.
우리가 컴퓨터에서 시간을 처리할 때는 내 컴퓨터의 윈도우 시계를 기준으로 하듯이 서버도 동일합니다.
인터파크 티켓팅을 기준으로 말해보면 아래와 같이 ticket.interpark.com을 입력해서 서버 시간을 가져와야 합니다.
인터파크 또는 네이버의 서버 시간을 가져오더라도 티켓팅을 실패하는 경우가 대부분입니다.
매크로를 사용하시는 분들도 이 사이트의 서버 시간을 보고 선착순 시간이 되기 전 매크로를 실행하곤 하는데요.
사실, 자바스크립트를 조금이라도 아시는 분들이라면 이게 정확하지 않다는걸 금방 알 수 있습니다.
당연한 이야기겠지만 개발자들은 이런 사이트를 사용하지 않습니다. 오차가 크기 때문입니다.
서버의 시간을 알아내는 방법은 여러가지가 있는데요. 가장 간단한 방법은 서버로 요청(Request)을 보내서 응답 헤더를 분석하는것입니다.
네이버 티켓팅을 기준으로 서버에 Request를 보내보면 아래와 같은 헤더 정보를 보내줍니다.
서버 시간은 Date에 담겨있는 Thu. 09 Jan 2025 03:51:59 GMT입니다.
보시면 아시겠지만, 1000분의 1초까지 데이터를 주지는 않습니다. 그래서, 일반적으로 0.001~0.999초까지 오차가 발생할 수 있습니다.
해당 서버의 시간이 12:00:00.000인지 12.00.00.999인지 알 수 없다는 뜻입니다. 최대 1초가량 차이가 발생하게 됩니다.
한가지 더 참고해야 할 사항은 Request(요청)와 Response(응답) 사이에 소요되는 시간입니다.
네트워크 탭을 보면 요청에 0.23ms가 소요되었고 응답은 41.45ms가 소요되었습니다.
전체 시간은 50.32ms입니다. 이 값까지 보정해줘야 그나마 서버 시간에 가까워집니다.
그렇더라도 응답 헤더에 초까지만 알려줘서 결국은 운에 맞겨야 하는 수밖에 없습니다.
하루에 한번씩 선착순에 응모할 수 있다면 일주일 내내 실패할 수 있는 것입니다.
1000분의 1초를 다투는 선착순 티켓팅에서 1초는 엄청난 차이이기 때문입니다.
아래는 오토픽 매크로의 서버 시간 동기화 액션을 실행한 결과입니다.
인터파크 서버 시간을 요청한 후 결과 값을 가져왔는데요. 자동 보정을 True로 설정하면 여러가지 알고리즘을 통해 시간을 자동 보정해줍니다.
이 액션에 대한 자세한 내용은 [ 서버 시간 가져오기 도움말 ]을 참고하세요.
※ 서버의 시간을 내 컴퓨터 윈도우 시계와 동기화 하려면 윈도우 시계 동기화 사용 옵션을 True로 설정해야 합니다.
네이버 또는 인터파크와 같은 서버 시간 알려주는 사이트의 문제점은 시간을 가져왔더라도 시간이 흐를수록 점점 더 오차가 커진다는 것입니다.
이유는 웹페이지에서 시간을 표시하는 함수가 2종류인데요. 2개 모두 시간을 정확하게 체크하지 못한다는 것입니다.
대표적으로 setTimeout과 setInterval을 사용해서 화면에 시간을 표시합니다. 사람들이 흔히 하는 착각이 있는데요.
프로그래밍에서 시간을 정확하게 처리해줄거라는 착각입니다. 하지만, 이 둘은 오차가 꽤 큰편입니다.
그래서, 정확한 시간을 제공해야 하는 사이트를 만들 때 setTimeout과 setInterval 같은것을 믿으면 안됩니다.
간단하게 setTimeout과 setInterval을 확인해볼 수 있는데요. 아래와 같은 코드를 하나 작성 해봤습니다.
setTimeout의 두번째 인자가 함수를 호출하는 주기입니다. 1000이기 때문에 1초마다 한번씩 실행됩니다.
그리고, devtools의 콘솔에 시간을 찍어주도록 했습니다.
메모장에 위 코드를 작성한 후 timer.html로 저장하세요. 그리고, 더블 클릭해서 실행하세요.
devtools의 console을 확인 해보면 아래와 같이 1초마다 한번씩 로그를 찍어주는걸 알 수 있습니다.
그런데, 처음 실행을 제외하고 그 다음부터는 점점 느려지는걸 알 수 있습니다.
정확하게 시간을 처리하고 있다면 0, 1000, 2000, 3000, 4000과 같이 출력되어야 합니다.
이번에는 setInterval을 사용해볼까요? 두 함수의 시간 처리 메커니즘이 다르기 때문에 코드도 약간 달라집니다.
이번에도 동일하게 결과를 확인 해보면 setTimeout과 별다른 차이를 느끼지 못할것입니다.
내부에서 처리하는 메커니즘은 다르지만, setTimeout은 매인 콜스택이 비어 있을때만 실행하기 때문에 약간의 지연이 발생합니다.
반면에 setInterval은 이런 문제에서 자유롭지만 인터벌이 돌아올 때마다 함수를 초기화하는 문제가 있습니다.
따라서, 뭘 사용하던간에 시간이 지연되는 문제는 해결할 수 없게됩니다.
참고로, 함수를 초기화하는 setInterval은 함수 사이의 간격이 보장되지 않지만, setTimeout은 보장된다는 차이점도 있습니다.
아래는 setInterval을 실행한 결과입니다. setTimeout과 차이가 없죠?
그래서, 서버 시간을 알려주는 사이트에서 시간을 알아내서 연타를 하더라도 이미 늦었거나 느낌으로 보정해서 누르더라도 실패하게 됩니다.
사실, 응답 시간과 절대 알 수 없는 밀리초까지 느낌만으로 버튼을 누르는건 크게 의미가 없다고 생각합니다.
경쟁이 심하지 않은 티켓팅이나 예매, 수강신청, 부킹, 테니스, 축구, 대관 예약이라면 그냥 매크로를 사용하는게 좋습니다.
오토픽과 같은 유료 매크로가 아니더라도 챗gpt를 이용해서 파이썬 매크로를 만들어서 사용해도 됩니다.
대부분의 업무 자동화는 챗gpt에 질문만 잘하면 파이썬 프로그램을 뚝딱 만들어줍니다.
다만, 유료 매크로 프로그램인 오토픽의 경우에는 밀리초까지 알려주지 않는 데이터를 수십회 요청해서 시간을 받아옵니다.
이 간격을 통계적으로 처리해서 정확한 밀리초 시간을 알아낼 수 있습니다.
예를 들어서 1초 간격으로 10회 요청한 시간에서 초가 바뀌는 부분들을 간격으로 윈도우 시계에서 1000분의 1초로 보정합니다.
이렇게하면 좀 더 정확한 시간을 알아낼 수 있고 다만, 0.1프로라도 성공 확률을 높일 수 있습니다.
물론, 선착순 티켓팅도 시간과 돈이 무적의 치트키이긴 합니다.
다수의 컴퓨터에 빠른 인터넷 회선을 가지고 매크로를 사용하는 사람을 이길수는 없습니다.
긴 글의 내용이긴 한데요. 사람이 인지하는 속도보다 오토픽과 같은 자동화 프로그램을 이용하면 빠르게 클릭이 가능합니다.
아래는 선착순이나 티켓팅은 아니지만, 기계가 판단하고 클릭하는 속도를 체감해볼 수 있습니다.
[ 각종 자동화 매크로 및 RPA 프로그램 제작 해드립니다. ]
[ 초보자도 쉽게 따라할 수 있는 기초 학습 강좌 보기 ]
원본 글 보기
https://autopeak.co.kr/bbs/board.php?bo_table=product99
댓글