ss://·vmess://·vless://·trojan:// 링크 형식 안내: 단일 서버 공유 링크와 구독 URL 차이

단일 서버 공유 링크의 구성 요소, 구독 URL의 일괄 업데이트 방식, 두 가지를 Shadowrocket에 가져오는 경로의 차이를 설명합니다. 예시는 모두 example.com을 사용합니다.

이 글의 핵심

서비스 제공업체에서 구독 URL이나 연결 매개변수를 받아 Shadowrocket에 가져오려는 사용자를 위한 안내입니다. 링크 접두사로 형식을 확인하고 인증·전송·TLS 항목을 살펴본 뒤, 단일 서버 링크 가져오기와 구독 업데이트의 차이를 알아봅니다. 본문에 나오는 도메인, 비밀번호, UUID는 형식 설명용이며 실제 연결에 사용할 수 없습니다.

1. 단일 서버 공유 링크와 구독 URL의 차이

단일 서버 공유 링크는 연결에 필요한 매개변수를 URI 하나에 담습니다. ss://, vmess://, vless://, trojan:// 접두사를 통해 가져오기 기능이 적용할 형식을 구분할 수 있습니다. 가져오면 서버 항목이 추가되며, 새 내용을 계속 가져오는 주소가 생성되는 것은 아닙니다.

구독 URL은 보통 HTTPS 주소입니다. Shadowrocket이 해당 주소에 요청을 보내고 응답 내용을 읽어 서버 항목을 파싱합니다. 구독 업데이트는 원격 콘텐츠를 다시 요청해 처리하는 방식입니다. 이미 가져온 단일 서버 링크 자체가 바뀌는 것은 아닙니다. 구독 URL은 서비스 제공업체에서 받으세요. 주소가 https://로 시작한다는 사실만으로 서버 구독인지, 구성 파일인지, 일반 웹페이지인지 알 수는 없습니다.

4가지
이 글에서 다루는 URI 접두사: ss / vmess / vless / trojan
1개
단일 서버 공유 링크는 보통 서버 항목 하나를 나타냅니다
443
HTTPS 기본 포트이며, 모든 프록시 서비스가 사용하는 포트는 아닙니다

2. ss://: 인증 정보, 서버 주소, 메모

Shadowsocks에서 흔히 사용하는 SIP002 형식에는 Base64URL로 인코딩된 인증 정보와 서버 주소, 포트, 선택 사항인 메모가 포함됩니다. 아래 예시의 인증 정보를 디코딩하면 aes-256-gcm:password이고, 주소는 example.com, 포트는 8388입니다. 이 예시 매개변수로는 연결할 수 없습니다.

ss://[email protected]:8388#Example-SS
구성 요소의미확인할 사항
ss://Shadowsocks 공유 형식 표시Add Server에서 Type이 Shadowsocks로 설정되어 있는지 확인합니다.
YWVzLTI1Ni1nY206cGFzc3dvcmQ인코딩된 암호화 방식과 비밀번호암호화 방식과 비밀번호가 서버 설정과 일치하는지 확인합니다.
example.com:8388서버 주소와 포트포트는 서비스 제공업체가 안내한 값으로 입력해야 합니다. 모두 443으로 바꾸면 안 됩니다.
#Example-SS선택 사항인 메모서버 항목을 구분하기 위한 값이며 서버 인증에는 사용되지 않습니다.

과거 형식 중에는 암호화 방식, 비밀번호, 주소, 포트를 통째로 인코딩하는 방식도 있습니다. 이 경우 문자열에서 @가 보이지 않을 수 있습니다. 가져오기에 실패하면 구분자를 임의로 추가하기보다 링크가 어떤 형식인지 먼저 확인하세요. 일부 링크에는 플러그인 매개변수도 포함됩니다. 주소와 비밀번호가 맞더라도 해당 매개변수를 빠뜨리면 연결되지 않을 수 있습니다.

3. vmess://: Base64로 인코딩된 JSON 매개변수

흔히 사용하는 VMess 공유 형식은 vmess:// 뒤에 Base64 텍스트가 이어집니다. 디코딩하면 보통 JSON이 나오며, 일반적인 ‘사용자 이름@서버’ 형식이 아닙니다. 아래는 인코딩 전의 예시 JSON으로, 복사해 바로 가져올 수 있는 완전한 링크가 아닙니다.

{
  "v": "2",
  "ps": "Example-VMess",
  "add": "example.com",
  "port": "443",
  "id": "11111111-2222-4333-8444-555555555555",
  "aid": "0",
  "scy": "auto",
  "net": "ws",
  "type": "none",
  "host": "example.com",
  "path": "/connect",
  "tls": "tls",
  "sni": "example.com"
}

메시지에서 링크를 복사하는 과정에서 줄바꿈, 스마트 따옴표 삽입, Base64 문자열 잘림이 발생하면 파싱에 실패할 수 있습니다. 원본 전체 텍스트를 다시 복사한 뒤 가져온 결과를 확인하세요. VMess JSON을 Config에 구성 파일 본문처럼 붙여 넣지 마세요. JSON의 port를 구독 URL의 포트로 착각해서도 안 됩니다.

