프로젝트 목록
🚄

SRT 자동예매

휴가철 기차표를 새로고침으로 잡던 동료들을 위해 만든 팀 복지용 예매 자동화 (v1.3)

휴가 때 지방으로 내려가는 팀 동료들이 기차 예매가 힘들어, 사이트를 매번 새로고침하며 좌석이 열리기를 기다리던 걸 대신하려고 만든 팀 복지용 도구. 매진 좌석을 자동으로 감시하다 조건에 맞는 열차가 열리면 예매를 시도하고, Redis 큐 기반 타이밍 제어와 Rate Limiting 준수, 텔레그램 알림으로 안정적으로 운영합니다.

SRT 자동예매 스크린샷

Case

이전 → 단계별 개선 → 지금

  1. 이전

    새로고침으로 좌석을 기다림

    휴가 때 지방으로 내려가는 동료들이 기차 예매로 고생했습니다. 인기 노선은 판매 직후 몇 초 만에 매진이라, 사이트를 매번 새로고침하며 좌석이 열리기를 기다리는 수밖에 없었습니다.

  2. 1단계

    감시·예매 매크로

    매진 좌석을 주기적으로 감시하다 조건에 맞는 열차가 열리면 자동으로 예매를 시도하게 했습니다.

  3. 2단계

    동시 사용으로 생긴 차단 문제

    여러 직원이 한 서버에서 동시에 돌리자 SRT의 속도 제한·봇 탐지에 IP가 통째로 차단됐습니다. 모든 요청을 Redis 전역 FIFO 큐에 모아 최소 1초 간격을 강제해 풀었습니다.

  4. 3단계

    탐지 회피와 비용의 균형

    동시에 도는 매크로가 있을 때만 sticky 프록시를 쓰고 단독이면 직결해 비용·지연을 아꼈습니다. 50회마다 세션을 갱신하고 0.1~0.5초 랜덤 간격으로 탐지 패턴을 흩뜨렸습니다.

  5. 4단계

    직원 간 공정성

    동시 6개 + 대기열 5개 슬롯으로 차단 한도를 지키면서 직원끼리 순서가 밀리지 않게 했습니다.

  6. 지금

    팀 복지 도구로 운영 중

    예매로 고생하던 동료들의 고충을, 여러 명이 동시에 써도 차단되지 않는 사내 자동화 도구로 풀어 실제 운영하고 있습니다.

Tech Stack

Next.js 16FastAPIRedisTailwindBase UI

Features

주요 기능

01

SRT 매진 좌석을 주기적으로 감시하고 조건에 맞는 열차가 열리면 자동 예매 시도

02

Redis 전역 FIFO 큐로 작업 직렬화·최소 1초 간격 강제·중복 실행 방지, 큐 혼잡도 모니터링

03

Sticky IP 프록시(Bright Data ISP) — 동시 매크로가 있을 때만 계정별 고정 IP로 IP 충돌·차단 회피

04

동시 6개 + 대기열 5개 슬롯으로 직원 간 공정성과 차단 한도를 동시에 관리

05

0.1~0.5초 랜덤 간격으로 탐지 패턴 분산, 50회마다 세션 갱신(재로그인)

06

저장된 카드(AES-256 암호화)로 좌석 확보 시 자동 결제

07

SSE 실시간 상태 스트림과 사용자별 매크로 작업 목록·상태 조회

08

텔레그램 봇(웹훅 자동 설정)으로 예매 성공·실패·대기 실시간 알림

09

즐겨찾기 역 관리, 프록시 토글 상태 조회, 브라우저 확장(srt-extension) 보조

10

Next.js 웹 UI와 FastAPI 백엔드 분리로 검색 조건·작업 상태·결과 관리

하이라이트

팀 복지용 예매 자동화 — 새로고침 대기를 없앰

2026