이 글의 핵심

Shadowrocket에서 구독을 업데이트한 뒤 노드가 보이지 않으면 기존 기록을 먼저 보존하고, ‘요청 실패’, ‘응답 내용 오류’, ‘목록 미표시’ 중 어떤 문제인지 구분하세요. 이 글은 사용자가 이미 서비스 제공업체와 구독을 보유한 상황을 전제로 URL, 응답, 네트워크, 업데이트 시점을 차례로 확인하고, 마지막에 한 번의 통제된 업데이트로 결과를 검증합니다.

1. 목록이 비어 있는지, 업데이트가 완료되지 않은 것인지 확인

구독 업데이트는 여러 단계를 거칩니다. 앱이 저장된 URL을 읽고 구독 주소에 요청을 보내 응답을 받은 다음, 인식 가능한 노드 기록을 Home에 표시합니다. 어느 한 단계에서 문제가 생겨도 ‘새 노드가 없음’으로 보일 수 있지만, 원인에 따라 해결 방법은 다릅니다. 구독을 먼저 삭제하지 말고, 연결 스위치의 상태를 업데이트 성공의 근거로 삼지도 마세요.

URL 읽기 구독 요청 응답 받기 기록 파싱 목록 표시
  1. Home으로 돌아가 검색을 종료하고 해당 구독 그룹을 펼쳐 보세요. 검색 조건이나 접힌 그룹 때문에 목록이 비어 보이는 것은 아닌지 확인합니다.
  2. 이번 업데이트에서 오류가 표시됐는지, 기존 노드는 남아 있는지, 한 그룹만 비어 있는지 아니면 모든 그룹이 비어 있는지 기록하세요.
  3. 현재 확인하려는 항목이 무엇인지 점검하세요. Config는 구성 파일과 규칙을 관리하며, 이 글에서 확인하는 대상은 Home의 구독 노드 목록입니다. 구성 파일 업데이트는 노드 구독 업데이트와 다릅니다.
  4. 구독 이름과 원래 URL을 비공개로 백업하세요. 연결 가능한 항목이 있다면 먼저 보존해 삭제 후 유일한 테스트 경로를 잃지 않도록 합니다.

‘기존 목록은 남아 있지만 새 항목이 없음’은 업데이트가 완료되지 않았거나 원격 콘텐츠가 바뀌지 않은 경우에 가깝습니다. ‘업데이트 후 특정 그룹이 비어 있음’은 응답 내용과 계정 상태를 중점적으로 확인해야 합니다. ‘모든 목록이 보이지 않음’은 먼저 Home의 표시 범위를 확인하세요. 이러한 현상은 다음 점검 단계를 정하는 단서일 뿐, 그 자체로 장애 원인을 확정하지는 않습니다.

2. 전체 URL 확인: 계정 페이지를 구독 주소로 사용하지 마세요

구독 주소는 앱에서 구성 내용을 가져오는 URL이지, 계정 홈이나 주문 페이지 또는 브라우저 로그인 페이지가 아닙니다. 본인 서비스 제공업체 계정에서 Shadowrocket용 구독 주소를 다시 복사한 뒤, 앱에 저장된 주소와 글자 단위로 비교하세요. URL이 길어 보여도 전체 주소라는 보장은 없습니다. 쿼리 매개변수 일부만 빠져도 인증에 실패할 수 있습니다.

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

위 내용은 연결에 사용할 수 없는 형식 예시입니다. https://는 접속 방식, example.com은 예시 도메인, /sub는 예시 경로, token=xxxx는 가짜 인증 값입니다. 실제 서비스의 경로, 매개변수 이름, 인증 방식은 다를 수 있으므로 이 예시를 보고 기존 URL을 임의로 수정하지 마세요.

3. 응답 결과 확인: 웹페이지가 열려도 노드로 파싱되는 것은 아닙니다

브라우저에서 페이지가 열렸다는 사실은 브라우저가 해당 요청을 완료했다는 뜻일 뿐입니다. 브라우저에는 로그인 Cookie가 남아 있을 수 있고, 사람인지 확인하는 페이지가 표시될 수도 있습니다. Shadowrocket이 구독을 가져올 때는 이러한 브라우저 세션 조건을 갖추지 못할 수 있습니다. HTTP 상태가 200 OK여도 로그인 페이지, 오류 안내 또는 빈 본문이 반환될 수 있습니다.

