2026-09-15 · 문제 해결 · 약 9분

Shadowrocket 구독 가져오기 후 비어 있거나 파싱에 실패할 때: URL 형식·서비스 제공업체·업데이트 시점 점검

구독이 비어 있거나 파싱에 실패하면 URL, 응답 형식, 서비스 제공업체 상태, 업데이트 시점을 차례로 확인하세요.

이 글의 핵심

기존 구독과 정상 작동하는 항목을 먼저 보존한 뒤, ‘요청이 완료되지 않음’, ‘받은 콘텐츠를 파싱할 수 없음’, ‘응답에 유효한 항목이 없음’을 구분하세요. 직접 이용 중인 서비스 제공업체의 구독이 있는 사용자를 대상으로 Home의 Subscribe 등록, 주소 확인, HTTP 응답, 업데이트 네트워크와 재시도 시점을 순서대로 점검합니다. Config를 먼저 초기화하거나 구독을 반복해서 삭제하고 다시 만들 필요는 없습니다.

먼저 구분하기: 구독이 비어 있음, 파싱 실패, 연결 실패

Shadowrocket에서 구독을 업데이트한다는 것은 기존 구독 주소에서 콘텐츠를 가져와 항목을 만드는 과정입니다. 연결 테스트는 특정 항목으로 연결을 시도합니다. 구독 업데이트에 성공해도 연결이 반드시 되는 것은 아니며, 연결에 실패했다고 구독 주소가 유효하지 않다고 단정할 수도 없습니다. 문제가 어느 단계에서 발생했는지 먼저 확인하고, 모든 현상을 ‘노드를 사용할 수 없음’으로 묶지 마세요.

Home은 주로 항목과 연결을 관리하고, Config는 구성 파일을, Settings는 관련 설정을 관리합니다. Config의 DOMAIN-SUFFIX나 FINAL을 수정해도 로그인 웹페이지가 구독 콘텐츠로 바뀌지는 않습니다. 기존 설정은 그대로 두고 구독 자체만 최소한으로 점검해야 각 조치의 효과를 판단하기 쉽습니다.

URL 형식: Subscribe에서 전체 주소 확인

직접 이용 중인 서비스 제공업체의 구독 관리 페이지에서 주소를 다시 복사하는 편이 손상된 링크를 직접 고치는 것보다 안전합니다. 계정 홈, 로그인 주소, 결제 페이지가 아닌 구독 주소를 복사했는지 확인하세요. 구독 URL의 쿼리 매개변수는 인증에 쓰이는 경우가 많으므로 문자 하나만 빠져도 서버 응답이 달라질 수 있습니다.

  1. 기존 기록 보존

    Home에서 현재 구독 이름, 기존 항목 수, 이번 실패 메시지를 기록하세요. 정상 작동하는 항목이 남은 구독은 삭제하지 말고 기존 Config도 덮어쓰지 마세요.

  2. 전체 주소 복사

    직접 이용 중인 서비스 제공업체 페이지에서 전체 구독 URL을 복사한 뒤, 프로토콜, 도메인, 경로와 물음표 뒤의 모든 매개변수를 확인하세요. 복사 과정에서 앞뒤에 들어간 공백은 제거하고 매개변수는 임의로 바꾸지 마세요.

  3. 입력 유형 확인

    새로 추가해야 한다면 Home 오른쪽 위의 ‘+’를 눌러 Add Server로 이동하고 Type을 Subscribe로 설정한 뒤 URL에 주소를 붙여 넣으세요. 기존 구독은 해당 항목의 편집 화면에서 URL을 확인해 같은 그룹이 중복 생성되지 않도록 하세요.

  4. 저장 후 업데이트

    저장한 뒤 Home으로 돌아가 아래로 당겨 업데이트하세요. 요청이 끝난 다음 그룹의 항목 수와 메시지를 확인하고, 요청이 진행 중일 때 새로 고침을 연달아 실행하지 마세요.

  5. 결과 한 번 기록하기

    이번 업데이트 시간, 사용한 네트워크, 표시된 메시지 원문을 기록하세요. 다음에는 네트워크 전환처럼 조건 하나만 바꿔야 차이가 어디서 비롯됐는지 판단할 수 있습니다.

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

위 주소는 URL 구조를 설명하기 위한 예시이며 실제로 사용할 수 있는 구독 주소가 아닙니다. ? 뒤의 매개변수, 매개변수 사이의 &, 퍼센트 인코딩도 원래 주소의 일부일 수 있습니다. 채팅 앱에서 생략 부호로 표시된 부분을 링크 내용으로 착각하지 말고, 직접 디코딩한 뒤 다시 조합하지도 마세요. 웹페이지 소스에서 문자 그대로의 &를 복사했다면 추측으로 수정하지 말고 페이지의 복사 기능을 이용해 주소를 다시 가져오세요.

[Check]

ss://, vmess://, vless://, trojan://은 보통 개별 항목을 공유하는 형식이며 주기적으로 가져올 수 있는 HTTPS 구독 주소와는 다릅니다. 개별 항목은 해당 가져오기 방식으로 처리해야 합니다. 접두어만 HTTPS로 바꿔도 구독 업데이트 기능이 생기지는 않습니다.

