구독을 저장했는데 노드 목록이 비어 있는 이유

처음 Subscribe를 넣고 저장만 한 뒤 홈에서 서버를 찾으면, 가져오기가 실패한 것처럼 보인다. 그 단계는 절반만 끝난 것이다.

먼저 가른다: 비어 있다고 실패는 아니다

흔한 순서는 이렇다. 홈 오른쪽 위 더하기, 종류는 Subscribe, 구독 주소를 붙여 넣고 저장한 뒤 바로 홈에서 노드를 찾는다. 목록이 비어 있으면 링크가 무효거나, 앱이 고장났거나, 앱을 잘못 산 것으로 의심하기 시작한다.

Shadowrocket에서 구독 링크는 노드 자체가 아니다. 「나중에 여기서 서버 명단을 받을 주소」일 뿐이다. 저장이 하는 일은 하나다. 그 URL을 기기에 적는 것. 저장을 누르는 순간에 원격 명단을 받아, 눌러 쓸 서버 줄로 펼치지 않는다.

따라서 저장 직후 홈이 비어 있는 것은 예상된 동작이며, 가져오기 실패가 아니다. 명단을 실제로 받는 동작이 「갱신」이다. 갱신을 누르지 않으면 기기에 보여줄 노드가 없다.

저장과 갱신이 각각 하는 일

저장: 구독 기록 한 줄을 쓴다. 이후 구독 목록에서 이름이나 URL은 보이지만, 그 기록 안에는 아직 서버 항목이 없다.

갱신: 클라이언트가 지금 회선으로 그 URL을 요청하고, 응답을 풀어, 안의 서버를 지연 측정·선택·연결할 노드로 펼친다. 갱신이 성공한 뒤에야 홈(또는 그 구독 상세)에 지역명, 회선명 같은 항목이 나온다.

북마크와 페이지를 여는 차이와 같다. 저장은 북마크를 남기는 것이고, 갱신은 그 주소를 실제로 열어 내용을 읽는 것이다. 북마크가 있다고 내용이 이미 휴대전화에 있는 것은 아니다.

개발자 App Store 화면. + 뒤 기본 추가 화면은 Shadowsocks. 구독 URL을 Host / Port에 넣지 않는다.
개발자 App Store 화면. + 뒤 기본 추가 화면은 Shadowsocks. 구독 URL을 Host / Port에 넣지 않는다.

일부 구독 원본은 갱신 때 지금 회선이 그곳에 닿을 것도 요구한다. 지금 네트워크가 그 URL을 열지 못하면 갱신은 오류이거나 계속 돌아가고, 목록도 비어 있다. 「저장이 됐는지」와는 별개다. 저장 성공은 주소가 적혔다는 뜻뿐이다.

맞는 순서

처음 가져오기는 이 순서로 하면 되돌아가지 않는다.

  1. App Store에서 정품 Shadowrocket이 들어가 있고 홈이 열리는지 확인한다. 정품 확인과 입수는 다운로드 안내.
  2. 구독 URL 전체를 준비한다. 비밀번호 관리자나 메모에서 통째로 복사한다. 스킴을 빼지 말고, 끝에 공백이나 줄바꿈을 남기지 않는다.
  3. 홈 오른쪽 위 「+」, 종류는 Subscribe(구독), URL을 붙여 넣고, 필요하면 표시 이름을 바꾼 뒤 저장한다.
  4. 방금 넣은 구독을 열고 「갱신」을 누른다. 성공 또는 분명한 오류까지 기다린다. 돌아가는 중에 홈으로 반복해서 나가지 않는다.
  5. 갱신이 성공하면 홈으로 돌아가 노드를 고르고, 연결 스위치를 켠다. iOS가 VPN 구성 추가를 묻는다. 허용한다.
개발자 App Store 화면. Type에서 Subscribe를 고른다. 기본 Shadowsocks에 두지 않는다.
개발자 App Store 화면. Type에서 Subscribe를 고른다. 기본 Shadowsocks에 두지 않는다.

탭 순서와 화면 이름은 손에 있는 버전을 따른다. 전체 흐름은 사용법의 가져오기구독 관리. 본 사이트는 구독 URL을 주지 않고, 노드도 팔지 않는다.

