기존 구독과 정상 작동하는 항목을 먼저 보존한 뒤, ‘요청이 완료되지 않음’, ‘받은 콘텐츠를 파싱할 수 없음’, ‘응답에 유효한 항목이 없음’을 구분하세요. 직접 이용 중인 서비스 제공업체의 구독이 있는 사용자를 대상으로 Home의 Subscribe 등록, 주소 확인, HTTP 응답, 업데이트 네트워크와 재시도 시점을 순서대로 점검합니다. Config를 먼저 초기화하거나 구독을 반복해서 삭제하고 다시 만들 필요는 없습니다.
먼저 구분하기: 구독이 비어 있음, 파싱 실패, 연결 실패
Shadowrocket에서 구독을 업데이트한다는 것은 기존 구독 주소에서 콘텐츠를 가져와 항목을 만드는 과정입니다. 연결 테스트는 특정 항목으로 연결을 시도합니다. 구독 업데이트에 성공해도 연결이 반드시 되는 것은 아니며, 연결에 실패했다고 구독 주소가 유효하지 않다고 단정할 수도 없습니다. 문제가 어느 단계에서 발생했는지 먼저 확인하고, 모든 현상을 ‘노드를 사용할 수 없음’으로 묶지 마세요.
- 저장 후 구독 그룹만 있고 항목이 없음: 업데이트를 실행했는지, 그룹이 펼쳐져 있는지, 응답에 실제로 유효한 항목이 포함되어 있는지 확인하세요.
- 업데이트 중 파싱 오류가 표시됨: 우선 응답 형식을 확인하세요. 로그인 페이지, 오류 안내, 빈 응답은 정상적인 구독 목록으로 파싱할 수 없습니다.
- 한참 기다린 뒤 업데이트 실패: 먼저 구독 도메인에 접근하는 네트워크, DNS, TLS 연결을 확인한 다음 서버가 정상인지 확인하세요.
- 항목은 표시되지만 연결할 수 없음: 해당 항목의 주소, 포트, 인증, 전송 매개변수를 점검하세요. 연결 문제를 진단하는 대신 구독을 계속 새로 고치지 마세요.
Home은 주로 항목과 연결을 관리하고, Config는 구성 파일을, Settings는 관련 설정을 관리합니다. Config의 DOMAIN-SUFFIX나 FINAL을 수정해도 로그인 웹페이지가 구독 콘텐츠로 바뀌지는 않습니다. 기존 설정은 그대로 두고 구독 자체만 최소한으로 점검해야 각 조치의 효과를 판단하기 쉽습니다.
URL 형식: Subscribe에서 전체 주소 확인
직접 이용 중인 서비스 제공업체의 구독 관리 페이지에서 주소를 다시 복사하는 편이 손상된 링크를 직접 고치는 것보다 안전합니다. 계정 홈, 로그인 주소, 결제 페이지가 아닌 구독 주소를 복사했는지 확인하세요. 구독 URL의 쿼리 매개변수는 인증에 쓰이는 경우가 많으므로 문자 하나만 빠져도 서버 응답이 달라질 수 있습니다.
-
기존 기록 보존
Home에서 현재 구독 이름, 기존 항목 수, 이번 실패 메시지를 기록하세요. 정상 작동하는 항목이 남은 구독은 삭제하지 말고 기존 Config도 덮어쓰지 마세요.
-
전체 주소 복사
직접 이용 중인 서비스 제공업체 페이지에서 전체 구독 URL을 복사한 뒤, 프로토콜, 도메인, 경로와 물음표 뒤의 모든 매개변수를 확인하세요. 복사 과정에서 앞뒤에 들어간 공백은 제거하고 매개변수는 임의로 바꾸지 마세요.
-
입력 유형 확인
새로 추가해야 한다면 Home 오른쪽 위의 ‘+’를 눌러 Add Server로 이동하고 Type을 Subscribe로 설정한 뒤 URL에 주소를 붙여 넣으세요. 기존 구독은 해당 항목의 편집 화면에서 URL을 확인해 같은 그룹이 중복 생성되지 않도록 하세요.
-
저장 후 업데이트
저장한 뒤 Home으로 돌아가 아래로 당겨 업데이트하세요. 요청이 끝난 다음 그룹의 항목 수와 메시지를 확인하고, 요청이 진행 중일 때 새로 고침을 연달아 실행하지 마세요.
-
결과 한 번 기록하기
이번 업데이트 시간, 사용한 네트워크, 표시된 메시지 원문을 기록하세요. 다음에는 네트워크 전환처럼 조건 하나만 바꿔야 차이가 어디서 비롯됐는지 판단할 수 있습니다.
https://example.com/sub?token=xxxx
위 주소는 URL 구조를 설명하기 위한 예시이며 실제로 사용할 수 있는 구독 주소가 아닙니다. ? 뒤의 매개변수, 매개변수 사이의 &, 퍼센트 인코딩도 원래 주소의 일부일 수 있습니다. 채팅 앱에서 생략 부호로 표시된 부분을 링크 내용으로 착각하지 말고, 직접 디코딩한 뒤 다시 조합하지도 마세요. 웹페이지 소스에서 문자 그대로의 &를 복사했다면 추측으로 수정하지 말고 페이지의 복사 기능을 이용해 주소를 다시 가져오세요.
[Check]
ss://,vmess://,vless://,trojan://은 보통 개별 항목을 공유하는 형식이며 주기적으로 가져올 수 있는 HTTPS 구독 주소와는 다릅니다. 개별 항목은 해당 가져오기 방식으로 처리해야 합니다. 접두어만 HTTPS로 바꿔도 구독 업데이트 기능이 생기지는 않습니다.
응답 콘텐츠: HTTP 요청 성공이 파싱 성공을 의미하지는 않음
요청이 서버에 도달한 다음에는 서버가 실제로 무엇을 반환했는지도 확인해야 합니다. HTTP 상태 코드는 요청 처리 결과를 나타내지만, 구독 파싱은 응답 본문이 인식 가능한 항목 콘텐츠인지에도 달려 있습니다. 따라서 브라우저에서 주소가 열린다는 것은 응답이 있다는 뜻일 뿐, 페이지가 표시된다는 이유만으로 구독이 유효하다고 판단할 수는 없습니다.
결론: 본문을 먼저 확인하고 파서 문제인지 판단하세요
로그인 페이지, 인증 페이지, 점검 안내가 반환된다면 먼저 직접 이용 중인 서비스 제공업체에 구독 인터페이스 상태와 지원 형식을 확인하세요. 서버 페이지 문제를 해결하려고 로컬 규칙을 반복해서 수정하지 마세요.
일부 구독은 항목 목록을 인코딩해 반환하고, 일부는 바로 읽을 수 있는 텍스트로 반환합니다. ‘긴 문자열처럼 보인다’는 이유만으로 손상됐다고 판단할 수 없습니다. 반대로 형식이 완전한 HTML 페이지가 HTTP 200으로 반환되어도 가져올 수 있는 항목이 하나도 없을 수 있습니다. 해당 인터페이스가 웹에서 읽는 안내문이 아니라 Shadowrocket에서 인식할 수 있는 구독 콘텐츠를 제공하는지 서비스 제공업체에 확인하세요.
- 본문이 비어 있음: 계정에 현재 항목이 있어야 하는지, 인터페이스가 콘텐츠를 생성했는지, 캐시가 오래된 결과를 반환하고 있지는 않은지 서비스 제공업체에 확인하세요.
- 본문이 로그인 또는 인증 페이지임: 브라우저는 로그인 상태를 이용해 콘텐츠를 표시할 수 있지만, 앱의 구독 요청에는 같은 세션 조건이 적용되지 않을 수 있습니다. 클라이언트에서 사용할 수 있는 구독 주소를 받으세요.
- 본문에 오류 안내가 있음: 안내에 따라 권한, 계정 상태 또는 요청 제한을 확인하세요. 원문은 보관하고 오류 메시지를 Add Server의 다른 필드에 붙여 넣지 마세요.
- 일부 항목만 표시됨: 표시되지 않은 항목의 공유 형식, 필수 필드, 프로토콜 매개변수를 서비스 제공업체에 확인하세요. 일부가 가져와졌다고 해서 전체 콘텐츠가 올바르다고 판단할 수는 없습니다.
서비스 제공업체 측 확인: 응답 원문을 기준으로 처리하고 원인을 추측하지 않기
아래 카드에 적힌 내용은 표준 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으로 돌아가 업데이트하세요. 이 설정은 구독 요청의 접근 방식을 바꾸는 것으로, 잘못된 토큰이나 빈 응답, 서버 측 형식 문제를 해결하지는 않습니다. 사용할 수 있는 연결이 없다면 이 옵션만 켜도 업데이트 경로가 자동으로 만들어지지 않습니다.
- 먼저 네트워크 접속을 완료하세요: 새 Wi-Fi에서 웹 인증이 필요하다면 인증을 마친 뒤 앱으로 돌아와 업데이트하세요. 인증 페이지를 구독 응답으로 착각하지 마세요.
- 현재 연결 상태를 먼저 확인하세요: Global Routing의 Proxy, Direct, Config, Scene은 트래픽 처리 모드이지 구독 형식을 선택하는 옵션이 아닙니다. 현재 설정을 확인하는 것으로 충분하며 파싱을 시도하려고 하나씩 바꿀 필요는 없습니다.
- 자동 연결 조건에 유의하세요: Settings → On Demand는 조건에 따라 연결을 시작하는 기능이지 구독 업데이트 스위치가 아닙니다. 테스트 중 연결 상태가 바뀌었는지 기록해 네트워크 경로가 계속 달라지지 않도록 하세요.
- 네트워크를 바꾼 뒤 다시 시도하세요: 사용이 허용된 다른 네트워크에서 재시도하면 네트워크 경로 문제를 구분하는 데 도움이 됩니다. 조건 변화를 기록하고 URL이나 다른 설정을 동시에 바꾸지 마세요.
- 서버 측 반영을 기다리세요: 계정 상태나 구독 콘텐츠를 방금 변경했다면 직접 이용 중인 서비스 제공업체가 안내한 반영 시간을 따르세요. ‘몇 분 기다리면 반드시 복구된다’는 식으로 일률적인 시간을 정할 수는 없습니다.
구독 업데이트 오류를 해결하려고 인증서 확인을 끄지 마세요. TLS 관련 메시지가 나오면 먼저 기기의 날짜와 시간, 구독 도메인이 올바른지 확인한 다음 서비스 제공업체에 인증서와 인증서 체인을 점검해 달라고 요청하세요. 특정 네트워크에서만 실패한다면 보안 검사를 건너뛰기보다 해당 네트워크에서 표시된 메시지를 진단 자료로 보관하는 편이 문제 파악에 도움이 됩니다.
자주 묻는 질문: 데이터를 보존하고 마지막으로 점검하기
브라우저에서 주소가 열리는데 Home은 왜 비어 있나요?
브라우저에 항목 콘텐츠가 표시되는지, 계정 웹페이지나 인증 페이지가 표시되는지 먼저 확인하세요. 브라우저 로그인 상태가 구독 요청의 인증 조건과 같지는 않습니다. 직접 이용 중인 서비스 제공업체 페이지에서 클라이언트용 구독 주소를 다시 복사하고 Home의 Subscribe 편집 화면에서 URL을 확인한 뒤 업데이트하세요.
새로 고침에 실패하면 구독 전체를 삭제해야 하나요?
먼저 삭제하지 마세요. 기존 항목 수, 메시지, 마지막 업데이트 시간을 기록하고 정상 작동하는 항목을 보존하세요. 인터페이스 오류를 해결하기 위해 다시 가져올 필요는 없습니다. 꼭 다시 만들어야 한다면 주소가 유효한지 먼저 확인하고 필요한 원본 자료를 안전하게 보관하세요.
Update via Proxy를 켰는데도 시간 초과가 발생하면 어떻게 하나요?
먼저 기존 항목으로 실제 연결할 수 있는지 확인한 다음 현재 연결에서 구독 도메인에 접근할 수 있는지 확인하세요. 연결 자체를 사용할 수 없다면 해당 도메인에 접근할 수 있는 네트워크로 돌아가 테스트하세요. 해당 인터페이스에서만 실패한다면 발생 시간과 메시지를 직접 이용 중인 서비스 제공업체에 전달해 확인하세요.
구독 업데이트에 성공했는데 선택한 항목은 왜 작동하지 않나요?
업데이트 성공은 구독 콘텐츠를 가져와 처리했다는 뜻일 뿐입니다. 해당 항목의 편집 화면에서 프로토콜, 주소, 포트, 인증 매개변수를 확인한 뒤 서버 상태도 점검하세요. 예를 들어 Trojan의 TLS 매개변수는 직접 이용 중인 서비스 제공업체의 안내와 일치해야 합니다. 매개변수 점검을 업데이트 재실행으로 대신하지 마세요.
마지막으로 ‘전체 URL → Subscribe 유형 → 응답 본문 → 서버 상태 → 업데이트 네트워크 → 재시도 시점’ 순서로 확인하세요. 한 번에 변수 하나만 바꾸고 요청이 끝난 뒤 결과를 기록하세요. 문의가 필요하다면 아래 항목만으로 상황을 설명할 수 있으며 인증 정보 전체를 노출하지 않아도 됩니다.
- 처음 가져올 때 비어 있었는지, 기존 구독 업데이트에 실패했는지, 업데이트 후 일부 항목이 누락됐는지 설명하세요.
- 발생 시간, Wi-Fi 또는 셀룰러 네트워크 등 접속 조건, Update via Proxy 사용 여부를 알려 주세요.
- 메시지 원문과 확인 가능한 HTTP 상태 코드를 기록하세요. 상태 코드가 없다면 추측하지 말고 ‘확인되지 않음’이라고 명시하세요.
- 업데이트 전후 항목 수와 현재 유효한 항목이 있어야 하는지 서비스 제공업체에 확인했는지 알려 주세요.
- 필요한 정보만 직접 이용 중인 서비스 제공업체에 비공개 지원 채널로 전달하고, 공개할 스크린샷에서는 토큰과 다른 인증 정보를 가리세요.