먼저 가른다: 비어 있다고 실패는 아니다
흔한 순서는 이렇다. 홈 오른쪽 위 더하기, 종류는 Subscribe, 구독 주소를 붙여 넣고 저장한 뒤 바로 홈에서 노드를 찾는다. 목록이 비어 있으면 링크가 무효거나, 앱이 고장났거나, 앱을 잘못 산 것으로 의심하기 시작한다.
Shadowrocket에서 구독 링크는 노드 자체가 아니다. 「나중에 여기서 서버 명단을 받을 주소」일 뿐이다. 저장이 하는 일은 하나다. 그 URL을 기기에 적는 것. 저장을 누르는 순간에 원격 명단을 받아, 눌러 쓸 서버 줄로 펼치지 않는다.
따라서 저장 직후 홈이 비어 있는 것은 예상된 동작이며, 가져오기 실패가 아니다. 명단을 실제로 받는 동작이 「갱신」이다. 갱신을 누르지 않으면 기기에 보여줄 노드가 없다.
저장과 갱신이 각각 하는 일
저장: 구독 기록 한 줄을 쓴다. 이후 구독 목록에서 이름이나 URL은 보이지만, 그 기록 안에는 아직 서버 항목이 없다.
갱신: 클라이언트가 지금 회선으로 그 URL을 요청하고, 응답을 풀어, 안의 서버를 지연 측정·선택·연결할 노드로 펼친다. 갱신이 성공한 뒤에야 홈(또는 그 구독 상세)에 지역명, 회선명 같은 항목이 나온다.
북마크와 페이지를 여는 차이와 같다. 저장은 북마크를 남기는 것이고, 갱신은 그 주소를 실제로 열어 내용을 읽는 것이다. 북마크가 있다고 내용이 이미 휴대전화에 있는 것은 아니다.
일부 구독 원본은 갱신 때 지금 회선이 그곳에 닿을 것도 요구한다. 지금 네트워크가 그 URL을 열지 못하면 갱신은 오류이거나 계속 돌아가고, 목록도 비어 있다. 「저장이 됐는지」와는 별개다. 저장 성공은 주소가 적혔다는 뜻뿐이다.
맞는 순서
처음 가져오기는 이 순서로 하면 되돌아가지 않는다.
- App Store에서 정품 Shadowrocket이 들어가 있고 홈이 열리는지 확인한다. 정품 확인과 입수는 다운로드 안내.
- 구독 URL 전체를 준비한다. 비밀번호 관리자나 메모에서 통째로 복사한다. 스킴을 빼지 말고, 끝에 공백이나 줄바꿈을 남기지 않는다.
- 홈 오른쪽 위 「+」, 종류는 Subscribe(구독), URL을 붙여 넣고, 필요하면 표시 이름을 바꾼 뒤 저장한다.
- 방금 넣은 구독을 열고 「갱신」을 누른다. 성공 또는 분명한 오류까지 기다린다. 돌아가는 중에 홈으로 반복해서 나가지 않는다.
- 갱신이 성공하면 홈으로 돌아가 노드를 고르고, 연결 스위치를 켠다. iOS가 VPN 구성 추가를 묻는다. 허용한다.
탭 순서와 화면 이름은 손에 있는 버전을 따른다. 전체 흐름은 사용법의 가져오기와 구독 관리. 본 사이트는 구독 URL을 주지 않고, 노드도 팔지 않는다.
갱신 실패 때 먼저 볼 것
갱신해도 노드가 없거나 실패가 뜨면, 아래 순서로 지운다. 지우고 다시 넣는 것보다 빠르다.
링크 자체. 앞뒤 공백, https:// 누락, 절반만 복사, 채팅에서 묻어 온 보이지 않는 문자는 요청을 빗나가게 한다. URL을 메모에 붙여 전체가 맞는지 본 뒤 앱으로 되돌린다.
지금 회선으로 이 URL이 열리는가. 구독 원본 자체에 먼저 닿아야 하는 경우도 있다. 회사망, 캠퍼스망, 이미 깨진 프록시면 갱신이 실패하기 쉽다. Shadowrocket 연결 스위치를 끄고 Safari에서 그 주소가 열리는지 본다(내용을 읽을 필요는 없고, 경로가 죽지 않았다는 확인).
구독이 이미 무효인가. 제공자가 주소를 바꿨거나, 만료, 용량 소진이면 옛 링크는 갱신 실패 또는 빈 명단을 돌려준다. 갱신만으로는 부족하다. 옛 구독을 지우고 새 URL로 다시 넣는다. 옛 기록을 남기면 실패가 이어진다.
보는 곳이 다르다. 노드는 그 구독 상세에 나오고, 기대한 그룹이 아닐 수 있다. 방금 저장한 구독을 열어 안에 서버가 있는지 확인한 뒤 홈으로 돌아간다.
목록이 비어 있는 다른 이유
갱신은 성공했는데 홈이 비어 있으면, 다음을 대조한다.
- 스위치 아래 라우팅이 Direct면 프록시는 꺼진 것과 같다. 「노드가 없다」와는 다르지만, 아무것도 가져오지 못한 것처럼 보이기 쉽다.
- 필터나 그룹이 방금 넣은 노드를 가린다. 필터를 끄거나 해당 구독을 연다.
- 들어 있는 것이 정품 Shadowrocket이 아니다. 비슷한 이름의 무료 앱은 화면이 달라 Subscribe와 갱신도 맞지 않는다. App Store 제품 페이지 id932747118을 기준으로 한다.
- 첫 실행에서 통신 권한을 주지 않아 갱신 요청이 기기에서 나가지 않는다. 설정에서 그 앱이 Wi-Fi와 셀룰러를 쓸 수 있는지 확인한다.
오류 문에 시간 초과, 인증서, 이름 확인 실패가 있으면 그 원문을 구독 제공자에게 넘긴다. 클라이언트에서 여러 번 누르는 것보다 낫다. 클라이언트는 이번 요청 실패만 알릴 수 있고, 상대 명단은 고치지 못한다.
추가가 성공한 뒤
목록에 지역명이나 회선명이 나오면 이번 가져오기는 끝난 것이다. 다음은 노드 선택, 지연 확인, 스위치 켜기. 스위치가 켜져도 목적 사이트가 안 열리면 구독을 지우지 말고 규칙과 트래픽을 본다. 규칙과 글로벌, Data의 Direct / Proxy, 연결이 안 될 때.
구독 URL은 비밀번호 관리자에도 남긴다. 기기 변경, 재설치, 링크 무효 때 앱 안의 한 줄은 백업이 되지 않는다. 기기 변경은 새 iPhone에서도 설정이 남나.
목록에 이름이 있는 것은 그 회선이 된다는 뜻이 아니다. 명단은 그 시점 원격이 돌려준 것이며, 만료, 과부하, 차단된 항목도 섞인다. 먼저 지연을 재고, 프록시가 필요한 사이트를 연다. 명단이 있고 스위치가 켜졌는데 목적이 아직 안 열리면, 문제는 가져오기가 아니다. 지우고 다시 넣으면 같은 빈 목록, 또는 같은 무효 명단으로 돌아갈 뿐이다.