Shadowrocket의 단일 노드 공유 링크는 하나의 연결 정보를 담고, 구독 URL은 여러 항목을 가져오고 업데이트하는 데 사용됩니다. 서비스와 구독을 이미 보유한 사용자를 위해 링크 접두사로 입력 유형을 구분하는 방법부터 인증·전송·인코딩 필드, 가져온 항목 확인 및 문제 해결 순서까지 설명합니다. 주소, 비밀번호, UUID 예시는 모두 가상 값이며 연결에 사용할 수 없습니다.
먼저 공유 링크와 구독 URL을 구분하세요
ss://, vmess://, vless://, trojan://은 프로토콜 공유 링크에 흔히 사용되는 접두사입니다. 노드 매개변수를 나타내며 웹 주소는 아닙니다. QR 코드는 이러한 텍스트를 담는 방식일 뿐입니다. QR 코드를 스캔했다고 해서 구독이 가져와지는 것은 아니며, 최종 입력 유형은 QR 코드에 담긴 내용으로 결정됩니다.
구독 URL은 보통 https://로 시작합니다. 예를 들어 https://example.com/sub?token=xxxx와 같습니다. Shadowrocket은 해당 주소에 요청을 보내고 응답 내용을 해석합니다. HTTPS 접두사만으로 구독 URL이라고 단정할 수는 없습니다. 로그인 페이지, 오류 페이지, 일반 웹페이지도 HTTPS를 사용하므로 원 제공자의 안내와 가져오기 결과를 함께 확인해야 합니다.
| 입력 유형 | 실제 내용 | 이후 업데이트 |
|---|---|---|
| 단일 노드 공유 링크 | 연결 하나의 주소, 포트, 인증 정보 및 선택적 전송 매개변수 | 가져오기 시점의 매개변수로 저장되며, 원본 텍스트의 변경 사항을 자동으로 반영하지 않습니다 |
| 구독 URL | 원격 항목 목록을 가져오는 주소로, 접근 자격 증명이 포함될 수 있습니다 | 업데이트할 때 주소에 다시 요청하며, 항목은 응답 내용에 따라 달라집니다 |
| QR 코드 | 텍스트를 담은 이미지로, 공유 링크일 수도 구독 URL일 수도 있습니다 | QR 코드에 담긴 입력 유형에 따라 달라집니다 |
노드 구독과 Config의 규칙 설정은 서로 다른 항목입니다. 전자는 연결 항목을 관리하고, 후자는 규칙 등의 동작을 설정합니다. 노드를 가져와도 DOMAIN-SUFFIX, IP-CIDR, FINAL 규칙이 자동으로 작성되지는 않습니다.
ss://: 먼저 인증 부분을 해석한 뒤 포트를 확인하세요
Shadowsocks 공유 링크에 흔히 쓰이는 SIP002 형식은 암호화 방식과 비밀번호를 조합해 Base64로 인코딩한 다음 서버 주소, 포트, 선택적 매개변수를 이어 붙입니다. 아래 예시에서 인증 부분을 디코딩하면 aes-128-gcm:password가 됩니다. 8388은 예시용 포트이며 고정값이 아닙니다.
ss://[email protected]:8388#Demo-SS
인증 부분 디코딩:
aes-128-gcm:password
해당 필드:
method = aes-128-gcm
password = password
server = example.com
port = 8388
@앞의 인증 데이터에는 method와 password가 포함됩니다. Base64 문자열 전체를 비밀번호로 입력하면 안 됩니다.#Demo-SS는 설명용 이름입니다. 이름을 바꿔도 비밀번호, 포트 또는 암호화 방식의 불일치는 해결되지 않습니다.- 일부 구형 링크는
method:password@server:port전체를 인코딩합니다. URL-safe Base64를 사용하거나 끝의 패딩 문자를 생략한 링크도 있습니다. 원문을 보존하고 겉모양만 보고 문자를 임의로 추가하지 마세요. plugin매개변수가 있다면 앱에서 해당 플러그인과 옵션을 지원하는지도 확인해야 합니다. 주소와 비밀번호만 남기면 연결에 필요한 추가 설정이 사라질 수 있습니다.
Base64는 인코딩 방식이지 보안 수단이 아닙니다. 링크를 읽을 수 있는 사람은 대개 인증 정보도 복원할 수 있습니다. 문제를 확인할 때 Type, 포트, 추가 매개변수 유무를 기록하되, 전체 공유 링크를 공개 댓글이나 온라인 디코딩 페이지에 입력하지 마세요.
vmess://: 일반적으로 Base64로 인코딩된 JSON이 포함됩니다
VMess 공유 링크는 vmess:// 뒤에 Base64로 인코딩한 JSON을 붙이는 형식이 흔합니다. 아래는 디코딩된 구조 예시이며, 그대로 붙여 넣어 가져올 수 있는 완전한 공유 링크가 아닙니다. JSON의 필드명은 일반적인 공유 형식에 따른 것으로, 편집 화면에 표시되는 필드명과 정확히 일치하지 않을 수 있습니다.
{
"v": "2",
"ps": "Demo-VMess",
"add": "example.com",
"port": "443",
"id": "00000000-0000-4000-8000-000000000001",
"aid": "0",
"scy": "auto",
"net": "ws",
"type": "none",
"host": "example.com",
"path": "/demo",
"tls": "tls",
"sni": "example.com"
}
v는 공유 데이터 형식을 나타내며 Shadowrocket 버전이 아닙니다. add와 port는 연결 주소와 포트에 해당하고, id는 UUID, aid는 alterId에 해당합니다. 예시 값은 0입니다. 링크가 정상처럼 보이게 하려고 인증 필드를 임의로 바꾸지 마세요.
| 필드 그룹 | 예시 | 확인 사항 |
|---|---|---|
| 인증 | id、aid、scy | UUID, alterId, 암호화 옵션을 각각 확인하세요. 서로 대체할 수 없습니다 |
| 전송 | net=ws、path=/demo | WebSocket 경로는 서버 설정과 일치해야 합니다. 대소문자와 슬래시도 그대로 유지하세요 |
| HTTP 호스트 정보 | host=example.com | 해당 전송에 사용하는 Host이며 연결 주소와 반드시 같지는 않습니다 |
| TLS | tls=tls、sni=example.com | TLS 사용 여부, Server Name, 인증서 검증을 각각 확인하세요 |
포트 443만으로 TLS가 활성화되었다고 볼 수 없으며 전송 방식이 반드시 WebSocket이라는 뜻도 아닙니다. 예시의 net, tls, 포트는 각각 별개의 정보입니다. 가져온 뒤 노드 편집 화면에서 하나씩 확인하세요.
vless://와 trojan://: 인증 정보의 위치는 같지만 의미는 다릅니다
두 링크 유형은 URI 구조를 사용하는 경우가 많습니다. @ 앞에는 인증 정보, 뒤에는 서버와 포트가 오며, 물음표 뒤에는 매개변수, 해시 기호 뒤에는 설명이 옵니다. VLESS는 인증 위치에 보통 UUID를, Trojan은 비밀번호를 넣습니다. 링크 접두사만 바꿔 한 프로토콜을 다른 프로토콜로 변환할 수는 없습니다.
vless://[email protected]:443?encryption=none&security=tls&type=ws&host=example.com&path=%2Fdemo&sni=example.com#Demo-VLESS
trojan://[email protected]:443?security=tls&type=tcp&sni=example.com#Demo-Trojan
encryption=none은 VLESS 프로토콜 매개변수이며, 전체 연결에 전송 계층 보호가 없다는 뜻은 아닙니다. 예시에서는security=tls를 별도로 지정했습니다.type=ws와type=tcp는 전송 방식을 나타냅니다. UUID나 비밀번호가 맞더라도 이 설정을 무시하면 안 됩니다.path=%2Fdemo는 퍼센트 인코딩된 값이며, 디코딩하면 경로는/demo입니다. 복사할 때는 인코딩된 형태를 유지하고 직접 반복해서 디코딩하지 마세요.- Trojan 비밀번호에
@,#같은 예약 문자가 포함되어 있다면 올바르게 인코딩해야 합니다. 예를 들어 비밀번호의@는%40으로 인코딩할 수 있습니다. 그렇지 않으면 URI 구분자로 잘못 해석될 수 있습니다. - 일부 링크에는 추가 보안 또는 전송 매개변수가 포함됩니다. 링크를 짧게 만들려고 알 수 없는 필드를 삭제하지 마세요. 먼저 기존 서비스의 원본 매개변수와 앱에서 사용할 수 있는 옵션을 대조하세요.
정리: 가져온 뒤 인증 및 전송 필드를 먼저 확인하세요
Home에서 새 항목의 편집 화면을 열고 Type, 주소, 포트, UUID 또는 비밀번호를 먼저 확인한 뒤 TLS, Server Name, 전송 유형, 경로를 확인하세요. 저장에 성공했다는 것은 항목이 만들어졌다는 뜻일 뿐, 서버에서 연결을 허용했다는 뜻은 아닙니다.
Home에서 가져오기: 원문과 구독 연결을 유지하세요
먼저 사용 중인 서비스의 관리 페이지에서 원문을 가져오고, 설명이 붙은 메시지 전체를 복사하지 마세요. 공유 링크에 따옴표, 한글 문장 부호, 공백, 메신저가 삽입한 줄바꿈이 섞이지 않도록 합니다. QR 코드에 구독 URL이 담겨 있다면 일반 프로토콜 항목을 새로 만드는 대신 구독으로 처리하세요.
- 입력 유형을 확인하세요. 프로토콜 접두사는 단일 연결을 구분하는 데 사용합니다. 기존 구독은 원 제공자가 안내한 전체 구독 URL을 사용하세요.
- 전체 내용을 복사한 뒤 Home에서 클립보드 가져오기 안내를 사용하세요. QR 코드를 사용할 때는 Home의 스캔 기능으로 읽습니다. 가져오기 전에 인식된 항목 유형을 확인하세요.
- 직접 추가하려면 Home에서
+를 탭해 Add Server로 이동합니다. 단일 노드는 해당 Type을 선택하고 필드를 확인하세요. 구독은 Type을Subscribe로 선택하고 전체 주소를 URL에 입력합니다. - 저장한 뒤 Home으로 돌아갑니다. 단일 노드는 편집 화면에서 매개변수를 확인하고, 구독은 해당 그룹이 생성되었는지와 항목 수 및 이름이 기존 서비스 안내와 일치하는지 확인하세요.
- 구독을 업데이트할 때는 해당 그룹의 업데이트 기능을 사용합니다. 업데이트 후 현재 선택된 항목을 다시 확인하세요. 특히 기존 항목이 삭제되거나 이름이 바뀌거나 다른 항목으로 교체되었는지 살펴보세요.
두 입력 유형의 관리 방법
기존 단일 노드 공유 링크
- 가져온 뒤 Type과 모든 연결 매개변수를 확인합니다.
- 원 제공자가 매개변수를 변경하면 원본 링크를 다시 받습니다.
- 교체하기 전에 기존 항목을 확인해 이름이 같은 항목과 혼동하지 않도록 합니다.
기존 구독 URL
- Subscribe 유형으로 전체 URL을 저장합니다.
- 구독 업데이트를 통해 원격 항목의 변경 사항을 가져옵니다.
- 원 제공자에서 자격 증명을 변경한 뒤 구독 URL도 바뀌었는지 확인합니다.
같은 구독을 반복해서 새로 만들면 출처 그룹이 여러 개 생길 수 있습니다. 관리할 때는 매번 새 구독으로 가져오기보다 기존 그룹을 업데이트하세요.
구독 업데이트 성공 여부는 주소의 유효성, 접근 자격 증명의 만료 여부, 현재 네트워크에서 해당 주소에 접근할 수 있는지, 응답 형식을 해석할 수 있는지에 따라 달라집니다. HTTP 요청이 성공해도 로그인 페이지가 반환될 수 있으므로, 주소가 열린다는 사실만으로는 부족하며 가져온 결과를 확인해야 합니다.
가져온 뒤 연결이 안 될 때: 매개변수 문제와 Global Routing 구분하기
Home에 항목이 표시되는데 웹페이지가 열리지 않는다면 먼저 현재 선택된 항목과 연결 상태를 확인한 다음 Global Routing을 살펴보세요. 노드 링크에는 연결 매개변수가 담기고, Global Routing은 트래픽 처리 방식을 결정합니다. 라우팅 설정이 잘못된 상태에서 UUID를 반복해서 바꾸면 원래 문제를 확인할 수 없습니다.
Config
권장현재 선택된 설정을 사용해 트래픽을 처리합니다. 규칙 설정을 완료하고 확인했다면 규칙에 따라 대상별로 지정된 정책을 적용할 수 있습니다.
적합한 경우: 규칙 설정이 끝난 뒤 일상적으로 사용하거나 특정 대상에 적용되는 정책을 확인할 때
Proxy
앱이 처리하는 트래픽을 현재 프록시 정책으로 보냅니다. 규칙 분기가 테스트에 미치는 영향을 잠시 줄이는 데 사용할 수 있지만, 서버 인증이나 TLS 매개변수 문제를 해결하지는 않습니다.
적합한 경우: 현재 항목을 임시로 테스트해 노드 연결 문제와 규칙 선택 문제를 구분할 때
Direct
직접 연결을 사용하며 현재 프록시 노드는 거치지 않습니다. 이 상태에서 대상에 접속할 수 있어도 방금 가져온 노드가 연결된다고 판단할 수는 없습니다.
적합한 경우: 직접 연결과 비교해 현재 네트워크에서 대상에 직접 접속할 수 있는지 확인할 때
문제를 확인할 때는 한 번에 변수 하나만 바꾸세요. Proxy를 임시로 사용했을 때 같은 대상에 접속되지만 Config에서는 안 된다면 설정의 규칙 순서와 정책을 확인하세요. 둘 다 실패하면 인증, TLS, 전송, 서비스 상태, 네트워크 접근성을 차례로 점검합니다. 테스트가 끝나면 원래 필요한 설정으로 복원하세요.
링크 가져오기 문제: 증상별 확인 방법
링크를 복사했는데 노드로 인식되지 않는 이유는 무엇인가요?
내용이 프로토콜 접두사로 시작하는지, 메시지 제목이나 따옴표, 줄바꿈이 섞이지 않았는지 확인하세요. 원본 전체 링크를 다시 복사합니다. HTTPS 주소라면 구독인지 일반 웹페이지인지 먼저 확인한 뒤, 기존 구독은 Home → + → Type → Subscribe에서 처리하세요.
vmess:// 뒤에 서버 주소가 보이지 않는데 링크가 잘못된 건가요?
꼭 그렇지는 않습니다. 일반적인 VMess 공유 형식은 JSON 전체를 Base64로 인코딩하므로 주소가 바로 표시되지 않습니다. 먼저 Shadowrocket으로 가져온 뒤 편집 화면에서 주소, 포트, UUID, alterId, 전송 필드를 확인하세요. 인코딩된 텍스트를 주소 입력란에 직접 넣지 마세요.
구독을 업데이트했는데 수동으로 추가한 항목은 왜 바뀌지 않나요?
수동으로 추가한 항목은 구독 출처의 항목이 아니므로 다른 구독을 업데이트해도 자동으로 바뀌지 않습니다. Home으로 돌아가 그룹 소속을 확인하고 구독 그룹 안의 해당 항목을 사용하세요. 수동 항목을 유지해야 한다면 원 제공자의 새 매개변수를 직접 확인해야 합니다.
주소와 포트가 같은데 다른 링크는 왜 작동하나요?
Type, UUID 또는 비밀번호, 암호화 옵션, TLS, Server Name, Host, 경로를 더 확인하세요. 주소와 포트가 같다는 것은 연결 진입점이 같다는 뜻일 뿐, 인증 및 전송 설정까지 같다는 의미는 아닙니다. 각 항목을 대조하고 프로토콜 접두사를 바로 바꾸지 마세요.
전체 구독 URL을 다른 사람에게 보내 확인을 부탁해도 되나요?
전체 주소를 공개하지 마세요. 구독 URL의 token으로 서비스 정보를 읽을 수 있으며, 공유 링크에도 인증 데이터가 포함됩니다. 도움을 요청할 때는 민감한 내용을 가린 구조, Type, 포트, 전송 옵션, 오류 증상만 제공하세요. 이미 노출된 자격 증명은 원 제공자의 관리 페이지에서 재설정해야 합니다.
링크 유형 확인, 가져오기, 연결 테스트를 마친 뒤 자동 연결 등의 사용 방식을 설정하세요. Settings → On Demand는 필요할 때 연결하는 기능이며, 잘못된 공유 링크를 수정하거나 만료된 인증 정보를 대신 업데이트하지 않습니다.