응답 콘텐츠: HTTP 요청 성공이 파싱 성공을 의미하지는 않음

요청이 서버에 도달한 다음에는 서버가 실제로 무엇을 반환했는지도 확인해야 합니다. HTTP 상태 코드는 요청 처리 결과를 나타내지만, 구독 파싱은 응답 본문이 인식 가능한 항목 콘텐츠인지에도 달려 있습니다. 따라서 브라우저에서 주소가 열린다는 것은 응답이 있다는 뜻일 뿐, 페이지가 표시된다는 이유만으로 구독이 유효하다고 판단할 수는 없습니다.

200
HTTP 요청에 성공해도 본문이 구독 콘텐츠인지 확인해야 합니다
401
HTTP 인증에 실패했다면 토큰과 권한 상태를 먼저 확인하세요
429
HTTP 요청이 너무 많다면 서버 안내에 따라 기다린 뒤 다시 시도하세요

결론: 본문을 먼저 확인하고 파서 문제인지 판단하세요

로그인 페이지, 인증 페이지, 점검 안내가 반환된다면 먼저 직접 이용 중인 서비스 제공업체에 구독 인터페이스 상태와 지원 형식을 확인하세요. 서버 페이지 문제를 해결하려고 로컬 규칙을 반복해서 수정하지 마세요.

일부 구독은 항목 목록을 인코딩해 반환하고, 일부는 바로 읽을 수 있는 텍스트로 반환합니다. ‘긴 문자열처럼 보인다’는 이유만으로 손상됐다고 판단할 수 없습니다. 반대로 형식이 완전한 HTML 페이지가 HTTP 200으로 반환되어도 가져올 수 있는 항목이 하나도 없을 수 있습니다. 해당 인터페이스가 웹에서 읽는 안내문이 아니라 Shadowrocket에서 인식할 수 있는 구독 콘텐츠를 제공하는지 서비스 제공업체에 확인하세요.

서비스 제공업체 측 확인: 응답 원문을 기준으로 처리하고 원인을 추측하지 않기

아래 카드에 적힌 내용은 표준 HTTP 응답 상태 문구이며, Shadowrocket에 같은 메시지가 그대로 표시된다는 뜻은 아닙니다. 앱 메시지, 요청 진단 결과 또는 서비스 제공업체 기록에서 해당 상태 코드를 확인한 경우에만 해당 항목에 따라 처리하세요. ‘파싱 실패’만으로 인증이 무효이거나 접근이 제한됐다고 단정할 수 없습니다.

HTTP 401 Unauthorized

원인 및 해결: 인증에 실패한 요청입니다. 직접 이용 중인 서비스 제공업체 페이지에서 현재 유효한 구독 주소를 다시 받아 전체 토큰과 권한 상태를 확인한 뒤 업데이트하세요.

HTTP 403 Forbidden

원인 및 해결: 서버가 요청을 거부했습니다. 구체적인 제한은 서버 측에 확인해야 합니다. 상태 코드와 발생 시간을 전달해 서비스 제공업체에 접근 정책을 확인하세요. 상태 코드만으로 계정이 만료됐다고 판단하지 마세요.

HTTP 404 Not Found

원인 및 해결: 요청한 리소스를 찾을 수 없습니다. 도메인과 경로가 모두 포함되어 있는지, 서비스 제공업체가 구독 주소를 변경했는지 확인하세요. 새 경로를 임의로 추측하지 마세요.

HTTP 429 Too Many Requests

원인 및 해결: 요청 빈도 제한에 걸렸습니다. 연속 새로 고침을 멈추고, 응답에 Retry-After가 있으면 안내된 시간만큼 기다리세요. 표시되지 않았다면 허용되는 재시도 간격을 서비스 제공업체에 확인하세요.

HTTP 503 Service Unavailable

원인 및 해결: 서버가 현재 요청을 처리할 수 없습니다. 기존 항목은 보존하고 서비스 제공업체에 복구 상황을 확인한 뒤 서비스가 복구되면 업데이트를 한 번 실행하세요.

서비스 제공업체가 인터페이스 복구를 알렸는데도 클라이언트가 비어 있다면, 업데이트로 새 콘텐츠를 가져오지 못한 것인지 가져온 콘텐츠 자체가 비어 있는지 구분해 확인하세요. 업데이트 시간, 상태 코드, 항목 수 변화, 메시지 원문을 전달하면 문제를 파악하는 데 도움이 됩니다. 스크린샷이나 로그를 공유하기 전에 구독 토큰, 비밀번호, UUID 등의 인증 정보를 가리고 공개 게시물에 전체 URL을 올리지 마세요.

업데이트 시점: 네트워크 경로, 프록시를 통한 업데이트, 자동 연결

