안녕하세요!
이번 포스팅에서는 KTX/SRT 예매 자동화 시스템 (매크로) 구축 방안을 소개합니다.
본 시스템은 지정된 열차 좌석에 대해 백그라운드에서 무한 예매 기능을 포함합니다.
예매 성공 시 자동 결제도 가능하며, 모든 작업 진행 상황은 실시간 대시보드를 통해 모니터링도 가능합니다.
또한 텔레그램 bot을 이용하여, 예매 성공 여부를 확인하는 것도 가능합니다.
이번 포스팅은 코드 결과물이 전부이므로, 딱히 설명할 게 없습니다.
Docker 경로 생성
docker/ktx-macro 폴더를 생성합니다.
필자가 만든 ktx-macro 파일을 다운로드하여, 내부에 압축을 해제합니다.

위 사진과 같이 만듭니다.
텔레그램 bot 세팅
해당 링크를 참고하여, 텔레그램의 토큰과 채팅방 ID를 알아냅니다.
시놀로지 Docker 설치
SSH에 접속하여 sudo -i로 root 권한을 얻습니다.
다음 명령어를 통해, ktx-macro 경로로 이동합니다.
cd /volume1/docker/ktx-macro
다음 명령어를 통해 Docker 컨테이너를 설치합니다.
sudo docker build -t ktx-macro-app .

다음 명령어를 통해 Docker 컨테이너를 실행합니다.
sudo docker run -d -p 8282:8282 --name ktx-macro --restart unless-stopped -v /volume1/docker/ktx-macro/cards_data:/data/cards -e TELEGRAM_TOKEN="텔레그램토큰" -e TELEGRAM_CHAT_ID="채팅방ID" ktx-macro-app

이후 내부망IP:8282로 접속합니다.
외부망에서도 접근하기 위해, 내부/외부 8282 포트를 포트포워딩합니다.
각자의 환경에 맞게, 역방향 프록시 혹은 NPM 프록시를 설정합니다.
사용법

코레일 앱에 로그인하고, 우측 상단의 더보기에서 회원정보를 클릭합니다.

회원 ID를 메모합니다.
SRT의 경우도 마찬가지로 회원 ID를 알아냅니다.

열차 종류를 선택하고, ID와 비밀번호를 입력합니다.
입력된 ID에 연동되어, 카드 정보를 저장할 수 있습니다.

자동 결제를 원한다면 카드 정보를 입력할 수 있습니다.

카드 정보를 ID에 연동하여 영구 저장하고 싶다면
암호화 키를 입력하여 저장할 수 있습니다.
암호화 키는 카드를 불러오거나 삭제할 때에도 사용됩니다.
카드 정보는 ktx-macro/cards_data에 복호화되어 저장됩니다.

예약 정보를 입력하고, 자동 결제 여부를 체크하고 열차 조회를 클릭합니다.

예약하기 버튼을 클릭하여 대시보드에 매크로를 추가합니다.

테스트로, 예약이 가능한 ITX, KTX, 무궁화호를 예매했습니다.

SRT또한 정상적으로 예매가 가능합니다.

모두 예약이 잘 된 것을 확인할 수 있습니다.

좌석이 없는 경우, 좌석이 날 때까지 대략 1초에 1~2번 빈도로 예약을 시도합니다.
지금까지 KTX/SRT 예매 자동화 시스템(매크로) 구축 및 사용 방법에 대해 살펴보았습니다.
본 시스템은 지정된 열차 좌석을 백그라운드에서 무한정 예매를 시도하며,
예매 성공 시 자동 결제는 물론 실시간 대시보드를 통한 작업 모니터링,
그리고 텔레그램 봇을 통한 알림 기능까지 제공합니다.
설명보다는 실제 코드 결과물을 통해 보여드린 것처럼,
이 시스템은 여러분의 기차표 예매 경험을 한층 더 편리하게 만들어 줄 것입니다.
복잡한 과정 없이 Docker를 통해 손쉽게 시스템을 배포하고 활용할 수 있도록 구성했습니다.
여러분의 환경에 맞춰 포트포워딩과 역방향 프록시 (혹은 NPM) 설정까지 완료하면
언제 어디서든 이 강력한 예매 자동화 시스템을 활용할 수 있습니다.
앞으로도 더 유용하고 편리한 시스템들을 공유할 수 있도록 노력하겠습니다.
이 시스템이 여러분의 기차표 예매에 조금이나마 도움이 되기를 바랍니다.
감사합니다!