Shadowrocket 공유 링크 형식: ss://, vmess://, vless://, trojan://와 구독 링크 차이

공유 링크는 단일 서버를, 구독 링크는 주기적으로 업데이트할 수 있는 서버 목록을 가리킵니다. 네 가지 접두사의 구조와 차이, Shadowrocket에서 각각 가져오는 방법을 알아봅니다.

이 글 한눈에 보기

이 글은 이미 서비스와 구독을 보유하고 있으며 Shadowrocket에 연결 정보를 가져오려는 사용자를 위한 안내입니다. 먼저 링크 접두사로 단일 공유 링크와 원격 구독을 구분하고, 서버, 포트, 인증 및 전송 설정을 확인한 뒤 가져오기, 테스트, 업데이트 순서로 검증합니다. 본문의 예시는 구조 설명용이며 연결에 사용할 수 없습니다. 이 사이트는 서버나 구독을 제공·판매·추천하지 않습니다.

1. 공유 링크와 구독 링크: 저장되는 것은 연결 정보인가, 원격 주소인가

ss://, vmess://, vless://, trojan:// 링크에는 보통 하나의 서버 연결 정보가 문자열로 인코딩되어 있습니다. 가져오면 클라이언트가 서버 주소, 포트, 인증 정보와 관련 옵션을 읽습니다. 이후 서버 포트가 바뀌더라도 저장해 둔 공유 링크는 자동으로 수정되지 않습니다.

구독 링크는 보통 https:// 주소입니다. Shadowrocket이 해당 주소에 요청을 보내 응답 내용에서 서버 목록을 가져오며, 업데이트할 때마다 내용을 다시 요청합니다. 따라서 구독은 여러 서버를 관리할 수도 있고, 일시적으로 서버 하나만 반환할 수도 있습니다. 업데이트 가능 여부는 목록에 현재 몇 개의 항목이 있는지가 아니라 원격 구독 소스가 유지되어 있는지에 달려 있습니다.

4종
이 글에서 다루는 공유 링크 접두사: ss / vmess / vless / trojan
2가지
가져오기 출처: 단일 연결 정보와 원격 구독 주소
443
이 글의 TLS 포트 예시이며, 프로토콜에서 정한 포트가 아닙니다

https://로 시작한다고 해서 해당 주소가 구독 링크라고 단정할 수는 없습니다. 서비스 계정 페이지, 사용 안내 페이지, 구독 API 모두 HTTPS를 사용할 수 있습니다. 유효한 구독 주소는 로그인 양식이나 웹페이지가 아니라 클라이언트가 인식할 수 있는 구독 데이터를 반환해야 합니다.

2. ss://: Shadowsocks의 암호화 방식, 비밀번호, 서버

일반적인 Shadowsocks 공유 링크는 SIP002 형식을 사용합니다. ‘암호화 방식:비밀번호’를 Base64로 인코딩한 사용자 정보 뒤에 서버와 포트를 붙입니다. Base64는 인코딩일 뿐 보안 수단이 아닙니다. 전체 링크를 가진 사람은 보통 인증 정보를 복원할 수 있습니다.

ss://[email protected]:8388#Demo-SS

이전 형식 중에는 ‘암호화 방식:비밀번호@서버:포트’ 전체를 인코딩하는 방식도 있습니다. 따라서 ss://로 시작하더라도 뒤에 오는 문자열을 모두 @ 기준으로 나눌 수 있는 것은 아닙니다. 가져오기에 실패하면 링크가 완전한지, 암호화 방식이 지원되는지 먼저 확인하세요. 한 형식의 정보를 억지로 다른 형식으로 조합하지 마세요.

3. vmess://: Base64 안에는 보통 JSON이 들어 있습니다

일반적인 VMess 공유 형식은 vmess:// 뒤에 Base64로 인코딩된 JSON이 이어집니다. 일반 URL처럼 바깥쪽에서 호스트와 포트를 바로 확인할 수 없습니다. 아래는 디코딩된 구조를 설명하기 위한 예시이며, 복사해 가져올 수 있는 공유 링크가 아닙니다.

{
  "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"
}

디코딩한 데이터에서 닫는 중괄호가 빠졌거나 필드가 잘렸거나 서식 있는 따옴표가 나타난다면 복사 과정에서 데이터가 손상됐을 수 있습니다. 인증 필드를 임의로 채우지 말고 원본에서 링크 전체를 다시 복사하세요. JSON을 정상적으로 파싱할 수 있어도 서버에 연결된다는 뜻은 아닙니다.

4. vless://와 trojan://: 비슷한 형식, 다른 인증 방식

