자신이 이용 중인 서비스의 구독을 보유하고 Home 서버 목록을 새로고침하려는 사용자를 위한 안내입니다. 먼저 수동 업데이트로 링크가 작동하는지 확인한 다음 앱 실행 시 자동 업데이트를 켜세요. 실패하면 링크, 응답 내용, 네트워크, 기기 시간을 차례로 점검하고, ‘구독 업데이트 성공’과 ‘서버 연결 가능’은 별도로 확인하세요.
1. 구독 업데이트, Config 업데이트, 연결의 차이
Shadowrocket은 Apple 플랫폼용 유료 클라이언트이며 App Store에서만 구입할 수 있습니다. 개발자는 Shadow Launch Technology Limited입니다. 주로 iPhone과 iPad에서 사용하며, 다른 Apple 기기와의 호환성 및 시스템 요구 사항, 구매 가능 여부는 App Store 페이지를 확인하세요. 이 글에서는 사용자가 이미 보유한 구독을 클라이언트에서 불러오는 방법을 설명하며, 서비스 선택은 다루지 않습니다.
Home의 Subscribe에는 원격 구독 주소가 저장됩니다. 업데이트하면 앱이 해당 주소에 요청을 보내고 응답을 해석한 뒤 연결된 서버 그룹을 새로고침합니다. Config의 구성 파일은 규칙과 정책 등의 내용을 담당합니다. Home 구독을 새로고침해도 Config 파일이 다시 다운로드되거나 Global Routing이 변경되는 것은 아닙니다.
확인: 먼저 업데이트할 항목을 구분하세요
서버 주소나 개수가 바뀌었다면 Home의 구독을 확인하세요. 웹사이트 트래픽 분류를 조정하려면 Config와 Global Routing을 확인하세요. 구독 요청 오류를 해결하려고 DOMAIN-SUFFIX나 FINAL 규칙부터 변경하지 마세요.
2. 수동 업데이트: Home에서 기존 구독 새로고침
자동 업데이트를 점검하기 전에 결과를 확인할 수 있도록 수동 업데이트를 한 번 실행하세요. 아직 구독을 추가하지 않았다면 Home 오른쪽 위의 ‘+’를 눌러 Add Server로 이동하고, Type을 Subscribe로 설정한 다음 본인의 구독 URL을 입력해 저장하세요. 이미 등록된 구독은 매번 다시 추가할 필요가 없습니다. 같은 이름의 그룹이 여러 개 생기면 실제로 사용하는 구독을 구분하기 어려워질 수 있습니다.
-
구독 확인
Home으로 이동해 해당 구독 그룹을 찾으세요. 주소를 확인하려면 Subscribe 항목의 편집 정보를 열고 URL이 서비스 관리 페이지에 표시된 주소와 일치하는지 확인하세요. 계정 로그인 페이지나 안내 페이지 주소와 혼동하지 마세요.
-
아래로 당겨 새로고침
Home의 서버 목록을 아래로 당겨 구독을 새로고침하세요. 구독이 여러 개라면 결과가 어느 그룹에 해당하는지 확인하세요. 오류가 표시되면 전체 메시지를 기록하고, 새로고침 애니메이션이 끝났다는 이유만으로 성공했다고 판단하지 마세요.
-
결과 확인
요청이 완료될 때까지 기다린 뒤 해당 그룹의 서버 이름과 개수를 확인하세요. 서버 측 내용이 바뀌지 않았다면 업데이트에 성공해도 목록에 눈에 띄는 변화가 없을 수 있습니다. 예상한 변경 사항이 나타나지 않으면 구독 주소와 서버 측 내용을 다시 확인하세요.
-
연결 테스트
목록이 정상적으로 불러와지는지 확인한 다음, 사용 권한이 있는 서버를 선택해 연결을 테스트하세요. 업데이트 성공은 구독 내용을 가져와 해석할 수 있다는 뜻일 뿐, 모든 서버에 연결할 수 있다는 의미는 아닙니다.
새로고침 과정에서 그룹에 포함된 항목이 교체될 수 있습니다. 기존에 선택한 항목이 삭제되거나 이름 또는 매개변수가 바뀌었다면 현재 선택 항목을 다시 확인하세요. 구독 항목을 직접 수정한 내용을 장기 백업으로 간주하지 마세요. 다음 업데이트 때 원격 응답이 로컬 수정 사항을 덮어쓸 수 있습니다.
3. 앱 실행 시 자동 업데이트: 설정 위치와 작동 조건
Settings → Subscribe로 이동해 Update On Open을 찾아 켜세요. 앱을 열 때 구독을 자동으로 업데이트하는 설정입니다. 앱 버전에 따라 문구의 대소문자나 배치가 다를 수 있으므로 Subscribe 설정에서 ‘열 때 업데이트’ 기능을 확인하세요. On Demand에서 찾는 설정이 아닙니다.
- 켜기 전에: 먼저 Home에서 수동 업데이트가 성공하는지 확인하고 URL, 접근 권한, 콘텐츠 형식이 모두 정상인지 점검하세요.
- 켠 다음: 다음에 앱을 열 때 새로고침 결과를 확인하세요. 다른 화면에서 Home으로 돌아온 것을 앱을 새로 실행해 업데이트한 것으로 간주하면 안 됩니다.
- 구독이 여러 개인 경우: 각 그룹을 따로 확인하세요. 한 그룹의 새로고침 성공이 다른 구독의 성공을 의미하지는 않습니다.
- 오류가 발생하면: Home으로 돌아가 수동으로 다시 시도하고 메시지를 확인하세요. 자동 업데이트 설정을 반복해서 껐다 켜는 것보다 원인을 찾기 쉽습니다.
Update On Open은 앱을 닫은 뒤 일정한 간격으로 계속 데이터를 가져오는 기능이 아니며, 기기가 오프라인일 때 업데이트를 보장하지도 않습니다. 네트워크 요청에는 도메인 조회, 연결 설정, TLS 검증, 콘텐츠 해석이 필요합니다. 어느 단계에서든 실패하면 이전 목록이 유지되거나 업데이트 오류가 표시될 수 있습니다.
4. 링크 만료와 형식 오류: 응답 내용부터 확인
구독 URL에는 접근 권한을 확인하는 매개변수가 포함되는 경우가 많습니다. 복사할 때 쿼리 문자열을 빠뜨리거나, 끝에 공백이 들어가거나, 줄바꿈을 함께 붙여 넣거나, 재설정된 주소를 계속 사용하면 업데이트에 실패할 수 있습니다. 아래 내용은 구조를 보여 주는 예시일 뿐, 실제 콘텐츠를 가져오는 데 사용할 수 없습니다.
https://example.com/sub?token=xxxx
URL에서 ? 뒤에 오는 매개변수도 주소의 일부이므로 도메인과 경로만 남기면 안 됩니다. 구독 주소에는 인증 정보가 포함되므로 공개 게시물, 스크린샷, 온라인 분석 페이지에 올리지 마세요. 다른 사람에게 도움을 요청해야 한다면 token을 가린 주소 구조, 오류 문구, 발생 조건만 공유하세요.
| 확인된 결과 | 의미와 다음 단계 |
|---|---|
| HTTP 401 또는 403 | 요청에 권한이 없거나 거부되었습니다. 서비스 계정 상태, 링크 재설정 여부, 접근 제한을 확인하세요. 상태 코드만으로 원인을 하나로 단정할 수는 없습니다. |
| HTTP 404 또는 410 | 리소스를 찾을 수 없거나 삭제되었습니다. 본인의 서비스 관리 페이지에서 현재 구독 주소를 확인하고, 경로를 추측하지 마세요. |
| HTTP 200이지만 응답이 HTML인 경우 | 요청이 성공했어도 구독이 유효하다는 뜻은 아닙니다. 로그인 페이지, 인증 페이지, 오류 안내 페이지가 반환되었을 수 있으며 서버 목록으로 해석할 수 없습니다. |
| 응답이 비어 있거나 인식할 수 없는 데이터 | 선택한 구독의 출력 형식이 Shadowrocket에서 지원되는지 확인하고, 실제 반환되는 내용은 사용 중인 서비스 제공업체에 문의하세요. |
앱에서 해석할 수 없다는 메시지가 표시되면 먼저 받은 것이 서버 구독인지, 다른 형식의 전체 구성 파일인지 확인하세요. 확장자만으로 형식을 판단하거나 내용을 임의로 다른 확장자로 바꾸지 마세요. 프로토콜마다 필요한 매개변수가 다릅니다. 인증 정보나 전송 설정이 누락되면 이름이 표시되더라도 연결되지 않을 수 있습니다.
5. 네트워크 시간 초과와 기기 시간: 오류 문구에 따라 점검
오류 메시지는 앱에서 표시할 수도 있고 Apple 네트워크 프레임워크에서 전달될 수도 있습니다. 아래는 흔히 볼 수 있는 시스템 오류 원문이며, 실제 표시 언어나 앞뒤 문구는 다를 수 있습니다. 원문이나 오류 코드를 기록한 뒤 하나씩 확인하고, 모든 실패를 구독 만료 탓으로 돌리지 마세요.
오류: The request timed out.
원인: 제한 시간 안에 요청이 완료되지 않았습니다. 현재 네트워크, 연결 경로, 원격 서버의 응답 지연 등이 원인일 수 있습니다.
해결: 일반적인 인터넷 접속이 정상인지 확인한 뒤, 신뢰할 수 있는 Wi-Fi와 셀룰러 네트워크에서 각각 수동으로 새로고침해 보세요. 특정 네트워크에서만 실패한다면 해당 네트워크의 제한을 먼저 확인하세요.
오류: A server with the specified hostname could not be found.
원인: 구독 도메인을 조회하지 못했습니다. 도메인 오타, 도메인 사용 중단, 현재 DNS 조회 오류 등이 원인일 수 있습니다.
해결: URL의 호스트 이름이 온전한지 확인한 뒤 다른 사용 가능한 네트워크에서 다시 시도하세요. 추측한 IP 주소로 HTTPS 도메인을 대체하지 마세요.
오류: The Internet connection appears to be offline.
원인: 시스템이 현재 사용할 수 있는 인터넷 연결이 없다고 판단했거나 앱 요청이 현재 네트워크를 사용하지 못했습니다.
해결: Wi-Fi에서 네트워크 로그인이 필요한지 확인하세요. 시스템 설정에서 Shadowrocket의 셀룰러 데이터 사용 권한을 확인한 다음 Home으로 돌아가 새로고침하세요.
오류: The certificate for this server is invalid.
원인: TLS 인증서 검증에 실패했습니다. 기기 시간 오류, 인증서 만료, 호스트 이름 불일치, 네트워크 차단 등이 원인일 수 있습니다.
해결: 먼저 시스템 날짜와 시간대를 확인하세요. 시간이 정확한데도 오류가 계속되면 사용 중인 서비스 제공업체에 문의하세요. 인증서 검증을 끄는 방식으로 문제를 우회하지 마세요.
iPhone 또는 iPad의 시스템 Settings → General → Date & Time에서 Set Automatically가 켜져 있는지 확인하고 날짜, 시간, 시간대가 올바른지 살펴보세요. 인증서에는 유효 시작 시각과 만료 시각이 있습니다. 기기 시계의 오차가 크면 정상 인증서도 아직 유효하지 않거나 만료된 것으로 판단될 수 있습니다. 시간을 바로잡은 뒤 수동 업데이트를 다시 실행하세요.
- 도메인 조회 오류는 보통
NSURLErrorDomain -1003, 시간 초과는-1001, 오프라인 오류는-1009에 해당합니다. 오류 코드는 유형을 구분하는 데 쓰이며 근본 원인을 직접 증명하지는 않습니다. - 구독 URL이 기본 HTTPS를 사용한다면 연결 포트는 일반적으로
443입니다. 그렇다고 구독에 포함된 모든 서버가 같은 포트를 사용하는 것은 아니므로 서버 포트를 일괄 변경하지 마세요. - 네트워크나 시스템 시간처럼 한 번에 한 가지 조건만 변경한 뒤 다시 테스트하세요. 여러 설정을 동시에 바꾸면 어떤 변경이 효과가 있었는지 판단하기 어렵습니다.
6. 업데이트는 성공했지만 연결되지 않을 때: 별도로 확인
구독 업데이트 성공과 실제 연결은 서로 다른 점검 단계입니다. 구독 주소에 접속할 수 있어도 목록의 특정 서버에는 접속하지 못할 수 있습니다. 서버에 연결할 수 있어도 현재 라우팅 방식에서 예상대로 사용되지 않을 수 있습니다. 먼저 현재 서버를 확인하고 Global Routing과 Config를 점검하세요. 곧바로 모든 구독을 삭제하지 마세요.
- Global Routing → Config: 트래픽은 현재 활성화된 구성 규칙에 따라 처리됩니다. Config에서 예상한 파일을 선택했는지 확인하고 규칙 순서도 점검하세요.
- Global Routing → Proxy: 프록시 라우팅 방식을 사용합니다. 만료된 구독 인증 정보를 보완하거나 서버 매개변수 오류를 해결해 주지는 않습니다.
- Global Routing → Direct: 직접 연결 라우팅 방식을 사용합니다. 이 상태에서 웹사이트에 접속할 수 있더라도 구독에 포함된 서버가 검증되었다는 뜻은 아닙니다.
- Global Routing → Scene: 기존 Scene의 실제 설정을 확인하세요. 구독 업데이트를 켜고 끄는 설정으로 간주해서는 안 됩니다.
예를 들어 구성에 DOMAIN-SUFFIX,example.com,PROXY와 마지막 규칙인 FINAL,DIRECT가 있다면, 지정한 도메인과 일치하는지에 따라 요청이 나가는 경로가 달라집니다. 구독을 새로고침해도 이러한 규칙은 자동으로 변경되지 않습니다. 연결을 테스트할 때는 Home에 새 이름이 표시되는지만 보지 말고, 접속 대상에 예상한 정책이 실제로 적용되는지도 확인하세요.
정리: 오류 증거를 기록한 뒤 재등록 여부를 결정하세요
먼저 업데이트 메시지, 실패 시각, 사용한 네트워크, 영향을 받은 그룹을 기록한 다음 링크와 응답을 확인하세요. 기존 항목에 잘못된 주소가 저장되었거나 주소를 교체해야 한다고 확인된 경우에만 구독을 다시 등록하세요. 앱을 재설치해도 원격 서버의 접근 거부, 링크 만료, 인증서 오류는 대개 해결되지 않습니다.
7. 문제 해결 정보 전달 및 평소 관리
사용 중인 서비스 제공업체에 문의할 때는 단순히 ‘업데이트가 안 됩니다’라고 쓰기보다 재현 가능한 증상을 설명하세요. 요청 단계와 연결 단계를 구분할 수 있는 정보를 제공하면서 구독 인증 정보는 보호해야 합니다. 문제가 확인되기 전에 목록을 모두 비우거나 설정을 재설정하거나 구성 파일을 삭제하지 말고, 기존 그룹에 필요한 정보는 보관하세요.
- 요청 결과: 전체 오류 문구, 오류 코드 또는 HTTP 상태 코드. 팝업 제목만 캡처하지 마세요.
- 실행 방법: Home에서 아래로 당겨 새로고침할 때 실패했는지, 앱을 열 때 자동 업데이트가 실패했는지 적으세요.
- 영향 범위: 한 구독만 실패했는지 모든 구독이 실패했는지, 기존 서버에는 여전히 연결할 수 있는지 적으세요.
- 환경 차이: Wi-Fi와 셀룰러 네트워크에서 같은 문제가 발생하는지, 기기 시간이 정확한지 확인하세요.
- 개인정보 보호: 구독 token, 계정 정보, 인증 매개변수를 가리고 전체 URL을 공개하지 마세요.
평소에는 Update On Open을 켜 두고, 서비스 제공업체에서 주소나 서버 정보가 변경되었다고 안내하면 수동으로 한 번 새로고침하세요. 자동 업데이트는 반복 작업을 줄이는 기능이지 이용 가능성을 보장하지 않습니다. 최종적으로는 해당 그룹의 업데이트 결과, 현재 선택 항목, 실제 연결 테스트를 확인해야 합니다.