갱신 실패 때 먼저 볼 것

갱신해도 노드가 없거나 실패가 뜨면, 아래 순서로 지운다. 지우고 다시 넣는 것보다 빠르다.

링크 자체. 앞뒤 공백, https:// 누락, 절반만 복사, 채팅에서 묻어 온 보이지 않는 문자는 요청을 빗나가게 한다. URL을 메모에 붙여 전체가 맞는지 본 뒤 앱으로 되돌린다.

지금 회선으로 이 URL이 열리는가. 구독 원본 자체에 먼저 닿아야 하는 경우도 있다. 회사망, 캠퍼스망, 이미 깨진 프록시면 갱신이 실패하기 쉽다. Shadowrocket 연결 스위치를 끄고 Safari에서 그 주소가 열리는지 본다(내용을 읽을 필요는 없고, 경로가 죽지 않았다는 확인).

구독이 이미 무효인가. 제공자가 주소를 바꿨거나, 만료, 용량 소진이면 옛 링크는 갱신 실패 또는 빈 명단을 돌려준다. 갱신만으로는 부족하다. 옛 구독을 지우고 새 URL로 다시 넣는다. 옛 기록을 남기면 실패가 이어진다.

보는 곳이 다르다. 노드는 그 구독 상세에 나오고, 기대한 그룹이 아닐 수 있다. 방금 저장한 구독을 열어 안에 서버가 있는지 확인한 뒤 홈으로 돌아간다.

본 사이트는 구독을 제공하지 않는다 갱신 실패 때 링크가 유효한지는 주소를 준 쪽에만 물을 수 있다. 여기는 클라이언트 사용법만 쓴다. 노드는 팔지 않고 배포하지도 않는다.

목록이 비어 있는 다른 이유

갱신은 성공했는데 홈이 비어 있으면, 다음을 대조한다.

  • 스위치 아래 라우팅이 Direct면 프록시는 꺼진 것과 같다. 「노드가 없다」와는 다르지만, 아무것도 가져오지 못한 것처럼 보이기 쉽다.
  • 필터나 그룹이 방금 넣은 노드를 가린다. 필터를 끄거나 해당 구독을 연다.
  • 들어 있는 것이 정품 Shadowrocket이 아니다. 비슷한 이름의 무료 앱은 화면이 달라 Subscribe와 갱신도 맞지 않는다. App Store 제품 페이지 id932747118을 기준으로 한다.
  • 첫 실행에서 통신 권한을 주지 않아 갱신 요청이 기기에서 나가지 않는다. 설정에서 그 앱이 Wi-Fi와 셀룰러를 쓸 수 있는지 확인한다.

오류 문에 시간 초과, 인증서, 이름 확인 실패가 있으면 그 원문을 구독 제공자에게 넘긴다. 클라이언트에서 여러 번 누르는 것보다 낫다. 클라이언트는 이번 요청 실패만 알릴 수 있고, 상대 명단은 고치지 못한다.

추가가 성공한 뒤

목록에 지역명이나 회선명이 나오면 이번 가져오기는 끝난 것이다. 다음은 노드 선택, 지연 확인, 스위치 켜기. 스위치가 켜져도 목적 사이트가 안 열리면 구독을 지우지 말고 규칙과 트래픽을 본다. 규칙과 글로벌, Data의 Direct / Proxy, 연결이 안 될 때.

구독 URL은 비밀번호 관리자에도 남긴다. 기기 변경, 재설치, 링크 무효 때 앱 안의 한 줄은 백업이 되지 않는다. 기기 변경은 새 iPhone에서도 설정이 남나.

목록에 이름이 있는 것은 그 회선이 된다는 뜻이 아니다. 명단은 그 시점 원격이 돌려준 것이며, 만료, 과부하, 차단된 항목도 섞인다. 먼저 지연을 재고, 프록시가 필요한 사이트를 연다. 명단이 있고 스위치가 켜졌는데 목적이 아직 안 열리면, 문제는 가져오기가 아니다. 지우고 다시 넣으면 같은 빈 목록, 또는 같은 무효 명단으로 돌아갈 뿐이다.