-
Alo 재입고 알림봇 개발_2Dev🚀 2025. 9. 13. 15:32
이전글:
https://jungheeho.tistory.com/99
Alo 재입고 알림봇 개발_1
🌱 개발 배경- 평소에 사고 싶었던 상품인 Alo Yoga 'Seamless Delight High Neck Bra – White Heather / L'의 수시 재입고 타이밍을 놓치기 쉬워서, 자동 알림이 필요했다..🥹 - Alo는 Shopify 기반이라(공식 사이
jungheeho.tistory.com
GitHub Actions로 자동화 (왜 Actions인지 & 테스트 절차)
왜 서버/클라우드 대신 GitHub Actions?
선택지 장점 단점/주의 GitHub Actions 별도 서버 불필요, 설정 간단, Secrets로 보안 좋음, 코드와 자동화가 한 곳에 Private 레포 분당료(러너 분) 제한(Free 2,000분/월). 10분마다 실행, 1회 ≈1분이면 월 ~4,320분 → 초과 가능. 최소 주기 5분 개인 서버/라즈베리파이 완전 자유, 분당료 없음 24/7 운용/보안/백업 관리 필요 클라우드(Railway/Render 등) 24/7, 세팅 쉬움 무료 티어 제약/슬립, 비용 발생 가능 내 선택: 초기에 세팅이 가장 빠른 GitHub Actions로 시작.
월 분당료가 걱정되면 주기 20~30분으로 늘리거나, Public 레포(무제한) 또는 Self-hosted runner로 전환.보안(Secrets)
- Settings → Secrets and variables → Actions에
- TELEGRAM_BOT_TOKEN
- TELEGRAM_CHAT_ID 저장
- 워크플로우에서 ${{ secrets.NAME }}로 참조 (로그에서 자동 마스킹됨).
워크플로우(yml)
name: Alo Restock Checker on: schedule: - cron: "*/10 * * * *" # 10분마다 실행 (분당료 고려해 조정 권장) workflow_dispatch: permissions: contents: write # 상태 파일 커밋/푸시 jobs: check-stock: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: { python-version: "3.10" } - run: pip install requests beautifulsoup4 - name: Run script env: TELEGRAM_BOT_TOKEN: ${{ secrets.TELEGRAM_BOT_TOKEN }} TELEGRAM_CHAT_ID: ${{ secrets.TELEGRAM_CHAT_ID }} PRODUCT_HANDLE: w9536r-seamless-delight-high-neck-bra-white-heather VARIANT_ID: 43774160568500 run: python alo_restocker.py - name: Commit & push state if changed run: | git config user.name "github-actions[bot]" git config user.email "41898282+github-actions[bot]@users.noreply.github.com" if [[ -n "$(git status --porcelain .alo_stock_state.json)" ]]; then git add .alo_stock_state.json git commit -m "chore: update state [skip ci]" || true git push fi테스트 절차(실전)
- Secrets 연결 테스트
- test-secrets.yml(수동 실행용)로 ${{ secrets.* }}가 마스킹(* )**되어 출력되는지 확인.
- 본 워크플로우 수동 실행
- Actions 탭 → Alo Restock Checker → Run workflow
- 텔레그램에 “🤖 연결 OK!” 메시지가 오면 봇 연결 성공.
- 403 대응 체크
- JSON이 막히면 HTML fallback/프록시가 동작해야 한다.
- 실패 시 경고 메시지만 보내고 워크플로우는 실패로 끝내지 않도록 처리.
- 주기 자동 실행 확인
- 10분 단위로 실행 기록이 쌓이는지 확인.
- 초기 1회는 baseline(현재 상태) 메시지, 이후에는 상태 변화 시에만 발송.
403/WAF 회피 팁
- 헤더: User-Agent/Referer/Accept-Language 추가.
- 백오프: 403/429 시 1s → 2s → 4s + 지터로 재시도.
- 프록시(텍스트만): https://r.jina.ai/http://원본URL 로 페이지 텍스트만 받아 키워드 판독.
- 주기 조정: 트래픽 빈도 낮추기(예: 20–30분).
- Self-hosted runner: 내 PC/서버를 러너로 등록해 IP 차단 확률 낮추기.
반응형'Dev🚀' 카테고리의 다른 글
맥북 Self-hosted GitHub Actions Runner 설정 후 오류 수습..🧨 | (모든 파일 손상/인식 불가, iCloud 동기화 이상 문제) (0) 2025.09.16 Alo 재입고 알림봇 개발_5(Self-hosted runner) (0) 2025.09.13 Alo 재입고 알림봇 개발_4(HTML fallback 보강) (0) 2025.09.13 Alo 재입고 알림봇 개발_3 (0) 2025.09.13 Alo 재입고 알림봇 개발_1 (0) 2025.09.13 - Settings → Secrets and variables → Actions에