/naver-vaccine-macro

네이버 잔여백신 예약 매크로

Primary LanguagePython

💉 네이버 톡톡을 이용한 네이버 백신 매크로

Screen Shot 2021-08-05 at 3 32 02 AM

결론 먼저 말씀드리면, 이 매크로로 백신을 신청하는 것은 불가능합니다.

이유는 잔여백신이 생길 경우 알람이 네이버 알림 > 카카오톡 알림 > 네이버 톡톡 순이기 때문에 불가능.. ㅠㅠ

실험 결과 네이버 톡톡은 네이버 알림 발생 후 10초 정도 뒤에 오는 것을 확인했습니다.

기존 네이버 톡톡으로 들어가는 방식에서 네이버 모바일 진입을 통한 방식으로 바꾸었습니다.

link 1: , link 2: , link 3: 에 들어가야 하는 곳은 병원의 코드인데

병원의 코드는 아래와 같이 추출할 수 있습니다.
  1. 내가 알림예약한 병원 네이버 지도로 들어가기

  2. 병원 코드 추출

스크린샷 2021-07-29 오전 10 12 13



💉 필수 설치

icons8-python-48Python 3.9 + Module ( selenium, bs4, tkinter, time )

cd desktop
cd naver-vaccine-macro
pip install -r requirements.txt  or  pip3 install -r requirements.txt

icons8-google-48 chormedriver

  • 설치되어 있는 크롬의 버전과 설치할 webdriver의 버전이 일치해야 합니다. ( 오류의 원인 )

스크린샷 2021-07-21 오전 2 33 07


다운로드 링크



💉 사용 방법

1. python을 실행 시킨다.

2. webdriver파일 선택 후, 준비 클릭

3. 네이버 로그인 후 네이버 백신예약 1회인증

4. 네이버 톡톡으로 들어가 네이버 우리동네 백신알림 채팅창 들어가기

6. 시작 클릭 (pyhton 창에 시작 누른 후 몇초 지났는지 나옴)

7. 다시 시작하려면 다시 시작하거나, 리셋 버튼 클릭 (다시 시작할 경우 백신예약 인증 다시해야함)

1. naver-vaccine-macro.py 실행

2. chromedriver.exe 선택

3. link 1, link 2, link 3에 병원 코드 입력

4. '준비' 누르면 화면이 뜸

5. 네이버 로그인 후 잔여백신 인증서 확인

6. '시작' 버튼 클릭

7. 만약, 꺼졌다면 '리셋' 누르고 다시 '시작' 클릭



💉 작동 원리

가장 마지막 알람이 왔던 시간을 웹 크롤링을 통해 저장해둡니다.

1초에 한번씩 웹을 크롤링하며 가장 마지막 알람의 시간을 가져오는데

이 값이 바뀌게 되면 '지금 신청하기' 버튼을 클릭합니다. (알람이 새로 옴)

새 창이 열리게 되면, 웹 드라이버로 다루고 있는 창을 바꿔주고, 동의합니다 버튼 클릭 후 백신 예약 클릭

실시간 웹 크롤링을 통해 접종 예약하기 버튼이 활성화 되어 있는지를 확인합니다.

활성화 되지 않았을 경우 다음 탭으로 넘어가서 다시 크롤링을 합니다.

그렇게 첫번째 두번째 세번째 탭을 크롤링한 뒤 1.3초 대기하다가 다시 반복합니다.



2021-07-29.10-23-05.mp4



💉 시도

제가 직접 2차례 시도를 해보았습니다.

결과는 2시도 0성공 2실패 서두에 말했다시피, 네이버알림 > 카카오톡 > 네이버톡톡 순으로 오기 때문에

네이버톡톡으로 바로 들어간다 쳐도 너무 느려요.. (네이버톡톡에서는 바로 반응합니다.)

사람들이 1초 만에 반응하기 때문에 10초 정도 늦게 들어가면 못한다고 보시면 됩니다.

아마 네이버 측에서 막은 것 같기두...

아무튼, 저는 그냥 순서가 오면 그때 맞으렵니다.....

PC 매크로는 이제 거의 완전히 막힌 것 같습니다.

이유는 PC에서 네이버 백신예약 인증을 하게되면 인증서가 10분 밖에 유지가 되지 않기 때문에

10분마다 인증서를 갱신해줘야하는데, 이 과정이 매우 귀찮습니다.

또한 실험결과 동일 기기에서는 로그아웃이 되고 로그인이 안되는 현상이 발생한 것을 확인했습니다.

따라서, 매번 10분 마다 다른 환경의 기기에서 매번 인증서를 갱신한다? 완전히 막혔다고 보는게 맞는 것 같습니다.