두 링크 유형은 URI 구조를 사용하는 경우가 많습니다. 접두사 다음에는 인증 정보가 오고, @ 뒤에는 서버와 포트가 오며, ? 뒤에는 전송 또는 보안 매개변수가, # 뒤에는 메모가 옵니다. 형식이 비슷해도 프로토콜끼리 호환되는 것은 아닙니다. 접두사를 바꾼다고 한 서비스가 다른 프로토콜로 변환되지는 않습니다.

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
항목VLESS 예시Trojan 예시
인증 정보UUID비밀번호
전송 매개변수type=ws, Host와 경로를 일치시켜야 합니다type=tcp, 지정된 설정을 사용합니다
TLS 이름sni=example.comsni=example.com
메모Demo-VLESSDemo-Trojan

예시의 encryption=none은 VLESS 프로토콜 계층의 설정을 나타냅니다. 이것만으로 연결 전체에 TLS가 없다고 판단할 수는 없으므로 security=tls 등의 매개변수도 확인해야 합니다. 공유 형식과 전송 방식 조합에 따라 flow 같은 필드가 포함될 수도 있습니다. 구체적인 값은 기존 설정을 기준으로 해야 하며, 모든 VLESS 링크에 같은 값을 적용하면 안 됩니다.

URL 인코딩도 파싱에 영향을 줍니다. %2Fdemo를 디코딩하면 /demo가 됩니다. 비밀번호나 경로에 @, #, & 같은 예약 문자가 포함되면 올바르게 인코딩해야 합니다. 메신저가 덧붙인 마침표, 줄바꿈, 따옴표까지 함께 복사하지 마세요. 링크 전체를 반복해서 디코딩하면 매개변수 경계가 달라질 수 있습니다.

5. Shadowrocket에서 단일 링크와 구독 가져오기

아래 안내는 iPhone / iPad에서 흔히 사용하는 Home 화면을 기준으로 합니다. 다른 플랫폼은 버튼 배치가 다를 수 있지만, ‘서버 하나 가져오기’와 ‘Subscribe 소스 추가’를 구분해야 합니다. Home에서는 서버와 연결을 관리하고, Config에서는 규칙 설정을, Settings에서는 앱 옵션을 관리합니다. 서버 링크를 Config에 가져오는 것으로 Home에 서버를 추가하는 작업을 대신할 수는 없습니다.

기존 공유 링크 하나 가져오기

  1. 본인이 보유한 설정 출처에서 링크 전체를 복사합니다. 프로토콜 접두사부터 메모 끝까지 빠짐없이 복사하세요.
  2. Home으로 이동해 클립보드 가져오기 기능을 사용합니다. 클립보드 접근 권한을 묻는 메시지가 표시되면 허용한 뒤 계속 진행하세요. 다른 플랫폼에서 해당 기능이 보이지 않으면 플랫폼에 맞는 가져오기 메뉴를 사용합니다.
  3. QR 코드를 사용하는 경우 코드에 링크 전체가 포함되어야 합니다. 스캔은 입력 방식일 뿐 링크의 프로토콜 매개변수를 바꾸지 않습니다.
  4. 가져온 뒤 항목 상세 정보를 열어 프로토콜, 주소, 포트, 인증 정보, TLS 및 전송 설정을 확인합니다. 그런 다음 저장하고 해당 항목을 선택하세요.

기존 원격 구독 추가

  1. Home → +에서 Type을 Subscribe로 설정합니다.
  2. 기존 구독 주소를 URL에 붙여 넣고 알아보기 쉬운 메모를 입력한 뒤 저장합니다. 여기에 입력하는 것은 구독 API 주소이지 서비스 홈페이지가 아닙니다.
  3. 해당 구독의 업데이트 기능을 실행하고 요청이 완료될 때까지 기다린 다음, 구독 그룹을 펼쳐 반환된 서버를 확인합니다. 화면에 아이콘 메뉴가 있다면 그 안의 Update 기능을 사용하세요.
  4. 나중에 업데이트할 수 있도록 구독 항목을 유지하세요. 서버 하나만 복사한 뒤 소스를 삭제하고도 복사본이 계속 동기화될 거라고 기대하면 안 됩니다.

6. 가져오기 결과 확인: 매개변수 문제를 먼저 점검하고 규칙을 확인합니다

가져오기에 성공했다는 것은 클라이언트가 데이터를 인식했다는 뜻일 뿐, 인증, 전송 또는 원격 서버가 정상이라는 의미는 아닙니다. 먼저 가져온 항목을 선택하고 시스템에서 요구하는 연결 권한을 허용한 뒤 연결을 켜고, 연결 테스트와 실제 접속을 확인하세요. 테스트 수치는 사용한 테스트 방식의 결과일 뿐 지속적인 다운로드 속도를 나타내지 않습니다.

Global Routing → Config

추천

