Files
Tom You 083505c952
Auto Bump and Publish / bump-and-publish (push) Failing after 8m24s
CI / lint-and-test (20) (push) Successful in 1m1s
CI / lint-and-test (22) (push) Successful in 1m3s
init
2026-06-11 15:16:51 +09:00

3.5 KiB

damn-my-slow-skt

SKT/SK브로드밴드 인터넷 SLA 속도 미달 시 요금 감면 자동화를 목표로 하는 CLI 도구.

개요

SK브로드밴드는 Myspeed에서 인터넷 품질 측정과 인터넷 SLA 속도측정을 제공한다. 이 도구는 공식 측정 흐름을 자동 실행하고 결과를 저장하며, 미달 시 감면 처리까지 이어가도록 설계한다.

핵심 기능

  1. SKT/B world 로그인 진입 (Playwright 기반 브라우저 자동화)
  2. SK브로드밴드 공식 SLA 속도 측정 실행 (myspeed.skbroadband.com)
  3. 측정 결과 기록 (SQLite / JSON fallback)
  4. 속도 미달 시 감면 신청 처리
  5. SKT/SK브로드밴드 공식 이용약관 동의 기록
  6. 결과 리포트 (Discord/Telegram 알림 옵션)
  7. 다회 측정 - 하루 최대 N회, 감면 성공 시 자동 스킵
  8. 업데이트 마이그레이션 - 버전 업 시 설정 변경 안내

SK브로드밴드 SLA 측정 플로우

  1. http://myspeed.skbroadband.com/mesu/internet_sla.asp 접속
  2. "SLA 속도측정 시작하기" 클릭
  3. B world/T아이디 또는 간편인증 로그인
  4. 회선/측정 환경 확인
  5. 5회 자동 측정 완료 대기
  6. 결과 파싱 → SLA pass/fail 판단
  7. fail 시 품질 점검/감면 처리 단계 진행

SLA 기준

  • 30분간 5회 이상 측정
  • 측정치의 60% 이상이 최저속도(다운로드 속도)에 미달하면 당일 이용요금 감면
  • 유선(LAN) 연결 권장, 무선랜/공유환경/부적합 LAN카드 등은 감면 제외 가능

기술 스택

  • 언어: TypeScript (Node.js 20+)
  • 브라우저 자동화: Playwright (headless Chromium)
  • 스케줄링: macOS launchd / Linux systemd timer / crontab
  • 설정: YAML (~/.damn-my-slow-isp/config-skt.yaml)
  • 데이터 저장: SQLite (Node 22+ built-in) / JSON fallback
  • 알림: Discord webhook / Telegram bot (선택)
  • 배포: npm registry (npx damn-my-slow-skt)

설정 파일 (~/.damn-my-slow-isp/config-skt.yaml)

_config_version: 4
credentials:
  id: "사용자ID"
  password: "비밀번호"
terms:
  provider: "skt"
  accepted: true
  accepted_at: "2026-03-30T00:00:00.000Z"
  version: "2026-03-30"
  urls:
    - "https://www.bworld.co.kr/footer/terms.do?menu_id=F01010000"
    - "https://cdn.bworld.co.kr/home/fronta/data/download/stip/제31차%20전기통신서비스이용기본약관_260330.pdf"
phone: "01012345678"
plan:
  speed_mbps: 1000
schedule:
  time: "04:00"
  timezone: "Asia/Seoul"
  max_attempts: 10
  retry_interval_minutes: 120
  stop_on_complaint_success: true
notification:
  discord_webhook: ""
  telegram_bot_token: ""
  telegram_chat_id: ""
headless: true
db_path: "~/.damn-my-slow-isp/history-skt.db"

init은 위 약관 URL을 표시하고 명시적 동의를 받은 뒤 설정을 저장한다. v4 마이그레이션도 같은 공식 URL을 표시하고 동의를 기록한다. run은 현재 SKT 약관 버전 동의가 없으면 필수 설정 누락으로 종료한다.

CLI 인터페이스

damn-my-slow-skt init
damn-my-slow-skt run
damn-my-slow-skt run --dry-run
damn-my-slow-skt run --force
damn-my-slow-skt config show
damn-my-slow-skt history
damn-my-slow-skt report
damn-my-slow-skt schedule install
damn-my-slow-skt schedule remove

프로젝트 구조

src/
├── index.ts
├── cli.ts
├── config.ts
├── db.ts
├── skt.ts
├── migration.ts
├── notify.ts
├── report.ts
├── scheduler.ts
└── updater.ts