200
HTTP 요청이 성공했더라도 본문에 파싱 가능한 기록이 있는지 확인해야 합니다
401 / 403
인증 정보와 서버 측 접근 제한을 각각 확인하세요
429
요청 빈도 제한에 걸렸다면 서버 안내에 따라 기다린 뒤 다시 시도하세요

정리: 먼저 응답 내용을 확인한 다음 파싱 관련 설정을 조정하세요

로그인 페이지나 빈 본문을 받은 경우 노드 프로토콜을 바꿔도 누락된 기록이 생기지는 않습니다. 먼저 본인 서비스 제공업체에 구독 엔드포인트가 Shadowrocket에서 사용할 수 있는 유효한 콘텐츠를 반환하는지 확인하세요.

아래는 요청 상세 정보, 서버 기록 또는 오류 안내에 표시될 수 있는 표준 HTTP 상태 문구입니다. 앱에 항상 같은 형태로 표시되는 것은 아니므로 실제 확인한 상태를 기준으로 판단하세요. ‘목록이 비어 있음’만 보고 특정 상태 코드를 단정하지 마세요.

HTTP 401 Unauthorized

원인 및 해결: 요청에 유효한 인증 정보가 없습니다. 본인 계정에서 현재 유효한 전체 구독 주소를 다시 복사하고 token이 재설정됐는지 확인하세요.

HTTP 403 Forbidden

원인 및 해결: 서버가 현재 요청을 거부했습니다. 계정 권한과 엔드포인트 접근 조건을 확인하고, 접근 제한은 본인 서비스 제공업체에 문의하세요. 반복해서 새로고침해도 해결되지 않습니다.

HTTP 404 Not Found

원인 및 해결: 대상 경로가 없거나 변경됐습니다. 이전 주소를 복사했는지, 경로 일부가 빠졌는지 확인하고 계정에 현재 표시된 구독 주소를 사용하세요.

HTTP 429 Too Many Requests

원인 및 해결: 요청 빈도 제한에 걸렸습니다. 연속으로 업데이트하지 마세요. 응답에 Retry-After가 있으면 지정된 시간만큼 기다리고, 안내가 없다면 본인 서비스 제공업체에 재시도 간격을 문의하세요.

서비스 제공업체가 응답에 기록이 포함됐다고 확인했는데도 앱에서 파싱하지 못한다면, 선택한 출력 형식을 추가로 확인하세요. 구독은 아무 텍스트 파일이나 가져올 수 있는 것이 아닙니다. 노드 목록, 전체 구성, 웹페이지는 구조가 서로 다릅니다. Shadowsocks, VMess, VLESS, Trojan, Hysteria2, WireGuard도 매개변수 구조가 다르므로 이름 하나를 바꾼다고 형식이 맞지 않는 콘텐츠가 유효한 구독으로 바뀌지는 않습니다.

4. 업데이트 경로 확인: 직접 연결과 Update via Proxy를 따로 테스트

노드 연결에 사용하는 외부 경로와 구독 주소를 가져오는 경로는 따로 확인해야 합니다. 노드에 연결된다고 구독 도메인에 접근할 수 있는 것은 아니며, 구독이 업데이트된다고 모든 노드에 연결할 수 있는 것도 아닙니다. 먼저 현재 네트워크에서 한 번 업데이트하고 결과를 기록한 뒤, 조건 하나만 바꿔 다시 시도하세요. 네트워크 전환, URL 재설정, 설정 변경을 한꺼번에 하면 원인을 파악하기 어렵습니다.

  1. 네트워크 연결 확인: Wi-Fi에서 웹 인증이 필요하다면 먼저 인증을 완료하세요. 시스템 날짜와 시간도 올바르게 설정해야 합니다. 시간이 잘못되면 HTTPS 인증서 확인에 영향을 줄 수 있습니다.
  2. 업데이트 방식 확인: Settings → Subscribe로 이동해 Update via Proxy를 확인하세요. 관련 옵션의 표시는 앱에서 실제로 보이는 화면을 기준으로 합니다.
  3. 프록시를 통한 업데이트 테스트: 사용 가능한 노드가 있고 연결도 설정된 경우에만 Update via Proxy를 켜서 테스트하세요. 목록이 비어 있다고 사용할 프록시가 저절로 생기는 것은 아닙니다.
  4. 다른 네트워크에서 테스트: 가능하다면 셀룰러 네트워크나 다른 신뢰할 수 있는 Wi-Fi로 바꾼 뒤 같은 구독을 한 번만 업데이트하고 동일한 오류가 발생하는지 비교하세요.
  5. 불필요한 변경 되돌리기: 테스트가 끝나면 결과를 설명하는 데 필요한 설정만 유지하세요. 구독 업데이트를 위해 관련 없는 라우팅 변경을 계속 적용해 두지 마세요.