현재 Config의 규칙에 따라 요청의 경로를 결정합니다. 규칙에 일치하면 DIRECT, 프록시 또는 다른 설정된 정책이 선택될 수 있으므로 모든 요청이 선택한 서버를 사용하는 것은 아닙니다.

적합한 용도: 가져오기 검증을 마친 뒤 일상적으로 규칙 기반 분기를 사용할 때

Global Routing → Proxy

클라이언트에서 프록시 처리 대상으로 분류되는 요청에 프록시를 사용하도록 하여 규칙 선택에 따른 변수를 일시적으로 줄입니다. 시스템의 모든 트래픽이 반드시 처리된다는 뜻은 아닙니다.

적합한 용도: ‘서버는 작동하지만 대상 요청이 프록시를 거치지 않는’ 문제를 확인할 때

Global Routing → Direct

직접 연결을 사용하므로 가져온 프록시 서버가 작동하는지 확인하는 방법으로 쓸 수 없습니다. 이 설정에서 웹페이지가 열린다면 해당 직접 연결 경로가 작동한다는 것만 알 수 있습니다.

적합한 용도: 프록시 경로와 임시로 비교할 때

Global Routing의 Scene은 설정된 장면에 따라 해당 설정을 적용하는 기능이지, 다섯 번째 공유 프로토콜이 아닙니다. 문제를 확인할 때는 Settings → On Demand도 살펴보세요. 조건에 따라 자동 연결이 다시 설정될 수 있지만, 잘못된 UUID, 비밀번호 또는 WebSocket 경로를 고쳐 주지는 않습니다.

정리: 검증 조건은 한 번에 하나씩 변경하세요

먼저 주소, 포트, 인증 정보를 확인하고 TLS와 전송 설정을 점검한 다음, 필요할 때만 Global Routing을 임시로 바꾸세요. Proxy에서는 접속되지만 Config에서는 안 된다면 구독을 바로 삭제하고 다시 가져오기보다 규칙 일치 여부와 정책 선택을 먼저 확인하세요.

7. 공유 링크와 구독 가져오기 관련 자주 묻는 질문

링크를 복사했는데 Home에 항목이 추가되지 않는 이유는 무엇인가요?

웹페이지 제목이 아니라 완전한 ss://, vmess://, vless:// 또는 trojan:// 문자열을 복사했는지 확인하세요. 바깥쪽 따옴표와 문장 끝의 구두점은 제거하되 링크 안의 쿼리 매개변수는 삭제하지 마세요. 그런 다음 Home의 가져오기 기능으로 다시 가져오세요.

HTTPS 주소를 추가했는데 업데이트 후 서버가 나타나지 않는 이유는 무엇인가요?

항목의 Type이 Subscribe인지, URL이 본인의 구독 API 주소인지 확인하세요. 로그인 페이지, 만료된 토큰, 지원하지 않는 응답 형식 때문에 서버 목록을 만들지 못할 수 있습니다. 먼저 출처와 오류 메시지를 확인하세요. 구독을 ‘변환’하려고 임의로 프로토콜 접두사를 바꾸면 안 됩니다.

구독 업데이트 후 직접 수정한 서버 설정이 되돌아가는 이유는 무엇인가요?

구독 항목은 보통 원격 콘텐츠에서 관리되므로 업데이트 시 해당 서버가 다시 생성되거나 설정이 덮어써질 수 있습니다. 매개변수를 임시로 확인하려면 원래 구독을 유지한 채 별도의 복사본을 만들어 테스트하세요. 장기적으로 수정하려면 원본 설정 출처에서 변경해야 업데이트 때마다 반복해서 수정하는 일을 피할 수 있습니다.

TLS 오류가 표시되면 인증서 검증을 꺼도 되나요?

검증을 끄는 것을 일반적인 해결 방법으로 삼지 마세요. 먼저 기기 시간, SNI, 연결 주소, 서버 인증서가 예상한 값과 일치하는지 확인하세요. WebSocket을 사용한다면 Host와 경로도 점검해야 합니다. 오류 정보를 보관하고 인증 정보를 숨긴 뒤 본인의 설정 출처에 문의하세요.

링크 하나를 다른 프로토콜로 바로 바꿀 수 있나요?

불가능합니다. Shadowsocks, VMess, VLESS, Trojan은 인증과 핸드셰이크 방식이 다르며 서버도 해당 프로토콜을 제공해야 합니다. 프로토콜을 바꾸려면 접두사나 포트만 바꾸지 말고, 보유한 설정에서 해당 프로토콜의 연결 정보를 모두 사용하세요.

원본 출처를 유지하고 프로토콜별 필드를 확인한 뒤 구독 항목에서 업데이트하세요. 공유 링크는 연결 정보 전달에 사용되며, 실제 연결 여부는 설정, 네트워크, 원격 서버에 따라 달라집니다.

Shadowrocket 다운로드