먼저 ‘연결 설정’과 ‘목록을 가져오는 주소’를 구분하세요. ss://, vmess://, vless://, trojan:// 링크에는 보통 하나의 연결에 필요한 정보가 담기고, 구독 URL은 여러 항목을 가져오고 업데이트할 때 사용합니다. 이미 서비스 제공업체의 설정 정보를 보유한 사용자를 대상으로 필드와 인코딩, Shadowrocket의 가져오기 메뉴 및 업데이트 범위를 설명합니다. 예시 데이터는 실제 연결에 사용할 수 없으며 서비스를 제공하지 않습니다.
먼저 접두사 확인: 프로토콜 링크와 구독 URL은 다릅니다
Shadowrocket에서 링크를 받으면 연결 정보 자체인지, 원격에서 콘텐츠를 가져오는 방법인지 먼저 구분해야 합니다. 프로토콜 링크에는 보통 서버 주소, 포트, 인증 정보와 전송 옵션이 한 텍스트에 들어 있습니다. 구독 URL은 대개 HTTPS 주소이며, 앱이 해당 주소에 요청을 보내면 항목 목록을 가져옵니다. 두 유형 모두 QR 코드나 클립보드로 전달할 수 있으므로, QR 코드로 받았다는 이유만으로 유형을 판단할 수는 없습니다.
구독 URL은 다음과 같은 형식일 수 있습니다. token은 쿼리 매개변수 이름이며, 접근 인증 정보로 사용될 수 있습니다. 실제 주소의 경로와 매개변수는 사용자가 이용 중인 서비스에 따라 달라집니다. HTTPS로 시작하더라도 웹페이지일 수 있으며, 앱이 지원하는 형식의 응답을 반환해야 구독으로 해석할 수 있습니다.
https://example.com/sub?token=xxxx
- 프로토콜 접두사: 뒤따르는 매개변수를 해석하는 방식을 알려줄 뿐, 서버가 실제로 작동한다는 뜻은 아닙니다.
- QR 코드: 텍스트를 담는 수단입니다. 단일 프로토콜 링크나 구독 URL 모두 담을 수 있습니다.
- 구독 응답: 여러 링크를 포함할 수 있으며 Base64로 인코딩되기도 합니다. 모든 구독 응답의 본문 형식이 같다고 볼 수는 없습니다.
- Config: 구성 파일을 관리하는 메뉴이며 Home의 서버 항목과는 별개입니다. 규칙이 포함된 구성 파일도 서버 구독과 같은 것이 아닙니다.
ss://: 암호화 방식부터 확인한 뒤 비밀번호와 주소 점검
ss://는 Shadowsocks를 나타냅니다. 흔히 쓰이는 SIP002 형식에서는 ‘암호화 방식:비밀번호’를 인코딩해 @ 앞에 두고, 뒤에 서버 주소와 포트를 표시합니다. 아래 예시 링크에서 인증 정보 부분을 디코딩하면 aes-128-gcm:password가 나오며, 서버는 예시 도메인이고 포트는 8388입니다.
ss://[email protected]:8388#SS-demo
| 위치 | 의미 | 확인 방법 |
|---|---|---|
ss:// | Shadowsocks 공유 형식 표시 | 가져온 후 Type 확인 |
@ 앞 | 암호화 방식과 비밀번호의 인코딩된 내용 | 방식과 비밀번호가 서버 설정과 모두 일치해야 합니다 |
edge.example.com:8388 | 서버 주소와 포트 | 포트를 주소 필드에 입력하지 마세요 |
#SS-demo | 표시용 메모 | 메모를 바꿔도 보통 연결 설정은 바뀌지 않습니다 |
일부 구형 형식은 더 많은 내용을 함께 Base64로 인코딩하므로, 평문 @가 있는지만으로 형식을 판단할 수 없습니다. 플러그인을 사용하는 링크에는 plugin 쿼리 매개변수가 포함될 수도 있습니다. 복사 과정에서 매개변수가 누락되면 서버, 포트, 비밀번호가 있어도 연결 정보가 완전하다고 볼 수 없습니다.
vmess://: 흔히 인코딩된 JSON이 포함됩니다
vmess://는 VMess를 나타냅니다. 일반적인 공유 형식은 접두사 뒤에 Base64로 인코딩한 JSON을 두며, ‘사용자@호스트’ 형태로 바로 표시하지 않습니다. 따라서 서버 주소가 평문으로 보이지 않아도 링크가 비어 있는 것은 아닙니다. 아래는 디코딩한 예시 데이터이며, 그대로 붙여넣어 가져올 수 있는 완전한 링크가 아닙니다.
{
"v": "2",
"ps": "VMess-demo",
"add": "edge.example.com",
"port": "443",
"id": "00000000-0000-4000-8000-000000000000",
"aid": "0",
"scy": "auto",
"net": "ws",
"type": "none",
"host": "edge.example.com",
"path": "/demo",
"tls": "tls",
"sni": "edge.example.com"
}
add,port,id에는 각각 서버, 포트, 사용자 UUID가 들어갑니다. UUID는 표시용 메모가 아닙니다.ps는 메모이며,v는 공유 데이터의 형식 필드입니다. Shadowrocket 앱 버전이 아닙니다.net=ws는 WebSocket 전송을 나타냅니다.host와path는 해당 전송 설정에 사용되므로 임의로 삭제하면 안 됩니다.tls와sni는 TLS 설정과 관련이 있습니다. 예시에서는 주소, Host, SNI가 같지만 실제 서비스에서는 각각 다른 값으로 지정될 수 있습니다.aid는 이전 버전과의 호환성을 위한 필드입니다. 문제 해결 중 임의로 값을 바꾸지 말고 실제 서비스 설정과 대조하세요.
가져오기에 성공했다는 것은 앱이 해당 데이터를 인식했다는 뜻일 뿐, 네트워크에 연결할 수 있거나 인증 정보가 유효하거나 TLS 설정이 일치한다는 의미는 아닙니다. ‘목록에는 항목이 있지만 연결되지 않는’ 경우에는 항목 편집 화면에서 각 필드를 확인하세요. 같은 링크를 반복해서 가져오지는 마세요.
vless://와 trojan://: 비슷한 형식, 다른 인증 필드
두 유형의 링크는 ‘인증 정보@서버:포트’ 형식을 따르고, 전송 설정은 쿼리 매개변수로 추가하는 경우가 많습니다. VLESS의 인증 정보는 보통 UUID이며, Trojan은 비밀번호를 사용합니다. 아래 두 예시는 구조를 살펴보기 위한 것으로, UUID와 비밀번호, 도메인은 실제 서비스와 관련이 없습니다.
vless://[email protected]:443?encryption=none&security=tls&type=ws&host=edge.example.com&path=%2Fdemo&sni=edge.example.com#VLESS-demo
trojan://[email protected]:443?security=tls&sni=edge.example.com#Trojan-demo
| 필드 | VLESS | Trojan |
|---|---|---|
@ 앞 | 일반적으로 UUID | 비밀번호 |
security=tls | TLS 사용을 나타내는 일반적인 매개변수 | 일반적인 공유 형식의 TLS 매개변수 |
type=ws | 예시에서는 WebSocket 사용 | 추가 전송을 사용하는지는 실제 링크를 확인하세요 |
sni | TLS에 사용할 서버 이름 | TLS에 사용할 서버 이름 |
# 뒤 | 메모 | 메모 |
encryption=none을 ‘연결 전체에 아무런 보호가 없다’는 뜻으로 해석하면 안 됩니다. 이 값은 VLESS 자체의 필드와 관련이 있으며, 외부 연결에서 TLS를 사용하는지는 보안 매개변수로 따로 확인해야 합니다. 반대로 포트가 443이라고 해서 TLS가 올바르게 설정되었다고 단정할 수도 없습니다. 포트는 연결 대상 정보의 일부일 뿐입니다.
쿼리 매개변수의 %2F는 슬래시를 퍼센트 인코딩한 값입니다. 비밀번호, 메모, 경로의 특수 문자도 인코딩될 수 있습니다. 링크 전체를 여러 번 디코딩한 뒤 복사하지 마세요. 비밀번호에 포함된 @, #, &가 구조를 구분하는 문자로 잘못 해석될 수 있습니다. 공유 형식마다 확장 매개변수 규칙이 완전히 같지는 않으므로, 가져온 뒤 앱에 저장된 필드를 확인하세요.
Shadowrocket에서 가져오기 메뉴와 업데이트 방식 선택
먼저 가지고 있는 데이터의 유형을 확인한 뒤 메뉴를 선택하세요. Home에서는 서버와 구독 항목을 관리하고, Config에서는 구성 파일을 관리하며, Settings에서는 앱 설정을 관리합니다. HTTPS 주소라고 해서 Config에 규칙 구성으로 넣을 수 있는 것은 아니며, 단일 프로토콜 링크를 자동 업데이트되는 구독 URL로 사용할 수도 없습니다.
Subscribe: 기존 구독 관리
목록 업데이트목록을 계속 동기화해야 하는 기존 구독이라면 Home에서 ‘+’를 탭하고 Add Server로 이동한 뒤 Type을 Subscribe로 설정하세요. 전체 구독 URL을 입력해 저장하면 됩니다. 이후 해당 구독을 업데이트하면 원격 목록을 다시 가져옵니다.
적합한 경우: 구독 URL을 이미 보유하고 있고 목록 변경 사항을 동기화하려는 경우
클립보드 또는 QR 코드: 단일 연결 정보 가져오기
프로토콜 링크 전체를 복사한 뒤 앱으로 돌아가 클립보드 인식 안내에 따라 추가하거나, Home의 QR 코드 스캔 메뉴를 사용하세요. 시스템에서 붙여넣기 권한을 요청하면 이번 읽기를 허용해야 합니다. 가져온 뒤 Type과 서버 필드를 확인하세요.
적합한 경우: 완전한 공유 링크 하나 또는 해당 링크의 QR 코드를 보유한 경우
Add Server: 필드를 하나씩 직접 입력
Home에서 ‘+’를 탭하고 Add Server로 이동해 해당 Type을 선택하세요. 보유한 설정에 따라 주소, 포트, 인증 정보를 입력한 뒤 필요한 TLS 및 전송 옵션을 설정합니다. 직접 추가해도 원격 구독이 자동으로 연결되지는 않습니다.
적합한 경우: 필드 목록만 있거나 가져오기 과정에서 누락된 매개변수를 확인해야 하는 경우
정리: 목록 업데이트가 필요하면 구독 관계를 유지하세요
단일 프로토콜 링크를 입력했다면 설정이 변경될 때 보통 다시 가져오거나 편집해야 합니다. 구독 URL을 입력했다면 해당 구독을 업데이트하세요. 이전 링크를 다시 붙여넣는 것으로 원격에서 새 설정을 가져올 수는 없습니다.
- 가져오기 전: 사용자가 이미 보유한 설정에서 가져오는지 확인하고, 복구할 수 있도록 원본을 보관하세요. 여전히 사용할 수 있는 항목을 먼저 삭제하지 마세요.
- 저장 후: Type, 서버, 포트, 메모를 확인하세요. 이름만 보고 가져오기가 올바른지 판단하지 마세요.
- 테스트 전: TLS, SNI, Host, Path 등 필요한 필드를 확인하세요. 프로토콜마다 표시되는 필드가 다르며, 모든 연결에 이 항목을 전부 입력해야 하는 것은 아닙니다.
- 업데이트 후: 구독 그룹의 항목이 변경되었는지 확인하세요. 원격 업데이트가 직접 수정한 항목을 덮어쓸 수 있으므로 중요한 변경 사항은 별도로 기록해 두세요.
자주 묻는 질문: 인식, 업데이트, 연결을 각각 확인하세요
문제 해결 시 문제를 세 단계로 나누세요. 텍스트를 파싱할 수 있는지, 구독 요청으로 콘텐츠를 가져올 수 있는지, 저장한 연결을 사용할 수 있는지 확인합니다. Global Routing은 트래픽에 적용할 라우팅 방식을 정할 뿐, 불완전한 공유 텍스트를 복구하지 않습니다. Proxy나 Config로 전환해도 비밀번호가 빠진 링크가 완전해지지는 않습니다.
링크를 복사했는데 추가 안내가 표시되지 않는 이유는 무엇인가요?
텍스트가 ss://, vmess://, vless:// 또는 trojan://로 시작하는지 먼저 확인하세요. 채팅 앱에서 덧붙인 설명과 코드 블록 표시를 제거한 뒤 링크 전체를 다시 복사합니다. 시스템에서 이번 붙여넣기에 대해 Shadowrocket이 클립보드를 읽도록 허용했는지도 확인하세요. 필드 목록만 있다면 Home → ‘+’ → Add Server에서 직접 입력하세요.
HTTPS 주소가 브라우저에서 열리는데 구독으로 사용할 수 없는 이유는 무엇인가요?
로그인 페이지, 안내 페이지, 오류 페이지가 열렸다고 해서 목록을 가져온 것은 아닙니다. URL 전체가 입력되었는지, 특히 물음표 뒤의 token 매개변수가 있는지 확인하세요. 주소의 용도는 사용 중인 서비스 제공업체에 문의하세요. 인증 정보가 포함된 주소를 제삼자 웹사이트에 입력해 검사하지 마세요.
구독을 업데이트했는데 직접 추가한 항목이 바뀌지 않는 이유는 무엇인가요?
직접 추가한 항목은 해당 구독에 포함되지 않을 수 있습니다. Home으로 돌아가 항목이 속한 그룹과 출처를 확인한 다음 해당 구독을 업데이트하세요. 항목을 처음에 단일 프로토콜 링크로 추가했다면 새 링크를 가져오거나 새 설정으로 기존 항목을 편집해야 합니다.
포트가 443인데도 연결에 실패하는 이유는 무엇인가요?
항목 편집 화면에서 주소, 포트, 인증 정보, TLS, SNI 및 전송 매개변수를 확인하세요. 443은 포트 번호일 뿐, 필요한 설정을 자동으로 채워 주지 않습니다. 인증서 문제가 있다면 서버 이름과 인증서 설정을 확인하세요. 일반적인 해결 방법이라며 인증서 검증을 바로 끄지 마세요.
문제 해결을 위해 화면을 공유할 때 어떤 정보를 가려야 하나요?
비밀번호, UUID, 전체 구독 URL, token, QR 코드와 그 밖의 인증 매개변수를 가리세요. 판단에 필요한 Type, 포트, 전송 유형, 오류 메시지는 남겨도 됩니다. 인증 정보가 이미 공개되었다면 기존 서비스 채널을 통해 해당 정보를 변경하세요.
필드 확인이 끝나면 서버 연결 상태와 규칙 동작을 따로 살펴보세요. 연결 설정은 연결 방법을 정하고, Config의 규칙은 각 요청에 적용할 정책을 정합니다. 구독 업데이트 성공, 연결 테스트 통과, 대상 요청의 예상 경로 적용은 각각 따로 확인해야 합니다.