Shadowrocket 구독 파싱 실패·서버 목록이 비어 있을 때: URL 형식과 업데이트 문제 해결

Shadowrocket 구독을 추가한 뒤 목록이 비어 있거나 파싱 오류가 난다면 URL과 인코딩, 구독 상태, 업데이트 시점과 네트워크를 차례로 확인하세요.

이 글의 핵심 내용

사용 중인 서비스 제공업체와 구독은 있지만 Shadowrocket에서 서버 목록을 불러오지 못하는 경우를 위한 안내입니다. URL 무결성, 요청 결과, 응답 형식, 서비스 상태, 업데이트 환경 순서로 확인해 가져오기 실패와 파싱 실패, 연결 실패를 구분하세요. 기존 설정은 유지한 채 한 번씩 검증해 반복 삭제와 새로 고침으로 원인을 놓치지 않도록 합니다.

1. 구독 실패와 서버 연결 실패 구분하기

Shadowrocket은 Apple 플랫폼용 유료 앱으로, App Store에서만 받을 수 있습니다. 개발자는 Shadow Launch Technology Limited이며 앱은 일회성 구매 방식입니다. 앱을 구매해도 연결 서비스가 제공되는 것은 아닙니다. 이 글은 사용자가 직접 이용 중인 서비스 제공업체와 구독이 있다는 전제로 설명합니다. 호환 기기와 시스템 요구 사항은 App Store 페이지를 확인하세요.

구독 업데이트는 서버 정보를 가져와 파싱하는 과정이며, 모든 서버의 연결 가능 여부를 확인하는 기능은 아닙니다. Home에 항목이 전혀 없는 경우와 목록은 있지만 연결 시간이 초과되는 경우는 서로 다른 문제입니다. 전자는 구독 URL과 응답 내용을 확인하고, 후자는 서버 주소와 포트, 인증 정보, 네트워크 연결 상태를 점검해야 합니다.

구독 URL 읽기 네트워크 요청 보내기 응답 받기 서버 항목 파싱 서버 목록 표시

처리 과정 중 어느 한 단계에서 문제가 생겨도 업데이트 실패나 목록에 새 항목이 추가되지 않는 현상이 나타날 수 있습니다. HTTP 요청이 성공했다는 것은 서버에서 응답을 받았다는 뜻일 뿐, 그 내용이 파싱 가능한 구독이라는 보장은 없습니다. 반대로 기존 항목이 남아 있어도 이번 업데이트가 성공했다는 뜻은 아닙니다.

2. URL 전체를 확인하고 인코딩을 임의로 바꾸지 않기

서비스 제공업체 계정 페이지에서 Shadowrocket용 구독 URL을 복사하세요. 계정 홈이나 주문 페이지, 버튼에 표시된 짧은 제목을 복사하면 안 됩니다. 구독 URL에는 인증 정보가 포함되는 경우가 많습니다. 서로 비슷해 보이는 URL이라도 하나는 계정 페이지를, 다른 하나는 서버 데이터를 반환할 수 있어 용도가 다릅니다.

https://example.com/sub?token=xxxx

위 내용은 사용할 수 없는 형식의 예시입니다. 실제 URL을 확인할 때는 https://부터 마지막 문자까지 빠짐없이 있는지, 특히 ? 뒤의 쿼리 매개변수가 온전한지 살펴보세요. 메신저로 전달하는 과정에서 끝의 문장 부호나 줄바꿈이 붙거나 URL이 잘릴 수 있습니다. 기억을 더듬어 이어 붙이지 말고 원래 제공된 경로에서 다시 복사하세요.

3. 앱 화면에서 가져오기 과정을 다시 확인하기

