- Strange Loop에서 돌아오는 St. Louis-Oakland 직항편에서 $8 인터넷 결제가 실패하자, 기내 WiFi에 연결된 상태로 인터넷 없이 접근 가능한 데이터를 확인함
- Southwest WiFi 포털의 네트워크 요청에서 반복적으로 성공하는
current.json 엔드포인트가 발견됐고, 이 응답이 비행 상태 페이지의 기반 데이터로 보임
- 해당 엔드포인트는 쿠키나 헤더 없이도
curl로 호출 가능했고, 고도·좌표·도착 예정 시각·지상 속도·남은 거리·비행 진행률·위성 연결 상태 등을 반환함
- 수집한 데이터로 고도, ETA, 지상 속도를 시각화했으며, 하강 구간을 제외하면 고도는 약 20~30피트 수준으로만 흔들림
- 특별히 실용적인 발견은 아니었지만, 기내 WiFi 포털이 노출하는 비행 상태 JSON만으로도 비행 중 데이터 수집과 분석을 해볼 수 있음
결제 실패에서 시작된 기내 WiFi 탐색
- Strange Loop에서 돌아오는 St. Louis-Oakland 직항편에서 Southwest의 기내 WiFi 포털을 통해 $8 인터넷 접속권을 구매하려 했지만, 어떤 결제 수단도 받아들여지지 않음
- 웹 페이지는 도움이 되는 오류 메시지를 보여주지 않았고, 브라우저의 네트워크 개발자 도구로 실패한 요청을 확인함
- 실패한 요청 자체에서는 단서를 찾기 어려웠지만, 반복적으로 성공하는
current.json 요청이 눈에 띔
current.json이 반환한 비행 상태 데이터
current.json 응답은 기내 WiFi 포털의 비행 상태 페이지를 구동하는 데이터로 보임
- 예시 응답에는 다음 값들이 포함됨
sat_commlink_portal.status: conn_ok
satcomm_status.commlink: active
satcomm_status.linkparams: not-stale
pcent_flt_complete: 비행 진행률로 보이는 값
altVal: 현재 고도
lat, lon: 현재 좌표
dtzone: 목적지 시간대
within_us: 미국 내 비행 여부
etad: 목적지 도착 예정 시각
gspdVal: 현재 지상 속도
ttgc: 남은 시간으로 보이는 값
dist_remain: 남은 거리
actime24: 어떤 시간대의 현재 시각
브라우저 요청을 curl로 재현
- 브라우저의 “Copy as cURL” 기능으로 엔드포인트 호출 명령을 빠르게 얻음
- 이 기능은 Firefox와 Chromium 기반 브라우저에 있으며, 브라우저가 보낸 요청을 같은 헤더와 함께 재현할 때 유용함
- 실험 결과 요청에 포함된 쿠키나 헤더는 필수적이지 않았고, 다음처럼 단순한
curl 호출만으로 데이터를 가져올 수 있었음
curl 'https://getconnected.southwestwifi.com/current.json'
- 이후 30초마다 데이터를 가져와 로그 파일에 쌓는 루프를 실행함
watch -n 30 "curl https://getconnected.southwestwifi.com/current.json | jq -c >> flight-logs"
응답 필드에서 남은 의문
- 대부분의 필드는 직관적이었지만, 몇 가지 값은 의미가 확실하지 않았음
sat_commlink_portal.status와 satcomm_status.commlink의 차이
pcent_flt_complete가 거리 기준인지 예상 시간 기준인지 여부
altVal, etad, gspdVal이 비행 중 얼마나 흔들리는지
actime24의 ac가 무엇을 뜻하는지
actime24는 항공기 위치의 현재 시각이 아니라 목적지의 현재 시각처럼 보여, ac를 “aircraft”로 해석하기 어려움
비행 중 수집 데이터 시각화
- 수집한 데이터로 고도, ETA, 지상 속도 변화를 시각화함
-
고도 변화
- 처음에는 고도 데이터에 노이즈가 얼마나 많은지 확인하려 함
- 전체 범위가 커서 노이즈를 보기 어려웠고, 하강 구간을 제거한 뒤에는 고도 변동이 약 20~30피트 수준으로 나타남
- 이 정도 안정성은 예상보다 높았지만, 정상 범위나 데이터 정확도는 알 수 없었음
-
ETA 변화
- ETA는 합리적으로 안정적일 것으로 예상했고, 초기 출발 이후 매끄러운 비행에서는 실제로도 안정적이었음
- 날씨 때문에 착륙이 지연되는 상황이라면 ETA가 서서히 늘어날지, 끝부분에서 급격히 증가할지는 남은 의문임
-
지상 속도 변화
- 지상 속도도 예상대로 안정적이었음
- 처음에는 속도 단위를 MPH로 표시했지만, HN 독자들은 이 값이 knots일 가능성이 높다고 지적함
- 비행 초반부터 데이터를 수집하지 못해, 순항 속도에 접근하는 구간의 곡선은 확인하지 못함
결론
- 수집한 데이터에서 특별히 유용하거나 놀라운 점은 없었음
- 인터넷 접속 없이도 기내 WiFi 포털이 노출하는 비행 상태 JSON을 이용해 비행 중 데이터를 수집하고 분석할 수 있음