134 lines
4.7 KiB
Markdown
134 lines
4.7 KiB
Markdown
# 🐌 damn-my-slow-skt
|
|
|
|
**SKT/SK브로드밴드 인터넷 SLA 속도 미달을 자동으로 측정하고 감면 신청을 돕는 CLI 도구.**
|
|
|
|
## 이게 뭔데
|
|
|
|
SK브로드밴드 유선 인터넷은 공식 Myspeed 사이트에서 인터넷 SLA 속도측정을 제공한다. 이 도구는 그 흐름을 Playwright로 실행하고, 결과를 로컬 DB에 남기며, SLA 미달 시 감면 처리까지 이어가도록 설계된 자동화 CLI다.
|
|
|
|
> 현재 SK브로드밴드 Myspeed는 B world/T아이디/간편인증 기반 로그인 화면을 사용한다. 이전 provider의 셀렉터는 제거했고, SK브로드밴드 공식 진입점과 용어로 전환했다. 실제 감면 제출 셀렉터는 live 계정으로 검증해야 한다.
|
|
|
|
## 시작하기
|
|
|
|
### 1. Node.js 설치
|
|
|
|
Node.js 20 이상이 필요합니다.
|
|
|
|
```bash
|
|
node -v
|
|
npm -v
|
|
npx -v
|
|
```
|
|
|
|
### 2. 초기 설정
|
|
|
|
```bash
|
|
npx -y damn-my-slow-skt@latest init
|
|
```
|
|
|
|
설정 파일은 `~/.damn-my-slow-isp/config-skt.yaml`에 저장됩니다. 비밀번호는 로컬 YAML 파일에만 저장됩니다.
|
|
|
|
초기 설정 중 SKT/SK브로드밴드 공식 이용약관 URL이 표시되며, 명시적으로 동의해야 설정 파일이 저장됩니다. 동의하지 않으면 `init`은 설정 파일을 만들지 않고 종료합니다.
|
|
|
|
### 3. 로그인 세션 저장
|
|
|
|
SK브로드밴드 Myspeed는 B world/T아이디/간편인증 로그인이 필요합니다. 최초 1회는 브라우저를 열어 직접 인증하고, 세션을 로컬 파일로 저장합니다.
|
|
|
|
```bash
|
|
npx -y damn-my-slow-skt@latest auth login
|
|
```
|
|
|
|
저장 위치는 설정 파일의 `auth_state_path`이며 기본값은 `~/.damn-my-slow-isp/auth-skt.json`입니다. 세션이 만료되면 같은 명령을 다시 실행하세요.
|
|
|
|
```bash
|
|
npx -y damn-my-slow-skt@latest auth status
|
|
npx -y damn-my-slow-skt@latest auth clear
|
|
```
|
|
|
|
### 4. 실행
|
|
|
|
```bash
|
|
npx -y damn-my-slow-skt@latest run
|
|
```
|
|
|
|
- `--dry-run`: 측정만 하고 감면 신청은 생략
|
|
- `--force`: 오늘 이미 완료했어도 강제로 다시 실행
|
|
- `--debug`: 브라우저 창을 띄워 진행 과정을 직접 확인
|
|
|
|
## SKT/SK브로드밴드 SLA 기준
|
|
|
|
공식 확인 출처:
|
|
|
|
- 인터넷 품질 측정: http://myspeed.skbroadband.com/
|
|
- 인터넷 SLA 속도측정: http://myspeed.skbroadband.com/mesu/internet_sla.asp
|
|
- SK브로드밴드 이용약관: https://www.bworld.co.kr/footer/terms.do?menu_id=F01010000
|
|
- 전기통신 서비스 이용약관 PDF: https://cdn.bworld.co.kr/home/fronta/data/download/stip/제31차%20전기통신서비스이용기본약관_260330.pdf
|
|
|
|
Myspeed SLA 안내 페이지에서 확인한 기준:
|
|
|
|
- **판정**: 30분간 5회 이상 측정하여 측정치의 60% 이상이 최저속도(다운로드 속도)에 미달하면 당일 이용요금 감면
|
|
- **대상**: PC 1대를 이용한 측정. 무선랜, 공유환경, 상품 제공속도보다 낮은 LAN카드 이용 및 설정 변경 등은 제외될 수 있음
|
|
- **측정 사이트**: SK브로드밴드 Myspeed 인터넷 SLA 속도측정 메뉴
|
|
- **후속 조치**: 최저속도 미달 시 품질 점검 및 더 나은 서비스 제공을 위해 TM 및 방문 점검을 실시할 수 있음
|
|
|
|
## 설정 바꾸기
|
|
|
|
`~/.damn-my-slow-isp/config-skt.yaml` 파일을 직접 편집합니다.
|
|
|
|
```yaml
|
|
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"
|
|
|
|
schedule:
|
|
max_attempts: 10
|
|
retry_interval_minutes: 120
|
|
|
|
notification:
|
|
discord_webhook: ""
|
|
telegram_bot_token: ""
|
|
|
|
auth_state_path: "~/.damn-my-slow-isp/auth-skt.json"
|
|
```
|
|
|
|
`run` 명령은 `terms.accepted: true`, 현재 약관 `version`, 그리고 유효한 `accepted_at`이 없으면 실행하지 않습니다. 기존 설정은 대화형 `run` 또는 `init --force`에서 약관 동의를 기록하도록 마이그레이션됩니다.
|
|
|
|
설정 변경 후 스케줄 재등록:
|
|
|
|
```bash
|
|
npx -y damn-my-slow-skt@latest schedule install
|
|
```
|
|
|
|
## 요구사항
|
|
|
|
- Node.js 20+
|
|
- SKT/B world 계정 또는 SK브로드밴드 회선 인증 수단
|
|
- SKT/SK브로드밴드 공식 이용약관 동의
|
|
- 최초 1회 `auth login`으로 저장한 로그인 세션
|
|
- 유선(LAN) 연결 권장
|
|
- Playwright Chromium
|
|
|
|
## 개발
|
|
|
|
```bash
|
|
npm install
|
|
npx playwright install chromium
|
|
npm run typecheck
|
|
npm run lint
|
|
npm run build
|
|
npm test
|
|
```
|
|
|
|
| Component | Technology |
|
|
|-----------|------------|
|
|
| Language | TypeScript (ES2020, CommonJS, strict) |
|
|
| CLI | Commander + Inquirer + Chalk v4 |
|
|
| Browser | Playwright Chromium |
|
|
| Storage | node:sqlite / JSON fallback |
|
|
| Config | YAML — `~/.damn-my-slow-isp/config-skt.yaml` |
|