이 글은 본인이 이용 중인 서비스 제공업체의 구독을 보유한 사용자를 위한 안내입니다. Shadowrocket에서 구독을 업데이트할 때는 먼저 응답을 가져온 다음 내용을 식별하고 서버 항목을 생성합니다. 이 과정 중 어느 단계에서든 실패하면 목록이 바뀌지 않을 수 있습니다. 기존 기록은 그대로 둔 채 링크, 계정 상태, 요청 경로, 콘텐츠 형식 순으로 확인하면 내용을 가져오지 못한 경우와 파싱할 수 없는 경우를 구분할 수 있어, 여전히 사용할 수 있는 설정을 반복해서 삭제하는 일을 피할 수 있습니다.
1. 목록이 비어 있는 경우, 업데이트 실패, 연결 실패 구분하기
구독 주소는 여러 서버 설정을 가져오는 데 사용하며, 개별 서버의 연결 주소와는 다릅니다. 구독 업데이트에 성공해도 포함된 모든 서버에 연결할 수 있는 것은 아닙니다. 반대로 기존 서버를 계속 사용할 수 있더라도 현재 구독 인터페이스에 접속할 수 있다는 뜻은 아닙니다. 문제를 확인하기 전에 Home에서 해당 구독 그룹을 펼쳐 그룹 전체에 항목이 없는지, 아니면 항목은 있지만 Connectivity Test에서 유효한 결과를 받지 못하는지 확인하세요.
- 문제 상황 기록: 오류 문구 원문, 발생 시각, 사용한 네트워크, 업데이트 후 항목이 달라졌는지 기록하세요. ‘작동하지 않음’이라고만 적어 두지 마세요.
- 기존 기록 보존: 기존 구독, Config 또는 연결 가능한 서버를 먼저 삭제하지 마세요. 화면을 보관해야 한다면 구독 주소, 비밀번호, token을 가리세요.
- 표시 상태 확인: Home에서 해당 그룹이 펼쳐져 있는지 확인하세요. 검색이나 필터를 사용 중이라면 조건을 먼저 지운 다음 실제로 목록이 비어 있는지 판단하세요.
- 테스트 범위 제한: 한 번에 구독 하나만 확인하세요. 단일 그룹을 업데이트한 뒤 결과를 살펴보고, 다른 그룹의 성공 여부로 이 구독을 검증했다고 판단하지 마세요.
항목은 정상적으로 표시되지만 연결 시간이 초과된다면 구독 인코딩이 아니라 서버 설정과 연결 상태를 확인해야 합니다. 이후 단계는 구독 내용을 가져오거나 파싱하지 못하는 경우에 초점을 맞춥니다.
2. 링크 형식·전체 주소·가져오기 위치 확인하기
본인의 서비스 제공업체 구독 관리 페이지에서 전체 주소를 다시 복사한 다음 Shadowrocket에 저장된 주소와 대조하세요. 계정 로그인 페이지, 주문 페이지 또는 브라우저 주소창에 표시된 관리 페이지 주소를 구독 인터페이스 대신 사용하지 마세요. token이 포함된 쿼리 매개변수는 보통 인증에 사용됩니다. 문자 하나가 빠지거나 복사 과정에서 줄바꿈이 들어가도 요청 결과가 달라질 수 있습니다.
https://example.com/sub?token=xxxx
위 주소는 구조를 설명하기 위한 가짜 주소일 뿐이며 서버 항목을 제공하지 않습니다. https://는 프로토콜 부분, example.com은 예시 호스트 이름, /sub는 예시 경로이며 물음표 뒤는 쿼리 매개변수입니다. 실제 경로와 매개변수는 서비스 제공업체가 제공한 그대로 사용하고 예시를 참고해 임의로 바꾸지 마세요.
- 앞뒤 확인: 복사할 때 함께 들어간 공백, 따옴표, 설명 문구를 제거하고 끝부분의 매개변수가 빠지지 않았는지 확인하세요.
- 문자 확인: 전각 문장부호를 반각
:,?,&대신 사용할 수 없습니다. 주소의%이스케이프 시퀀스를 임의로 디코딩하거나 다시 인코딩하지 마세요. - 콘텐츠 유형 확인: 단일 서버 공유 정보와 구독 URL은 서로 다른 입력입니다. 여러 서버 공유 정보를 이어 붙여도 유효한 구독 인터페이스가 되는 것은 아닙니다.
- 가져오기 위치 확인: Home에서 구독 항목을 추가하세요. Config는 구성 파일과 규칙 관리에 사용하는 곳이므로, 임의의 구독 주소를 Config 파일 주소로 가져오면 안 됩니다.
- 인증 정보 변경 여부 확인: 구독 주소나 token을 재설정했다면 앱에 저장된 기존 주소가 자동으로 새 주소로 바뀌지 않습니다. 저장된 값을 새 주소와 다시 대조하세요.
3. 서비스 제공업체 상태와 HTTP 응답 확인하기
주소가 온전하더라도 인터페이스가 서버 설정을 반환한다는 보장은 없습니다. 계정 만료, 접근 권한 변경, 인터페이스 점검, 요청 횟수 제한 등에 따라 같은 주소에서도 서로 다른 응답이 올 수 있습니다. 먼저 본인의 계정 페이지에서 구독 유효 여부, 사용 가능한 항목이 남아 있는지, 주소가 재설정되었는지 확인하세요. 이러한 상태는 서비스 제공업체에 확인해야 하며, 클라이언트에서는 서버 측 권한이나 데이터를 수정할 수 없습니다.
아래는 요청 로그나 서버 진단에 표시될 수 있는 HTTP 상태 문구 원문이며, Shadowrocket 팝업 문구를 그대로 보장하는 것은 아닙니다. 앱에 상태 코드가 표시되지 않았다면 목록이 비어 있다는 이유만으로 특정 상태라고 단정하지 마세요.
오류: 401 Unauthorized
원인 및 해결 방법: 인터페이스가 현재 인증 정보를 승인하지 않았습니다. 구독 token이 누락되었거나 만료되었거나 재설정되었는지 확인한 다음 계정 페이지에 표시된 새 주소로 업데이트하세요.
오류: 403 Forbidden
원인 및 해결 방법: 서버가 이번 접근을 거부했습니다. 본인의 서비스 제공업체에 계정 권한, 접근 출처 제한, 인터페이스 요구 사항을 확인하세요. 서버 연결 설정을 반복해서 바꾸는 방식으로 해결하려 하지 마세요.
오류: 429 Too Many Requests
원인 및 해결 방법: 요청 횟수 제한에 걸렸습니다. 연속 새로고침을 멈추고 서버 안내나 서비스 제공업체의 설명에 나온 대기 시간에 따라 다시 시도하세요. 여러 기기에서 자동 업데이트가 동시에 실행되는지도 확인하세요.
판단 기준: 파싱보다 먼저 인터페이스 응답 복구
인증 오류나 접근 제한 페이지가 반환되는 것을 확인했다면 먼저 구독 인터페이스가 유효한 응답을 보내도록 해야 합니다. 프로토콜을 바꾸거나 규칙을 수정하거나 같은 주소를 다시 가져와도 서버가 보내지 않은 데이터를 되살릴 수는 없습니다.
4. 업데이트 시점과 네트워크 경로를 나눠 확인하기
구독 업데이트도 도메인 확인, 연결, HTTPS 검증을 거치는 네트워크 요청입니다. 현재 네트워크에서 일반 웹페이지가 열린다고 해서 구독 호스트에도 접속할 수 있는 것은 아닙니다. 브라우저에서 계정에 로그인한 상태라면 Cookie 덕분에 내용이 표시될 수도 있습니다. 앱이 구독 URL로 요청할 때는 같은 로그인 상태가 아닐 수 있으므로 ‘브라우저에서 열린다’는 사실은 참고 정보로만 활용하세요.
- 먼저 네트워크 인증 완료: 현재 Wi-Fi에서 웹 인증이 필요하다면 먼저 인증을 마친 뒤 Home으로 돌아와 수동 업데이트하세요. 인증 페이지에서 반환된 HTML은 구독 콘텐츠로 파싱할 수 없습니다.
- 업데이트 결과 한 번 기록: Home에서 아래로 당겨 새로고침한 뒤 이번 요청이 끝날 때까지 기다리고 결과를 기록하세요. 요청이 끝나기 전에 연속으로 다시 실행하지 마세요.
- 변수 하나씩 바꾸기: 가능하다면 같은 주소를 Wi-Fi와 셀룰러 네트워크에서 각각 테스트하세요. 네트워크와의 관련성을 판단할 수 있도록 나머지 구독 설정은 그대로 두세요.
- 업데이트 경로 확인: Settings → Subscribe에서 업데이트 관련 옵션을 확인하세요. 현재 앱에 Update via Proxy가 표시된다면 해당 옵션의 상태를 기록하고 선택한 경로를 실제로 사용할 수 있는지 확인하세요. 초기 설정은 현재 앱에 표시된 값을 기준으로 판단하세요.
- 사용 가능한 연결이 있을 때 프록시 경로 테스트: 프록시를 통해 업데이트해야 한다면 먼저 기존 서버에 연결해 사용할 수 있는지 확인한 다음 구독을 업데이트하세요. 목록이 비어 있고 다른 사용 가능한 서버도 없다면 프록시 업데이트를 켜기만 해서는 작동하는 연결이 생기지 않습니다.
- 자동 연결의 영향 확인: Settings → On Demand에서 테스트 중인 네트워크에 자동으로 연결을 복구하도록 설정되어 있는지 확인하세요. 기존 설정을 기록해 두면 자동 재연결 후의 경로를 연결되지 않은 상태로 잘못 기록하는 일을 피할 수 있습니다. 테스트가 끝나면 원래 설정으로 되돌리세요.
Home의 Global Routing은 트래픽 처리 방식을 정하며 Proxy, Direct, Config, Scene은 구독 형식 네 가지를 뜻하지 않습니다. 특히 Proxy가 표시된다는 이유만으로 구독 요청이 프록시를 통과했다고 단정하지 마세요. 구독 업데이트 옵션, 연결 상태, 실제 요청 결과를 각각 확인해야 합니다. Config의 규칙으로 서버가 반환한 빈 응답을 해결할 수는 없습니다.
5. 데이터를 가져온 뒤 응답 내용과 인코딩 확인하기
HTTP 요청에 성공했다고 구독 파싱까지 성공한 것은 아닙니다. 상태가 200 OK여도 응답 본문은 로그인 페이지, 점검 안내, 빈 텍스트일 수 있으며 현재 가져오기 기능에 맞지 않는 내용일 수도 있습니다. 같은 다운로드를 반복하는 대신 서비스 제공업체가 제공한 출력 유형을 확인하세요.
| 응답 상태 | 가능한 의미 | 다음 확인 사항 |
|---|---|---|
| 본문에 HTML 페이지 구조가 포함됨 | 로그인 페이지, 네트워크 인증 페이지 또는 인터페이스 오류 페이지 | 웹 로그인 상태에 의존하지 않고 구독 인터페이스에서 설정을 반환하는지 확인 |
| 응답 본문이 비어 있음 | 인터페이스에서 항목을 반환하지 않았거나 현재 계정에 사용 가능한 데이터가 없음 | 본인의 서비스 제공업체에 항목 수와 인터페이스 상태 확인 요청 |
| Base64 텍스트 반환 | 인코딩된 서버 공유 정보 모음일 수 있음 | 데이터 전체가 온전하고 인코딩이 유효한지, 디코딩 결과가 지원되는 구독 콘텐츠인지 확인 |
| 일부 항목만 표시됨 | 일부 항목의 필드가 누락되었거나 형식이 호환되지 않거나 필터링됨 | 먼저 필터를 해제한 다음 누락된 항목의 출력 형식을 서비스 제공업체에 확인 |
Base64는 인코딩이지 암호화가 아니며, 유효한 구독을 보장하지도 않습니다. 인코딩 텍스트가 잘렸거나 설명 문구가 섞였거나 디코딩 결과가 오류 페이지라면 파싱에 실패할 수 있습니다. 전체 구독 내용을 온라인 디코딩 도구에 올리지 마세요. 본인의 서비스 제공업체에 원본 응답과 인코딩이 온전한지 확인하고 Shadowrocket에 맞는 출력을 제공해 달라고 요청할 수 있습니다.
- 원본 콘텐츠 보존: 줄바꿈을 임의로 추가하거나 불필요해 보이는 기호를 삭제하거나 여러 응답을 이어 붙여 다시 가져오지 마세요.
- 형식과 필드 확인: Shadowsocks, VMess, VLESS, Trojan, Hysteria2, WireGuard는 서로 다른 프로토콜입니다. 이름을 바꾼다고 매개변수 묶음이 다른 프로토콜로 바뀌지는 않습니다.
- 누락과 연결 불가 구분: 서버 주소, 포트, 인증 정보 등의 필드가 누락되면 파싱에 영향을 줄 수 있습니다. 필드가 모두 있는데 Connectivity Test에 실패한다면 실제 연결 조건을 추가로 확인해야 합니다.
- 출력 용도 확인: 서비스 제공업체에서 여러 내보내기 항목을 제공한다면 Shadowrocket용이라고 명시된 구독 출력을 선택하세요. 아무 구성 문서나 서버 목록으로 취급하지 마세요.
6. 자주 묻는 질문과 복구 후 확인 사항
링크를 다시 복사해도 목록이 비어 있습니다. 기존 구독을 삭제해야 하나요?
먼저 삭제하지 마세요. 기존 그룹을 유지하고 새 주소가 올바르게 저장되었는지 확인한 다음 해당 구독을 업데이트하고 오류를 살펴보세요. 삭제해도 현재 기록만 사라질 뿐 인터페이스 인증, 네트워크 시간 초과, 콘텐츠 형식 문제는 해결되지 않습니다.
브라우저에서는 내용이 보이는데 앱에서 파싱에 실패하는 이유는 무엇인가요?
브라우저에 원본 설정이 표시되는지 계정 웹페이지가 표시되는지 먼저 구분하세요. 브라우저는 로그인 Cookie를 사용하거나 리디렉션을 따라 관리 페이지를 열 수 있습니다. 서비스 제공업체에 구독 URL의 직접 응답 내용과 추가 인증이 필요한지 확인하세요.
연결 스위치를 켜고 업데이트하면 반드시 해결되나요?
그렇지는 않습니다. 기존 연결을 사용할 수 있어야 하며 업데이트 경로도 현재 설정에 맞아야 합니다. token이 만료되었거나 응답 형식이 잘못된 문제라면 경로를 바꿔도 해결되지 않습니다. 먼저 Settings → Subscribe의 업데이트 옵션을 기록한 뒤 조건을 통제해 한 번 테스트하세요.
목록이 복구되었습니다. 추가로 확인할 사항이 있나요?
Home에서 대상 그룹에 항목이 나타나는지 확인한 다음 서버 하나를 선택해 Connectivity Test를 실행하고 실제 접속도 테스트하세요. 문제 해결을 위해 임시로 바꾼 On Demand 등의 설정은 원래대로 복구하세요. 일부 항목만 복구됐다면 필터와 서비스 제공업체의 출력 내용을 계속 확인하세요.
본인의 서비스 제공업체에 문제를 문의할 때는 발생 시각, 사용한 네트워크, 업데이트에 프록시를 사용했는지, 오류 문구 원문, 목록이 완전히 비었는지 또는 일부 항목이 누락됐는지를 알려주세요. 전체 token, 비밀번호 또는 서버 인증 정보는 보내지 마세요. 이 사이트는 서버나 구독을 제공·판매·추천하지 않습니다. 구독 유효성과 서버 측 출력은 사용자가 이용하는 서비스 제공업체에 확인해야 합니다.
완료 기준: 가져오기·파싱·연결을 각각 확인
이번 업데이트가 완료되고 그룹에 항목이 표시되면 가져오기와 파싱이 복구된 것입니다. 이어서 Connectivity Test와 실제 접속으로 연결을 확인하세요. 세 가지 결과를 따로 기록해 두면 다음에 문제가 발생했을 때 실패한 단계부터 이어서 확인할 수 있습니다.