주말 예약 실패? API 없이 취소표 잡는 파이썬 봇 만들기 (+오픈클로)

이웃님들, 이번 주말에 가족들하고 놀러 갈 캠핑장이나 리조트 예약, 성공하셨나요? 아니면 다가오는 명절 KTX 기차표 예매할 때 컴퓨터랑 스마트폰 다 켜놓고 ‘대기 번호 15,000번’ 뜨는 거 보면서 허탈해하신 적 다들 있으시죠?

저는 예전에 아이들 데리고 인기 많다는 국립 캠핑장 한 번 가보겠다고 예약 오픈 시간에 맞춰서 광클을 시도했다가 1초 만에 ‘예약 마감’ 뜨는 걸 보고 멘탈이 나간 적이 있습니다. 결국 남는 건 ‘취소표 줍줍’뿐인데, 언제 취소표가 나올지 알고 하루 종일 모니터만 쳐다보고 있겠습니까. 회의 시간에 몰래 스마트폰 새로고침 누르다가 팀장님한테 눈총받은 게 한두 번이 아니었죠.

골프장 티오 잡는 분들도 마찬가지일 겁니다. 좋은 시간대는 이미 매크로 꾼들이 다 털어가고, 우리는 남들이 취소하는 찌꺼기 표 하나 얻어걸리길 기도하며 F5(새로고침) 버튼만 부서져라 누르는 게 현실입니다.

예약 실패 화면
누군가는 지금 이 순간에도 빈자리를 찾기 위해 새로고침을 누르고 있습니다.

불법 매크로의 한계와 캡챠(CAPTCHA)의 벽

이 지긋지긋한 광클 경쟁에서 벗어나고 싶어서 구글에 ‘파이썬 캠핑장 예약’이나 ‘KTX 취소표 매크로’를 검색해 보신 분들 꽤 계실 겁니다. 코딩을 조금 배워서 나만의 매크로를 만들어보겠다는 야심 찬 계획을 세우게 되죠.

그런데 막상 파이썬 셀레니움(Selenium) 같은 걸로 코드를 짜서 돌려보면 십중팔구 막혀버립니다. 코레일이나 대형 예약 사이트들의 봇(Bot) 차단 기술이 장난이 아니거든요. 기계적인 속도로 접속을 시도하거나 API 없이 크롤링을 하려고 들면 귀신같이 알아채고 화면에 ‘횡단보도를 모두 고르시오’ 같은 그림 맞추기 캡챠를 띄워버립니다.

게다가 사이트 관리자가 버튼 디자인이나 HTML 구조를 살짝만 바꿔도 내가 며칠 밤새워 짠 코드는 단숨에 먹통이 됩니다. 프로그래머가 아닌 일반인이 본업을 하면서 이런 프로그램 유지보수까지 한다는 건 사실상 불가능에 가깝죠.

🚀 선행 학습이 필요하신가요?

코딩 1도 몰라도 따라하는
오픈클로(OpenClaw) PC 설치 가이드


👉3분 만에 설치 끝내기

사람과 똑같이 모니터를 보는 AI의 등장

이런 철벽 방어를 무력화시키고 우리에게 평화를 찾아줄 기술이 바로 오픈클로 자동화(OpenClaw)입니다.

기존의 매크로가 서버의 뒷문으로 몰래 들어가려다 걸리는 도둑놈이라면, 오픈클로는 정문으로 당당하게 걸어 들어가는 일반 손님입니다. 내 컴퓨터에 크롬 브라우저를 띄워놓고, AI가 마치 사람의 눈처럼 모니터 화면 전체를 스크린샷 찍어서 시각적으로 분석합니다. 그리고 ‘예약 마감’ 글자가 ‘예약 가능’으로 바뀌는 순간, 그 위치로 마우스 커서를 스윽 옮겨서 진짜 클릭을 때려버리는 거죠.

예약 사이트 서버 입장에서는 그냥 어떤 사용자가 브라우저를 켜고 마우스를 움직여 클릭한 것과 완벽하게 동일한 데이터가 들어오기 때문에 매크로 차단이 아예 불가능합니다. 봇 차단을 무력화시키는 가장 확실한 물리적(?) 우회 방법인 셈입니다.

실전 세팅: 무적의 취소표 줍줍 알림 봇 만들기

