srt-mobile-api¶
SRT(수서고속철도) 안드로이드 앱이 쓰는 HTTP API 를 파이썬에서 그대로 부르는 클라이언트입니다. 앱과 같은 경로에 같은 폼 필드를 실어 열차를 조회하고, 운임과 좌석배치도를 읽고, 예약·취소·결제·환불을 하고, 할인쿠폰과 공공할인 자격을 확인합니다. 기본은 읽기 전용이며, 상태를 바꾸는 요청은 호출마다 동의 객체를 명시하지 않으면 만들어지지도 않습니다.
읽기 전에
- 리버스 엔지니어링 결과입니다. SR 은 API 를 공개하지 않습니다. 여기 있는 경로·필드명·응답 형태는 SRT 안드로이드 앱 v2.0.41 을 디컴파일하고, 로그인한 세션에 서버가 렌더링해 주는 페이지를 읽고, 둘 다 답하지 못한 곳은 서드파티 클라이언트의 실 트래픽에서 복원한 것입니다.
- 실서비스로 나갑니다. 샌드박스는 없습니다. 요청은 당신의 실계정으로
app.srail.or.kr에 가고, 이 라이브러리로 만든 예약·결제·환불은 전부 진짜입니다. - SR(에스알)과 무관합니다. 제휴도 승인도 없고, 어떤 보증도 없으며, 이 중 무엇이 내일도 동작한다는 약속도 없습니다.
이 사이트의 구성¶
| 페이지 | 무엇이 있나 |
|---|---|
| 빠른 시작 | 설치, 로그인·조회·되읽기까지의 최소 코드 |
| 안전 모델 | 동의 객체, 네 관문, dry_run 미리보기, 한계 |
| API 레퍼런스 | srt_mobile_api 가 export 하는 이름 전부. docstring 에서 생성합니다 |
| 에러 | 예외 계층과 언제 무엇이 오는지 |
| 변경 이력 | CHANGELOG 그대로 |
검증 기록·정적 분석·구현 로그는 사이트에 올리지 않습니다. 저장소의 README 가 문서별 표로 안내합니다.
설치¶
설치 가능한 기본 읽기 전용 패키지라, 상태를 바꾸는 요청은 호출마다 동의 객체를 건네야만 만들어집니다. PyPI 릴리스는 없습니다.
python3 -m pip install "srt-mobile-api @ git+https://github.com/yakisoba0728/srt-mobile-api"
# 고쳐 볼 생각이면 클론한 뒤
python3 -m pip install -e ".[test]"
python3 -m pytest -q -m "not live" # 1773 passed, 1 deselected
| 항목 | 값 |
|---|---|
| 파이썬 | 3.11 이상 |
| 런타임 의존성 | httpx 하나 |
| 타입 | py.typed 동봉 |
| 라이선스 | Apache-2.0 |
빠진 하나는 SRT_MOBILE_API_LIVE=1 을 따로 요구하는 실서비스 테스트입니다. -m "not live"
는 CI 와 docs/RELEASE.md 가 쓰는 게이트와 같습니다.