구독을 업데이트하려면 구독 도메인에 접근할 수 있어야 하고, 항목으로 연결하려면 해당 항목의 서버에 접근할 수 있어야 합니다. 두 도메인과 네트워크 경로는 서로 다를 수 있습니다. 특정 항목이 연결된다고 해서 구독 도메인에 현재 직접 연결할 수 있다는 뜻은 아니며, 구독 도메인에 접근된다고 해서 모든 항목의 서버가 정상이라는 뜻도 아닙니다.

직접 연결 요청이 시간 초과되고 기존 항목은 정상 작동한다면, 먼저 사용 가능한 연결을 만든 다음 Settings → Subscribe에서 Update via Proxy를 확인하고 필요에 따라 켠 뒤 Home으로 돌아가 업데이트하세요. 이 설정은 구독 요청의 접근 방식을 바꾸는 것으로, 잘못된 토큰이나 빈 응답, 서버 측 형식 문제를 해결하지는 않습니다. 사용할 수 있는 연결이 없다면 이 옵션만 켜도 업데이트 경로가 자동으로 만들어지지 않습니다.

구독 업데이트 오류를 해결하려고 인증서 확인을 끄지 마세요. TLS 관련 메시지가 나오면 먼저 기기의 날짜와 시간, 구독 도메인이 올바른지 확인한 다음 서비스 제공업체에 인증서와 인증서 체인을 점검해 달라고 요청하세요. 특정 네트워크에서만 실패한다면 보안 검사를 건너뛰기보다 해당 네트워크에서 표시된 메시지를 진단 자료로 보관하는 편이 문제 파악에 도움이 됩니다.

자주 묻는 질문: 데이터를 보존하고 마지막으로 점검하기

브라우저에서 주소가 열리는데 Home은 왜 비어 있나요?

브라우저에 항목 콘텐츠가 표시되는지, 계정 웹페이지나 인증 페이지가 표시되는지 먼저 확인하세요. 브라우저 로그인 상태가 구독 요청의 인증 조건과 같지는 않습니다. 직접 이용 중인 서비스 제공업체 페이지에서 클라이언트용 구독 주소를 다시 복사하고 Home의 Subscribe 편집 화면에서 URL을 확인한 뒤 업데이트하세요.

새로 고침에 실패하면 구독 전체를 삭제해야 하나요?

먼저 삭제하지 마세요. 기존 항목 수, 메시지, 마지막 업데이트 시간을 기록하고 정상 작동하는 항목을 보존하세요. 인터페이스 오류를 해결하기 위해 다시 가져올 필요는 없습니다. 꼭 다시 만들어야 한다면 주소가 유효한지 먼저 확인하고 필요한 원본 자료를 안전하게 보관하세요.

Update via Proxy를 켰는데도 시간 초과가 발생하면 어떻게 하나요?

먼저 기존 항목으로 실제 연결할 수 있는지 확인한 다음 현재 연결에서 구독 도메인에 접근할 수 있는지 확인하세요. 연결 자체를 사용할 수 없다면 해당 도메인에 접근할 수 있는 네트워크로 돌아가 테스트하세요. 해당 인터페이스에서만 실패한다면 발생 시간과 메시지를 직접 이용 중인 서비스 제공업체에 전달해 확인하세요.

구독 업데이트에 성공했는데 선택한 항목은 왜 작동하지 않나요?

업데이트 성공은 구독 콘텐츠를 가져와 처리했다는 뜻일 뿐입니다. 해당 항목의 편집 화면에서 프로토콜, 주소, 포트, 인증 매개변수를 확인한 뒤 서버 상태도 점검하세요. 예를 들어 Trojan의 TLS 매개변수는 직접 이용 중인 서비스 제공업체의 안내와 일치해야 합니다. 매개변수 점검을 업데이트 재실행으로 대신하지 마세요.

마지막으로 ‘전체 URL → Subscribe 유형 → 응답 본문 → 서버 상태 → 업데이트 네트워크 → 재시도 시점’ 순서로 확인하세요. 한 번에 변수 하나만 바꾸고 요청이 끝난 뒤 결과를 기록하세요. 문의가 필요하다면 아래 항목만으로 상황을 설명할 수 있으며 인증 정보 전체를 노출하지 않아도 됩니다.

  1. 처음 가져올 때 비어 있었는지, 기존 구독 업데이트에 실패했는지, 업데이트 후 일부 항목이 누락됐는지 설명하세요.
  2. 발생 시간, Wi-Fi 또는 셀룰러 네트워크 등 접속 조건, Update via Proxy 사용 여부를 알려 주세요.
  3. 메시지 원문과 확인 가능한 HTTP 상태 코드를 기록하세요. 상태 코드가 없다면 추측하지 말고 ‘확인되지 않음’이라고 명시하세요.
  4. 업데이트 전후 항목 수와 현재 유효한 항목이 있어야 하는지 서비스 제공업체에 확인했는지 알려 주세요.
  5. 필요한 정보만 직접 이용 중인 서비스 제공업체에 비공개 지원 채널로 전달하고, 공개할 스크린샷에서는 토큰과 다른 인증 정보를 가리세요.
App Store에서 정식 앱 확인