그럼 실제로 내가 원하는 주말의 캠핑장 빈자리나 기차표 취소표를 감시하는 봇을 세팅해 볼까요? 코딩을 배우실 필요는 없습니다. 우리가 할 일은 이 똑똑한 알바생에게 ‘어떤 조건일 때 나한테 보고할 것인지’ 명확한 작업 지시서(프롬프트)를 써주는 것뿐입니다.

💡 취소표 줍줍 봇 전용 프롬프트

“크롬을 열고 내가 지정한 캠핑장 예약 사이트 링크(https://…)로 접속해.

1. 달력에서 ’10월 25일(토)’ 날짜를 클릭해서 조회해.
2. 화면에 뜨는 A구역 데크 리스트를 확인하고, 버튼이 ‘예약마감’인지 ‘예약가능’인지 확인해.

만약 단 한 자리라도 ‘예약가능’ 버튼이 활성화되어 있다면, 내 텔레그램 웹훅 주소(https://hook.make.com/본인주소…)로 ‘🚨 A구역 10/25 취소표 나왔습니다! 당장 접속하세요’라는 알림을 즉시 전송해. 전부 예약마감 상태면 그냥 브라우저를 닫고 대기해.”

이 프롬프트를 복사해서 파이썬 환경에 붙여넣기만 하면 세팅의 90%가 끝난 겁니다. ticket_bot.py라는 이름으로 아래 코드를 저장해 보세요.

ticket_bot.py
import asyncio
from openclaw import ClawAgent # 오픈클로 환경 로드async def monitor_ticket_cancellation():
# 위에서 작성한 예약 감시 프롬프트 입력
bot_task = “””특정 예약 사이트에 접속해서
‘예약가능’ 버튼이 보이면 텔레그램으로 알림을 보내줘.
자리가 없으면 브라우저를 닫아줘.”””

agent = ClawAgent(task=bot_task)

# 봇 실행 (지정된 스케줄마다 브라우저가 열리며 빈자리를 찾습니다)
await agent.execute()

if __name__ == “__main__”:
# 스케줄러를 활용해 10분 단위로 감시 루프 실행
asyncio.run(monitor_ticket_cancellation())

윈도우의 ‘작업 스케줄러’나 맥의 ‘Cron’ 기능을 이용해서 이 코드가 10분이나 20분 간격으로 계속 실행되도록 걸어두시면 됩니다. 나는 회사에서 열심히 결재 서류를 올리고 있는 동안, 집에 있는 내 PC는 부지런히 사이트에 들어가서 빈자리가 났는지 확인해 주는 거죠.

🔔 텔레그램 알림용 웹훅(Webhook)이란?

코딩 없이 내 파이썬 봇과 스마트폰 텔레그램을 연결해 주는 ‘무전기 채널’ 같은 역할입니다. Make(메이크) 같은 사이트를 이용하면 1분 만에 무료로 고유 알림 URL을 발급받을 수 있습니다.

알림을 넘어선 ‘자동 예약 결제’의 영역

사실 여기서 프롬프트만 조금 더 과감하게 수정하면, 취소표 알림을 받는 수준을 넘어서 AI가 내 대신 ‘예약가능’ 버튼을 누르고 신용카드 결제 화면까지 알아서 넘어가게 만들 수도 있습니다.

프롬프트에 “예약가능 버튼이 보이면 그걸 클릭하고, 예약자 이름 칸에 내 이름을 적어 넣은 뒤, 다음 단계 버튼을 눌러”라고 지시를 추가하는 식이죠. 이렇게 되면 우리는 텔레그램 알림이 울렸을 때 여유롭게 스마트폰으로 접속해서 최종 결제 버튼만 똑딱 누르면 끝나는 겁니다.

시간과 정보력 싸움인 현대 사회에서 이 취소표 줍줍 봇 하나면 삶의 질이 수직 상승합니다. 주말 가족 여행 계획 스트레스도 날려버리고, 아내한테 “당신 어떻게 이런 좋은 자리를 구했어?”라며 능력 있는 남편/아빠 대접받는 건 덤이고요.

오늘 밤 남는 PC나 구형 노트북 하나 켜두시고, 평소에 가고 싶었지만 매번 광클에 실패했던 곳의 링크를 걸어 이 봇을 돌려보세요. 세팅하시다가 도저히 모르겠거나 에러가 나는 부분이 있다면 언제든 댓글 남겨주시고요. 우리 이웃님들의 편안한 주말 예약 성공을 기원합니다!

댓글 남기기