Global Routing의 Proxy, Direct, Config, Scene은 연결 및 라우팅 경로를 선택하는 기능이며, 만료된 token이나 빈 응답을 해결하지 못합니다. On Demand는 조건에 따라 연결을 시작하는 기능이지 구독 내용을 생성하는 설정이 아닙니다. Global Routing이나 Settings → On Demand 변경을 모든 구독 오류의 만능 해결책으로 여기지 마세요.

5. 계정 상태와 업데이트 시점을 확인한 뒤 한 번만 업데이트

token을 재설정했거나 계정 권한을 변경한 직후 또는 서버 점검 중에는 구독 콘텐츠가 아직 준비되지 않았을 수 있습니다. 클라이언트가 서버의 새 목록 생성 시점을 결정할 수는 없으며, ‘업데이트 완료’ 표시만으로 계정에 사용 가능한 기록이 있다고 단정할 수도 없습니다. 본인 계정 상태와 서비스 제공업체의 확인 내용을 기준으로 판단하고, 모든 경우에 적용되는 대기 시간을 임의로 정하지 마세요.

다시 문의해야 한다면 ‘발생 시각, 네트워크 유형, Update via Proxy 사용 여부, 실제 오류, 기존 목록 보존 여부, 최근 계정 변경 여부’를 정리하면 상황을 재확인하기 쉽습니다. PrivateKey, 비밀번호, 전체 token은 공유하지 마세요. 문제 해결에 필요한 것은 현상과 조건이지 공개된 인증 정보가 아닙니다.

6. 구독 목록이 비어 있을 때 자주 묻는 질문

업데이트 후 목록이 전부 비었는데 구독을 삭제한 다음 다시 추가해야 하나요?

첫 단계로 권장하지 않습니다. 먼저 검색을 종료하고 그룹을 펼친 뒤 저장된 URL과 업데이트 오류를 확인하세요. 원래 주소를 백업하고 원격에서 유효한 콘텐츠가 제공되는 것을 확인한 경우에만 로컬 기록 문제를 배제하기 위해 다시 추가하는 방법을 고려하세요. 삭제해도 서버의 빈 응답은 해결되지 않습니다.

같은 링크가 브라우저에서는 열리는데 앱에는 왜 노드가 표시되지 않나요?

브라우저에 노드 콘텐츠가 표시되는지 계정 페이지가 표시되는지 확인하고 로그인 세션이 필요한지도 살펴보세요. 본인 서비스 제공업체에 앱 요청의 실제 응답 본문과 출력 형식을 확인해 달라고 하세요. 브라우저 페이지가 로드됐다는 사실만으로 유효성을 판단할 수는 없습니다.

기존 노드에 연결되어 있는데 구독 업데이트가 계속 시간 초과되면 어떻게 해야 하나요?

Settings → Subscribe에서 Update via Proxy를 확인한 뒤 현재 연결 자체가 작동하는지도 확인하세요. 업데이트 방식이나 네트워크 중 한 번에 조건 하나만 바꾸세요. 서로 다른 경로에서도 모두 시간 초과된다면 발생 시각을 기록하고 구독 엔드포인트 상태를 확인하세요.

노드는 복구됐지만 Connectivity Test가 계속 실패합니다. 구독 파싱 오류인가요?

목록에 기록이 표시된다면 적어도 일부 콘텐츠는 파싱된 것입니다. 다음으로 노드 주소, 포트, 인증 매개변수, 네트워크 연결 가능성을 확인하세요. 연결 오류를 계속 구독 목록 문제로 돌리지 말고 모든 포트를 임의로 443으로 바꾸지도 마세요.

Shadowrocket을 구입했는데 노드가 자동으로 표시되지 않는 이유는 무엇인가요?

클라이언트 일회성 구매 ≠ 회선 요금제. Shadowrocket은 유료 상용 앱이며 App Store에서 구매하면 앱 사용 권한을 얻습니다. 이 글의 구독 가져오기 및 문제 해결 안내는 사용자가 이미 서비스 제공업체와 구독을 보유한 상황을 전제로 합니다.