이미 본인 서비스 제공자의 구독을 이용 중이지만 Shadowrocket에서 업데이트 시간 초과, 파싱 오류 또는 노드 목록이 비어 있는 문제를 겪는 사용자를 위한 안내입니다. 먼저 요청 실패와 응답 내용 이상을 구분한 뒤 URL, 계정 상태, 요청 경로를 확인하세요. 원본 구독이 유효한지 확인하기 전에는 다시 가져오지 말고, 아직 사용할 수 있는 기존 노드를 먼저 삭제하지 마세요.
1. 업데이트 실패와 노드 목록 비어 있음을 구분하기
구독 업데이트는 구독 주소에 접속하고, 응답 내용을 받아, 그 내용을 노드로 파싱하는 세 단계로 진행됩니다. 어느 한 단계에서든 실패하면 Home에 원하는 노드가 표시되지 않을 수 있지만, 원인에 따라 해결 방법은 다릅니다. 기존 노드는 남아 있는데 새로고침할 때 오류가 난다면 먼저 요청이 성공했는지 확인하세요. 처음 가져온 뒤 노드가 하나도 없다면 응답 내용이 실제 노드 구독인지도 확인해야 합니다.
‘업데이트 성공’과 ‘노드에 연결할 수 있음’은 같은 의미가 아닙니다. 전자는 구독 요청과 파싱이 완료됐다는 뜻이고, 후자는 노드 주소, 포트, 인증 매개변수와 현재 네트워크 상태에도 좌우됩니다. 이 글에서는 먼저 목록을 가져오는 문제를 해결합니다. 목록이 복구되면 별도로 연결을 테스트하세요.
판단 기준: 기존 노드를 사용할 수 있으면 유지
기존 노드에 계속 연결할 수 있다면 Home을 먼저 비우지 말고 문제가 있는 구독만 새로고침한 뒤 오류를 기록하세요. 사용 가능한 연결을 유지하면서 문제가 구독 업데이트에서 비롯됐는지 노드 자체에서 비롯됐는지 구분할 수 있습니다.
2. URL이 완전한지, 구독 유형이 맞는지 확인하기
구독 URL은 노드 목록을 가져오는 주소이지 계정 로그인 페이지나 서비스 제공자 웹사이트의 홈이 아닙니다. 복사할 때는 본인 서비스 제공자가 제공하는 구독 복사 기능을 사용하고, 프로토콜, 도메인, 경로, 물음표 뒤의 쿼리 매개변수를 확인하세요. 메신저에 붙여넣을 때 생기는 줄바꿈, 끝의 마침표나 따옴표, 일부만 표시된 링크 때문에 겉보기에는 비슷해도 실제 주소가 달라질 수 있습니다.
https://example.com/sub?token=xxxx
위 내용은 형식 예시일 뿐, 실제로 사용할 수 있는 구독 URL이 아닙니다. 실제 주소의 경로나 매개변수 이름은 다를 수 있으므로 예시를 따라 수정하지 마세요. 특히 ? 뒤의 내용을 삭제하거나 &, = 또는 퍼센트 인코딩된 문자를 직접 바꾸지 마세요. 구독 인증 정보는 경로에 포함될 수 있으며, 반드시 token이라는 이름을 쓰는 것은 아닙니다.
-
주소 다시 복사하기
본인 서비스 제공자의 계정 페이지에서 Shadowrocket용 구독 URL을 다시 복사하세요. 형식 선택 항목이 있다면 서비스 제공자가 Shadowrocket용으로 안내하는 형식을 선택하고, 계정 관리 페이지 주소를 복사하지 마세요.
-
구독 유형 확인하기
Home 오른쪽 위의 ‘+’를 눌러 추가 화면으로 이동한 뒤 Type에서 Subscribe를 선택하세요. 개별 노드 공유 내용과 여러 노드를 가져오는 구독 URL은 용도가 다릅니다. 웹페이지 주소를 특정 프로토콜의 서버 주소로 입력해서는 안 됩니다.
-
URL 입력란 확인하기
전체 URL을 URL 입력란에 붙여넣고 앞뒤에 공백, 줄바꿈, 불필요한 문장 부호가 없는지 확인하세요. 알아보기 쉬운 이름을 지정해도 되지만 전체 인증 정보를 이름에 적지 마세요.
-
저장한 뒤 새로고침하기
저장한 뒤 Home으로 돌아가 구독을 업데이트하세요. 아래로 당겨 새로고침했다면 대상 구독의 결과를 확인하고 해당 그룹에 노드가 표시되는지 살펴보세요. 문제를 진단하는 동안에는 다른 소스를 동시에 변경하지 말고 이 구독 하나만 수정하세요.
3. 응답 결과에 따라 서비스 제공자 측 상태 확인하기
오류 메시지에 HTTP 상태 코드가 표시된다면 원인 범위를 좁히는 데 참고할 수 있습니다. 아래 상태 코드는 서버 응답의 표준적인 의미이며, 모든 버전에서 똑같은 전체 오류 문구가 표시된다는 뜻은 아닙니다. 화면에 일반적인 실패 안내만 보인다면 실제 문구를 기록한 뒤 본인 서비스 제공자에게 해당 요청 결과를 확인하세요.
오류: 401 Unauthorized
원인: 서버가 현재 요청의 인증 정보를 받아들이지 않았습니다. 구독 인증 정보가 만료됐을 수 있습니다.
해결 방법: 본인 서비스 제공자의 계정 페이지에서 인증 정보가 재설정됐는지 확인하세요. 현재 구독 URL을 다시 복사한 뒤 업데이트하세요.
오류: 403 Forbidden
원인: 서버가 요청을 거부했습니다. 계정 권한, 접속 위치 제한 또는 보안 정책이 원인일 수 있으며, 이 코드만으로 요금제가 만료됐다고 단정할 수는 없습니다.
해결 방법: 계정 상태를 확인한 뒤 오류 코드와 발생 시각을 서비스 제공자에게 전달하고 구독 주소의 접근 제한 여부를 문의하세요.
오류: 404 Not Found
원인: 요청한 경로를 찾을 수 없습니다. 기존 구독 주소가 만료됐거나, 주소가 불완전하게 복사됐거나, 서비스 제공자가 경로를 변경했을 때 발생할 수 있습니다.
해결 방법: 현재 구독 주소를 다시 받아 도메인과 경로를 하나씩 확인하세요. 새 API 경로를 임의로 추측하지 마세요.
오류: 429 Too Many Requests
원인: 구독 엔드포인트가 짧은 시간 동안의 요청 횟수를 제한했습니다.
해결 방법: 연속으로 새로고침하지 말고 서비스 제공자의 안내나 응답에 표시된 Retry-After를 확인해 기다리세요. 다시 시도할 수 있게 되면 수동 업데이트를 한 번만 실행하세요.
오류: 503 Service Unavailable
원인: 서버 또는 앞단 게이트웨이가 일시적으로 요청을 처리하지 못합니다.
해결 방법: 본인 서비스 제공자의 점검 공지를 확인하고 기존 노드를 유지하세요. 서비스가 복구된 뒤 다시 시도하면 됩니다. 이 오류만으로 전체 설정을 다시 만들 필요는 없습니다.
계정이 유효한지, 트래픽 한도를 초과했는지, 현재 요금제에 사용 가능한 노드가 포함되는지도 확인하세요. 서비스 제공자마다 오류 코드나 안내 문구를 반환할 수도 있고, 빈 목록을 반환할 수도 있으므로 항상 같은 방식으로 알림이 온다고 가정하면 안 됩니다. 브라우저에서 링크를 열었을 때 로그인 페이지, 보안 확인 페이지 또는 계정 안내 페이지가 표시된다면 HTTP 상태 코드가 200이어도 파싱 가능한 노드 데이터가 아닙니다. 브라우저에서 내용을 볼 수 있더라도 앱의 요청이 완전히 같은 응답을 받는다고 보장되지는 않습니다.
- 응답 본문이 비어 있음: 구독 API에 일시적인 문제가 있는지, 현재 계정에 노드가 실제로 할당되어 있는지 확인하세요.
- HTML 페이지가 반환됨: 복사한 주소가 대화형 로그인이 필요한 웹페이지가 아니라 구독 엔드포인트인지 확인하세요.
- 읽을 수 있는 텍스트가 반환되지만 파싱에 실패함: 출력 형식이 Shadowrocket에 적합한지 서비스 제공자에게 확인하고, 서로 다른 설정 형식을 무리하게 함께 사용하지 마세요.
4. 시간 초과가 발생하면 요청 경로를 먼저, 업데이트 시점을 다음으로 확인하기
시간 초과는 제한된 시간 안에 요청이 완료되지 않았다는 뜻일 뿐, 링크가 만료됐다는 직접적인 증거는 아닙니다. 먼저 현재 Wi-Fi나 모바일 네트워크로 다른 웹사이트에 정상적으로 접속할 수 있는지 확인하세요. 공용 Wi-Fi에서 네트워크 로그인이 필요하다면 먼저 인증을 완료해야 합니다. 네트워크를 한 번 바꾼 뒤 같은 구독을 업데이트해 보면 로컬 네트워크 제한과 구독 서버 문제를 구분하는 데 도움이 됩니다.
구독 요청의 경로는 노드 연결 테스트 경로와 완전히 같지 않습니다. Settings → Subscribe의 Update via Proxy 설정은 구독 업데이트 요청을 프록시로 보낼지 결정합니다. 사용 가능한 노드가 이미 있고 연결이 설정되어 있으며 요청이 구독 엔드포인트에 실제로 도달할 수 있을 때만 이 옵션이 직접 연결 제한을 해결하는 데 도움이 될 수 있습니다. 처음 가져오는 중이고 목록이 완전히 비어 있다면 아직 존재하지 않는 노드에 업데이트를 의존할 수 없습니다.
| 확인된 현상 | 우선 확인할 항목 | 다음 조치 |
|---|---|---|
| Wi-Fi에서는 시간 초과, 모바일 네트워크에서는 업데이트 가능 | Wi-Fi 네트워크 로그인, DNS, 접속 제한 | 사용 가능한 네트워크에서 먼저 업데이트한 뒤 원래 네트워크 문제를 해결하세요 |
| 프록시를 통한 업데이트를 켠 뒤 오히려 시간 초과 발생 | 현재 노드의 사용 가능 여부와 업데이트 요청이 올바르게 전달되는지 확인 | 현재 설정을 기록한 뒤 Update via Proxy를 잠시 끄고 직접 연결로 업데이트를 테스트하세요 |
| 직접 연결은 실패하지만 기존 프록시 연결은 사용 가능 | 현재 네트워크에서 구독 엔드포인트 접속을 제한하는지 확인 | Settings → Subscribe에서 Update via Proxy를 켠 뒤 한 번만 테스트하세요 |
| 연속 새로고침 후 429 발생 | API 요청 빈도 제한 및 백그라운드 자동 업데이트 | 수동 재시도를 멈추고 제한이 해제될 때까지 기다린 뒤 업데이트하세요 |
연결 스위치를 끈 직후 다시 자동으로 켜진다면 Settings → On Demand에 자동 연결 조건이 설정되어 있는지 확인하세요. 이 설정은 연결이 언제 시작되는지 제어할 뿐, 잘못된 링크를 올바른 구독으로 고쳐주지는 않습니다. 문제를 진단할 때는 기존 설정을 기록하고, 테스트 조건을 고정해야 할 때만 잠시 끄세요. 완료한 뒤에는 원래대로 복원하세요. Global Routing을 계속 전환하며 해결을 기대하지도 마세요. Proxy, Direct, Config, Scene은 트래픽 처리 방식을 정하는 옵션이지 구독 형식을 변환하는 스위치가 아닙니다.
5. 노드 목록이 비어 있으면 그룹과 응답 내용부터 확인하기
새로고침한 뒤 Home으로 돌아가 방금 업데이트한 구독 그룹을 보고 있는지 확인하세요. 접힌 그룹을 펼치고 검색 조건도 지우세요. 그룹이 접혀 있거나 검색어가 남아 있으면 노드가 표시되지 않을 수 있지만, 그렇다고 구독이 노드를 하나도 반환하지 않았다는 뜻은 아닙니다. 다른 구독은 정상이고 한 그룹만 비어 있다면 모든 구독을 초기화하지 말고 해당 그룹의 소스를 먼저 확인하세요.
- 그룹은 있지만 내용이 비어 있음: 응답에 트래픽 정보, 만료 안내 또는 빈 내용만 있는 것이 아니라 노드가 실제로 포함되어 있는지 서비스 제공자에게 확인하세요.
- 일부 노드만 표시됨: 구독 자체의 필터 조건, 서비스 제공자가 내보내는 범위, 누락된 항목의 형식이 지원되는지 확인하세요.
- 노드는 표시되지만 연결되지 않음: 목록을 가져오는 문제와 연결 문제가 분리된 상태입니다. 해당 프로토콜의 주소, 포트, 인증 매개변수를 확인하세요.
- 새로고침 후 기존 목록의 노드 수가 줄어듦: 서비스 제공자가 노드 구성을 변경했는지 확인하세요. 노드 수가 줄었다는 이유만으로 앱의 파싱 오류라고 단정하지 마세요.
판단 기준: 200 응답인데 목록이 비어 있다면 서버가 반환한 내용부터 확인
네트워크 요청이 성공했고 검색 조건을 지우고 그룹을 펼친 뒤에도 목록이 비어 있다면, Global Routing을 계속 바꾸거나 앱을 재설치하기보다 서비스 제공자에게 해당 계정의 현재 구독 출력 내용을 확인하세요.
6. 다시 가져오기 전에 보관할 정보
다시 가져오기는 기기에 저장된 오래된 주소나 잘못된 항목을 수정하는 데 도움이 되지만, 서비스 제공자의 API 장애를 해결하지는 못합니다. 기존 구독을 삭제하기 전에 전체 URL을 다시 받을 수 있는지 확인하고, 수동으로 추가한 노드, 기존 그룹 이름, 현재 선택된 노드를 기록하세요. 구독에 아직 사용 가능한 노드가 있다면 해당 항목을 먼저 유지해 작동 중인 연결까지 함께 삭제하지 않도록 하세요.
- 오류 기록 저장: 실제 안내 문구, 발생 시각, 사용한 네트워크, 업데이트 요청이 프록시를 통했는지 기록하세요. ‘작동하지 않음’이라고만 적지 마세요.
- 현재 URL 확인: 본인 서비스 제공자의 계정 페이지에서 주소를 다시 복사하세요. 오래전에 메신저 대화에 저장한 주소는 사용하지 마세요.
- 계정 응답 확인: 계정이 유효하고 API가 복구됐으며 해당 링크에서 사용 가능한 노드가 하나 이상 반환되는지 확인하세요.
- 새 항목만 따로 테스트: 다시 추가해야 한다면 Home → ‘+’ → Type → Subscribe에서 구분하기 쉬운 이름을 사용하고 업데이트 테스트를 한 번만 진행하세요.
- 확인한 뒤 정리: 새 항목에서 노드 그룹을 펼칠 수 있고 연결 테스트도 예상대로 완료된 뒤에, 오류가 확인된 기존 구독을 삭제하세요. 이름이 같다는 이유만으로 여러 항목을 한꺼번에 삭제하지 마세요.
그래도 해결되지 않으면 위 기록을 본인 서비스 제공자에게 전달하고 문제가 ‘요청 시간 초과’, ‘HTTP 오류’, ‘요청은 성공했지만 목록이 비어 있음’ 중 무엇인지 설명하세요. 이런 정보가 전체 URL이 보이는 스크린샷보다 문제를 파악하는 데 유용합니다. 인증 정보를 변경해야 한다면 서비스 제공자의 보안 지원 채널을 이용하세요.
7. 자주 묻는 질문
웹페이지는 열리는데 구독이 업데이트되지 않는 이유는 무엇인가요?
일반 웹페이지와 구독 엔드포인트는 도메인, 인증 방식, 접속 정책이 다를 수 있습니다. 전체 URL을 먼저 확인하고 Settings → Subscribe → Update via Proxy의 설정 상태를 점검하세요. 직접 연결과 사용 가능한 기존 프록시 연결을 각각 사용한 결과도 따로 기록하세요.
업데이트에 실패하면 모든 노드를 바로 삭제해야 하나요?
아니요. 기존 노드는 유지하고 문제가 있는 구독만 따로 새로고침하세요. 기존 노드에 연결할 수 있다면 계속 보관하세요. 새 구독을 성공적으로 가져왔고 기존 항목이 실제로 작동하지 않는다고 확인한 뒤에만 정리하세요.
구독 URL을 재설정했는데 기존 링크도 계속 사용할 수 있나요?
기존 링크가 즉시 만료되는지는 서비스 제공자가 결정합니다. 현재 링크를 다시 복사해 기존 항목의 URL을 교체하세요. 계정에 다시 로그인했다고 해서 Shadowrocket에 저장된 인증 정보까지 자동으로 업데이트되는 것은 아닙니다.
업데이트는 성공했는데 인터넷이 연결되지 않으면 다음으로 무엇을 확인해야 하나요?
먼저 Home에서 실제로 사용할 노드를 선택해 Connectivity Test를 실행한 다음 Global Routing을 확인하세요. 규칙에 따라 트래픽을 분기해야 한다면 Config와 현재 설정의 Rule을 확인하세요. Direct는 일반 요청을 프록시로 전달하지 않습니다. 구독 업데이트에 성공해도 노드 연결이나 규칙 적용이 보장되는 것은 아닙니다.
Shadowrocket 다운로드 및 첫 설정 방법
iPhone / iPad 버전은 App Store에서 $2.99 일회성 결제로 제공되며, 개발자는 Shadow Launch Technology Limited입니다. 시스템 요구 사항은 App Store 페이지를 확인하세요. Mac(Apple 실리콘 / Intel), Windows, Android, Linux 버전은 무료입니다. 기기에 맞는 다운로드 페이지에서 설치 파일을 받은 뒤, 본인이 보유한 구독으로 설정을 완료하세요.