Shadowrocket에서 Home은 서버 확인과 관리, Config는 구성 파일, Settings는 앱 설정에 사용합니다. 구독 URL은 Home에서 Subscribe로 추가해야 합니다. Config 파일로 가져와도 서버 구독을 파싱하는 과정을 대신할 수 없습니다. 확인을 시작하기 전에 기존 구독 이름과 항목 수, 오류 메시지를 기록하고 전체 내용을 먼저 지우지 마세요.

  1. 기존 항목 유지하기

    Home에서 기존 구독과 서버 항목이 남아 있는지 확인하세요. 현재 연결에 해당 항목이 필요하다면 원래 상태를 유지하고, 삭제 후 다시 만드는 방법부터 시도하지 마세요.

  2. Subscribe 선택하기

    Home으로 이동해 오른쪽 위의 “+”를 탭하고 Type에서 Subscribe를 선택하세요. 알아보기 쉬운 이름을 입력한 다음 직접 복사한 전체 구독 URL을 URL 필드에 붙여 넣으세요.

  3. 저장하고 업데이트하기

    저장한 뒤 Home으로 돌아가 아래로 당겨 업데이트를 시작하고 요청이 끝날 때까지 기다리세요. 성공 여부와 오류, 항목 수의 변화를 기록하고 요청이 진행 중일 때 연속해서 새로 고침하지 마세요.

  4. 목록 표시 확인하기

    Home의 검색 조건을 지우고 해당 구독 그룹을 펼쳐 필터나 접기 때문에 목록이 비어 보이는 것은 아닌지 확인하세요. 이름에 변화가 없더라도 항목 수를 비교하세요.

  5. 후속 오류 구분하기

    서버 항목이 표시된다면 구독 파싱 단계에서는 결과를 가져온 것입니다. 이후에는 연결을 별도로 확인하고 연결 시간 초과를 ‘구독 목록이 비어 있음’으로 분류하지 마세요.

서비스 제공업체가 기존 구독 URL을 재설정한 경우에는 해당 구독에 저장된 URL을 수정하세요. 같은 이름의 그룹을 여러 개 계속 만들 필요는 없습니다. 병행 테스트가 꼭 필요하다면 테스트 항목에 구분하기 쉬운 이름을 붙이고 끝난 뒤 정리하세요. 그래야 이전 목록을 새 결과로 착각하지 않습니다.

4. HTTP 상태 코드와 응답 내용으로 원인 찾기

요청 세부 정보를 확인할 수 있다면 먼저 상태 코드를 기록한 다음 응답 내용을 살펴보세요. 아래 내용은 일반적인 HTTP 상태 설명이며, Shadowrocket이 모든 상황에서 같은 문구를 표시한다는 뜻은 아닙니다. 실제 오류 세부 정보나 서비스 제공업체 기록에서 해당 상태를 확인한 경우에만 그에 맞게 조치하세요. 상태 코드를 알아내려고 전체 인증 정보를 제3자 웹사이트에 제출하지 마세요.

200
HTTP 요청이 성공해도 응답 본문 형식을 확인해야 합니다
401 / 403
인증 정보와 접근 권한부터 확인하세요
429
요청이 제한되면 연속 새로 고침을 중단하세요

HTTP 401 Unauthorized

원인: 유효한 인증 정보가 없거나 구독 인증 정보가 만료되었습니다. 해결: 서비스 제공업체 계정 페이지에서 현재 URL을 확인하세요. 필요하면 인증 정보를 새로 만든 뒤 저장된 URL을 업데이트하세요.

HTTP 403 Forbidden

원인: 서버가 요청을 거부했습니다. 계정 권한이나 접근 제한이 관련되었을 수 있습니다. 해결: 요청 시각을 함께 전달해 서비스 제공업체에 거부 사유를 확인하세요. 모든 403 오류를 만료로 단정하지 마세요.

HTTP 404 Not Found

원인: 요청 경로가 존재하지 않습니다. URL이 잘렸거나 API 경로가 바뀌었을 수 있습니다. 해결: 현재 사용 중인 구독 URL을 다시 복사하고 경로와 쿼리 매개변수를 확인하세요. API 이름을 임의로 추측하지 마세요.

HTTP 429 Too Many Requests

원인: 서버가 요청 횟수를 제한했습니다. 해결: 반복해서 아래로 당기지 마세요. 응답에 Retry-After가 있으면 안내된 시간만큼 기다리고, 표시되지 않으면 서비스 제공업체에 제한 해제 시점을 문의하세요.

확인: 200 응답이 구독 유효성을 뜻하지는 않습니다

서비스 제공업체가 응답이 로그인 페이지나 인증 페이지, 오류 안내라고 확인했다면 먼저 접근 경로와 권한을 바로잡은 뒤 구독을 업데이트하세요. 이때 서버 프로토콜 매개변수를 계속 변경해도 파싱 문제는 해결되지 않습니다.

응답 본문에 내용이 있어도 안내 문구나 비어 있는 데이터 집합, 현재 접근 경로에서 지원하지 않는 형식만 들어 있을 수 있습니다. Base64는 인코딩 방식일 뿐, 유효한 서버 정보가 들어 있다는 뜻은 아닙니다. 본문에 문자를 임의로 덧붙이거나 반복해서 디코딩하거나 프로토콜 접두사를 붙이지 마세요. 서비스 제공업체에 반환 형식과 실제 유효 항목 수를 확인하세요.