4. vless://와 trojan://: 읽기 쉬운 매개변수도 하나씩 확인

VLESS와 Trojan 공유 링크는 흔히 직관적인 URI 구조를 사용합니다. 인증 정보는 @ 앞에 있고, 뒤에는 주소와 포트, 쿼리 매개변수가 이어집니다. 예시의 &는 페이지에서 링크 매개변수를 구분하는 기호로 표시됩니다. 실제로 복사할 때는 원본 링크 전체를 유지하세요.

vless://[email protected]:443?encryption=none&security=tls&type=ws&host=example.com&path=%2Fconnect&sni=example.com#Example-VLESS

trojan://[email protected]:443?security=tls&type=tcp&sni=example.com#Example-Trojan
확인 항목VLESS 예시Trojan 예시
인증 정보UUID비밀번호 demo-password
대상 주소example.com:443example.com:443
전송 매개변수type=ws, Host와 Path 필요type=tcp
TLS 매개변수security=tls 및 snisecurity=tls 및 sni

path=%2Fconnect의 %2F는 슬래시를 퍼센트 인코딩한 값입니다. 비밀번호에 @, # 같은 URI 예약 문자가 포함된 경우에도 올바르게 인코딩해야 합니다. 그렇지 않으면 파서가 비밀번호 일부를 주소나 메모로 인식할 수 있습니다. 필드 경계를 정확히 모른다면 링크 전체를 임의로 디코딩한 뒤 가져오지 마세요.

가져온 다음 전송 및 TLS 설정 확인

항목이 Home에 표시된다는 것은 링크가 파싱되었다는 뜻일 뿐입니다. 연결에 실패하면 항목 편집 화면에서 주소, 포트, 인증 정보, 전송 유형, Host, Path, SNI를 차례로 확인하세요. 매개변수 오류를 가리기 위해 인증서 확인을 먼저 끄지 마세요.

VLESS 예시의 encryption=none은 프로토콜에 해당하는 매개변수입니다. 이 설정만으로 예시 링크에 TLS가 없다는 뜻은 아닙니다. 공유 형식에 따라 매개변수 이름이 다를 수 있으므로 접두사만 바꿔 VLESS 링크를 Trojan 링크로 변환할 수는 없습니다.

5. Shadowrocket 가져오기 경로: 서버 구독과 Config 구분하기

Home에서는 서버 항목과 연결 대상을 관리하고, Config에서는 규칙 구성을 관리하며, Settings에서는 앱 설정을 관리합니다. 서버 구독은 여러 서버 항목을 일괄 관리하기 위한 기능입니다. 원격 구성에는 [General], [Rule] 같은 섹션이 포함될 수 있습니다. 두 종류 모두 HTTPS로 가져올 수 있지만 주소가 비슷해 보여도 같은 메뉴에 입력하면 안 됩니다.

Add Server → Type → Subscribe

권장

서버 구독 URL을 이미 가지고 있다면 Home에서 추가 버튼을 누르고 Add Server로 이동합니다. Type에서 Subscribe를 선택한 뒤 URL을 입력하고 저장하세요. 이후에는 해당 구독 항목에서 업데이트를 진행합니다.

적합한 경우: 서버 구독을 보유하고 있으며 일괄 업데이트 기능을 사용하려는 경우

Add Server → 해당 프로토콜의 Type

보유한 매개변수에 따라 Shadowsocks, VMess, VLESS 또는 Trojan을 선택하고 주소, 포트, 인증 정보를 입력합니다. 단일 공유 링크는 클립보드 가져오기 안내나 QR 코드 스캔으로 파싱할 수도 있습니다. 가져온 뒤 해당 필드를 확인하세요.

적합한 경우: 단일 공유 링크가 있거나 서버 항목 하나를 직접 확인하려는 경우

Config → 원격 구성

규칙 구성 파일을 가져올 때 사용합니다. 원격 주소가 구성 내용을 반환하는지 먼저 확인한 뒤 Config에서 추가하고 사용할 항목을 선택하세요. 일반 서버 구독 URL을 규칙 구성 파일 주소로 입력하면 안 됩니다.

적합한 경우: 구성 섹션이 포함된 원격 구성 주소를 받은 경우

클립보드 및 카메라 권한은 시스템에서 관리합니다. 링크 전체를 복사한 뒤 Home으로 돌아가 표시되는 가져오기 안내를 따르세요. QR 코드는 Home의 스캔 기능으로 원본 텍스트를 읽습니다. 인식 안내가 표시되지 않으면 접두사와 공백, 줄바꿈을 먼저 확인하세요. 구독 URL을 단일 서버의 Address 필드에 입력하면 안 됩니다.

보유한 자료에 따른 처리 방법

단일 서버 공유 링크가 있는 경우
  • 접두사와 링크가 온전한지 확인한 뒤 클립보드나 QR 코드로 가져옵니다.
  • Home에서 항목을 열고 주소, 포트, 전송 필드를 확인합니다.
  • 서버 매개변수가 변경되면 새 링크를 받아 항목을 다시 확인합니다.