5. 서비스 제공업체에 구독 자격과 응답 형식 확인하기

계정에 로그인할 수 있다고 해서 구독 API가 현재 서버 정보를 반환한다는 뜻은 아닙니다. 구독 자격과 트래픽 상태, 유효 기간, 서비스 점검, 인증 정보 재설정이 API 응답에 영향을 줄 수 있습니다. 결제나 갱신 후에도 반복 새로 고침 대신 계정에 변경 사항이 적용되었는지 먼저 확인하세요.

문의할 때는 오류 원문과 발생 시각 및 시간대, 사용 네트워크, 처음 추가한 것인지, “기존 항목이 남아 있는지와 업데이트 전후 항목 수가 달라졌는지”를 함께 전달하세요. 단순히 “작동하지 않는다”고 설명하는 것보다 원인을 찾는 데 도움이 됩니다. 스크린샷을 보내기 전에는 전체 구독 URL과 token, 서버 비밀번호 및 기타 인증 정보를 가리세요. 계정 확인이 필요하다면 서비스 제공업체의 비공개 지원 채널을 이용하세요.

6. 네트워크와 업데이트 시점의 영향을 확인한 뒤 다시 테스트하기

구독 정보를 가져올 때도 네트워크 연결이 필요합니다. 도메인 확인 실패나 TLS 인증서 오류, 연결 시간 초과, 웹 로그인이 필요한 Wi-Fi 때문에 응답 본문을 가져오지 못할 수 있습니다. 기기의 날짜와 시간이 정확한지, 현재 네트워크에 필요한 로그인을 마쳤는지 확인한 뒤 한 번 업데이트하세요. 인증서 오류가 발생하면 기기 시간을 확인하고 서비스 제공업체에 인증서를 점검해 달라고 요청하세요. 보안 검사를 끄는 방법으로 해결하지 마세요.

Global Routing은 연결 트래픽의 처리 방식을 정하는 기능이지, 잘못된 구독 형식을 수정하는 기능이 아닙니다. Settings → On Demand는 필요에 따른 연결 동작을 제어하며 구독 업데이트 스위치가 아닙니다. 테스트 중 연결을 잠시 멈춰야 한다면 기존 설정을 기록하고 On Demand가 연결을 다시 시작하는지 확인하세요. 점검을 마친 뒤 원래 상태로 복구하세요.

  1. 입력값 고정: 방금 확인한 동일한 구독 URL을 사용하고 현재 시각과 Home의 항목 수를 기록하세요.
  2. 요청 한 번 완료: 현재 네트워크에서 한 번 업데이트하고 결과가 확인될 때까지 기다리세요. URL과 연결 설정, 네트워크를 동시에 변경하면 어느 항목이 영향을 주었는지 파악하기 어렵습니다.
  3. 네트워크만 변경: 가능하다면 Wi-Fi에서 셀룰러 네트워크로 또는 반대로 전환한 뒤 한 번 더 테스트하세요. 특정 네트워크에서만 실패한다면 해당 네트워크의 도메인 확인과 접근 조건부터 살펴보세요.
  4. 요청 제한 피하기: 요청 제한이나 서비스 점검 안내가 나타났다면 서비스 제공업체가 안내한 시간에 다시 시도하세요. 짧은 간격으로 자동 업데이트를 설정하지 마세요.
  5. 결과 확인: 구독 그룹에 예상한 항목이 나타나는지 확인한 다음 서버 연결을 별도로 테스트하세요. 여전히 비어 있다면 두 차례 테스트의 시각과 오류 결과를 정리해 서비스 제공업체에 문의하세요.

점검 원칙: 한 번에 조건 하나만 변경하기

URL은 그대로 두고 네트워크만 바꿨을 때 성공한다면 네트워크 경로를 먼저 확인하세요. 두 네트워크에서 같은 인증 오류가 발생한다면 계정과 인증 정보를 확인하세요. 유효한 목록을 가져온 뒤에도 연결되지 않는다면 서버 연결 문제를 따로 점검하세요.

마지막으로 문제를 URL 누락, 요청 도달 실패, 접근 거부, 응답 형식 불일치, 서버 연결 오류 중 하나로 구분할 수 있어야 합니다. 이 순서대로 확인하면 계속 사용할 수 있는 설정을 보존하고 서비스 제공업체의 응답 문제를 앱 설치 문제로 잘못 판단하는 일을 막을 수 있습니다.

App Store 정품 확인