서버 구독 URL이 있는 경우
  • 구독 URL은 서비스 제공업체에서 받고, 쿼리 매개변수를 포함해 전체 주소를 유지합니다.
  • Type이 Subscribe인 항목에 URL을 저장합니다.
  • 해당 구독을 업데이트한 뒤 항목이 예상대로 변경되었는지 확인합니다.

계속 업데이트하려면 구독 항목을 유지하세요. 단일 서버 공유 링크만 있는 경우 자동으로 업데이트 가능한 구독으로 바뀌지 않습니다.

6. 구독 업데이트 방식, 민감한 매개변수, 문제 해결 순서

아래는 실제 주소가 아닌 예시입니다. token=xxxx는 인증 매개변수가 들어가는 위치를 나타내며 실제 인증 정보가 아닙니다. 서버는 요청을 받으면 인코딩된 서버 목록이나 클라이언트가 인식할 수 있는 다른 구독 콘텐츠를 반환할 수 있습니다. HTTPS URL만으로는 응답 형식을 알 수 없습니다.

https://example.com/sub?token=xxxx
  1. 먼저 리소스 유형을 확인합니다. 해당 주소가 서버 구독인지 원격 구성인지 서비스 제공업체에 확인하세요. 로그인 페이지, 오류 메시지 또는 빈 내용이 반환되면 유효한 서버 목록으로 처리할 수 없습니다.
  2. 다음으로 요청이 성공했는지 확인합니다. 시간 초과가 발생하면 현재 네트워크에서 구독 도메인에 접속할 수 있는지 먼저 확인하세요. HTTP 401 또는 403은 대개 권한이나 링크 상태를 확인해야 합니다. 브라우저에 웹페이지가 표시된다는 이유만으로 구독이 유효하다고 판단하지 마세요.
  3. 그다음 파싱 결과를 확인합니다. 요청은 성공했지만 항목이 표시되지 않는다면 현재 가져오기 경로에서 지원하지 않는 콘텐츠이거나 실제로 사용 가능한 항목이 없는 것일 수 있습니다. 형식 안내를 확인하고 같은 구독을 반복해서 추가하지 마세요.
  4. 마지막으로 연결과 규칙을 확인합니다. 업데이트에 성공해도 모든 항목이 연결되는 것은 아닙니다. 먼저 Home에서 선택된 항목을 확인한 다음 Global Routing을 살펴보세요. Config는 구성 규칙을 사용합니다. Proxy는 프록시 처리 대상 트래픽을 프록시 정책에 전달하고, Direct는 직접 연결하며, Scene은 선택한 시나리오 설정에 따라 트래픽을 처리합니다. 서버 공유 링크만으로는 전체 트래픽 분기 규칙이 설정되지 않습니다.

7. 링크 가져오기 및 구독 업데이트 자주 묻는 질문

ss://를 Subscribe의 URL에 붙여 넣었는데 업데이트되지 않는 이유는 무엇인가요?

ss://는 서버 항목 하나를 나타내는 링크이지, HTTP 요청으로 내용을 가져오는 구독 주소가 아닙니다. 잘못 입력한 구독 항목을 삭제하고 Home으로 돌아가 클립보드나 QR 코드로 원본 공유 링크를 가져오세요. 그런 다음 Shadowsocks의 암호화 방식, 비밀번호, 포트를 확인합니다.

구독을 업데이트하면 직접 수정한 이름이나 매개변수도 유지되나요?

구독 항목은 원격에서 반환된 콘텐츠에 따라 관리됩니다. 업데이트할 때 로컬에서 수정한 내용이 덮어써질 수 있으며, 실제 동작은 업데이트 및 유지 설정에 따라 달라집니다. 매개변수를 시험하려면 먼저 기존 값을 기록하고 별도 항목에서 테스트하세요. 구독 항목의 임시 수정 사항을 장기 설정의 기준으로 삼지 마세요.

QR 코드는 읽혔지만 연결에 실패합니다. 다시 스캔해야 하나요?

먼저 가져온 항목이 온전한지, 특히 WebSocket Path, Host, TLS SNI가 제대로 들어왔는지 확인하세요. 텍스트가 잘리지 않았다면 다시 스캔해도 서버 매개변수는 달라지지 않습니다. 서버 상태와 현재 선택된 항목도 확인하세요. 문제가 계속되면 문제 해결 가이드를 참고하세요.

서버 링크를 추가한 뒤에도 DOMAIN-SUFFIX나 FINAL을 설정해야 하나요?

서버는 연결 대상을 지정하고 규칙은 요청이 향할 곳을 정하므로 역할이 다릅니다. Global Routing → Config를 사용하는 경우 현재 구성의 규칙 순서와 정책 대상을 확인하세요. DOMAIN-SUFFIX는 도메인 접미사를 기준으로 일치시키고, FINAL은 앞에서 일치하지 않은 요청을 처리합니다. 서버를 가져왔다고 이런 규칙까지 설정된 것은 아닙니다.

App Store에서 다운로드