본문으로 건너뛰기

ss://·vmess://·vless://·trojan:// 공유 링크 형식과 구독 링크 차이

ss://·vmess://·vless://·trojan:// 링크 구조와 인코딩을 살펴보고, 단일 서버 링크와 구독 링크의 용도 및 업데이트 방식, Shadowrocket에서 가져오는 방법을 안내합니다.

이 글의 핵심 내용

단일 서버 공유 링크에는 보통 연결 매개변수가 직접 포함되지만, 구독 링크는 대개 온라인에서 내용을 가져오는 주소입니다. 직접 준비한 서비스 제공업체 설정을 보유한 사용자를 위해 링크 접두사로 입력 유형을 구분하고, 주소·인증·전송·TLS를 확인한 뒤 Shadowrocket에서 알맞은 가져오기 메뉴를 선택하는 방법을 설명합니다. 예시는 형식 설명용이며 연결에는 사용할 수 없습니다.

1. 단일 서버 링크, 구독 주소, 구성 파일 구분하기

ss://, vmess://, vless://, trojan://은 공유 링크의 scheme, 즉 콜론 앞에 붙는 유형 표시입니다. 뒤에 오는 문자열을 클라이언트가 어떻게 해석할지 알려 주지만, 웹 주소를 뜻하거나 모든 전송 세부 정보를 정하는 것은 아닙니다. Shadowrocket에 가져오면 이 문자열이 편집 가능한 연결 항목으로 변환됩니다.

구독 주소는 보통 https://로 시작합니다. 예를 들면 https://example.com/sub?token=xxxx와 같습니다. 일반적으로 이 주소 자체에는 서버 매개변수가 들어 있지 않고, 콘텐츠를 가져오는 위치를 가리킵니다. 서버에서 여러 공유 링크가 담긴 내용을 반환할 수도 있고, 전체 콘텐츠가 Base64로 인코딩되어 있을 수도 있습니다. 주소의 확장자만으로 반환 형식을 판단할 수는 없습니다.

입력 유형주요 내용업데이트 방법
단일 서버 공유 링크주소·인증 정보·연결 매개변수 한 세트새 링크를 다시 가져오거나 해당 항목을 직접 수정
구독 주소서버에서 관리하는 목록을 가져오는 URL기존 주소로 다시 요청해 구독 목록 새로고침
구성 파일General, Rule, DNS 및 정책 관련 설정이 포함될 수 있음로컬 파일을 다시 불러오거나 원격 구성을 업데이트

HTTPS 주소가 웹페이지나 원격 구성을 가리킬 수도 있으므로 구독 링크라고 단정할 수 없습니다. 먼저 해당 주소의 용도를 설명하는 기존 서비스 제공업체 안내를 확인하세요. 서버 구독을 업데이트해도 트래픽 분할 규칙이 자동으로 만들어지지 않으며, 원격 구성을 가져오는 것은 연결 항목 하나를 추가하는 것과 다릅니다.

4가지
이 글에서 살펴보는 공유 scheme: ss / vmess / vless / trojan
1세트
단일 서버 링크에는 보통 연결 매개변수 한 세트가 담깁니다
2가지
연결 매개변수와 트래픽 분할 설정을 각각 확인해야 합니다

판별 방법: 먼저 콘텐츠의 용도를 확인한 다음 가져오기 메뉴를 선택합니다

HTTPS 주소를 받았다면 서버 목록을 반환하는지 전체 구성 파일을 반환하는지 먼저 확인하세요. 네 가지 공유 scheme 중 하나로 시작하는 링크라면 단일 서버 링크로 판단해 파싱하면 됩니다. 브라우저에서 열리는 주소라고 해서 구독 링크로 사용할 수 있는 것은 아닙니다.

2. ss://: Shadowsocks 인증 정보와 주소

일반적인 SIP002 형식 링크는 인증 정보와 서버 위치를 구분합니다. 인증 정보는 보통 method:password를 Base64 또는 URL-safe Base64로 인코딩한 값이며, 뒤에 @host:port가 옵니다. 아래 문자열에서 인코딩된 부분을 디코딩하면 aes-128-gcm:test가 됩니다. 비밀번호는 형식 설명을 위한 예시입니다.

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

method:password@host:port 전체를 인코딩하는 구형 공유 형식도 있습니다. 두 형식은 @가 그대로 보이는지 여부가 다르지만, 그것만으로 어느 한쪽이 반드시 잘못된 형식이라고 판단할 수는 없습니다. 일부 링크에는 plugin 쿼리 매개변수가 포함되기도 합니다. 해당 확장을 실제로 지원하고 올바르게 설정한 경우에만 이 매개변수가 의미가 있습니다.

3. vmess://: JSON을 디코딩한 뒤 필드 유형 확인하기

일반적인 VMess 공유 형식은 vmess:// 뒤에 Base64로 인코딩된 JSON이 이어집니다. 주소, 포트, UUID, 전송 및 TLS 정보가 이 객체에 담기므로 일반 URL처럼 @를 구분자로 찾아서는 안 됩니다. 아래는 디코딩한 구조이며, 그대로 붙여 넣어 가져올 수 있는 완전한 공유 링크가 아닙니다.

{
  "v": "2",
  "ps": "Demo",
  "add": "example.com",
  "port": "443",
  "id": "00000000-0000-4000-8000-000000000000",
  "aid": "0",
  "scy": "auto",
  "net": "ws",
  "type": "none",
  "host": "example.com",
  "path": "/demo",
  "tls": "tls",
  "sni": "example.com"
}

링크 생성 방식에 따라 선택 필드가 생략되거나 포트가 문자열로 저장될 수 있습니다. 디코딩 결과가 올바른 JSON이 아니라면 먼저 링크 전체를 복사했는지 확인하고, 특히 끝부분이 메신저에서 잘리지 않았는지 살펴보세요. JSON 전체를 서버 주소 입력란에 넣지 마세요.

4. vless://와 trojan://: 비슷한 URL 형식, 서로 다른 인증 정보

두 공유 링크 모두 보통 ‘인증 정보, 주소, 쿼리 매개변수, 메모’ 구조의 URL 형식을 사용합니다. 겉보기에는 비슷하지만 @ 앞의 내용은 서로 바꿔 쓸 수 없습니다. VLESS에는 보통 UUID가, Trojan에는 보통 비밀번호가 들어갑니다. 아래 주소와 인증 정보, 경로는 형식 설명용 예시입니다.

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

trojan://[email protected]:443?security=tls&type=tcp&sni=example.com#Demo
필드VLESS 예시의 의미Trojan 예시의 의미
@ 앞의 내용사용자 인증에 쓰이는 UUID사용자 인증에 쓰이는 Password
security=tlsTLS 보안 계층 지정이 예시에서 사용하는 TLS 설정
type예시 값은 ws예시 값은 tcp
sniTLS 핸드셰이크에 사용하는 서버 이름TLS 핸드셰이크에 사용하는 서버 이름
host / path이 예시는 WebSocket용이 TCP 예시에는 해당 매개변수가 필요하지 않음

VLESS의 encryption=none은 프로토콜 계층 설정을 뜻하며 URL의 TLS가 자동으로 비활성화된다는 의미는 아닙니다. TLS 사용 여부는 보안 계층 매개변수와 실제 가져오기 결과를 확인해야 합니다. Trojan은 TLS를 사용하는 경우가 많으므로 문제 해결 시 Password, SNI, 인증서에 설정된 도메인을 함께 확인하세요. 포트에 연결되는지만 확인해서는 충분하지 않습니다.

쿼리 매개변수는 퍼센트 인코딩을 사용합니다. 예를 들어 %2Fdemo는 /demo로 디코딩됩니다. 비밀번호에 @, #, ?가 포함되면 링크를 생성할 때 각 위치의 규칙에 맞게 인코딩해야 합니다. 그렇지 않으면 파서가 인증 정보 구간을 예상보다 일찍 끝낼 수 있습니다. URL의 호스트 부분에 IPv6 주소를 쓸 때는 보통 대괄호로 감쌉니다. 예: [2001:db8::1]:443.

5. Shadowrocket에서 링크별 가져오기 및 업데이트

아래 안내는 직접 보유한 서비스 제공업체의 매개변수 또는 구독이 있는 경우를 전제로 합니다. Shadowrocket은 App Store에서 한 번 구매하면 이용할 수 있는 상용 비공개 소스 앱입니다. 클라이언트 구매와 연결 서비스 요금제는 별개입니다. 이 사이트는 서버나 구독을 제공하거나 판매하거나 추천하지 않습니다.

입력 유형 확인 가져오기 메뉴 선택 파싱된 필드 확인 연결 항목 저장 연결 결과 확인

단일 서버 공유 링크

  1. 링크 전체를 복사하고 설명 문구, 따옴표, 코드 펜스는 함께 복사하지 마세요. QR 코드는 문자열을 전달하는 또 다른 방식일 뿐이므로, 안에 들어 있는 내용이 무엇인지 먼저 확인해야 합니다.
  2. Home을 열고 사용 가능한 클립보드 가져오기 안내나 QR 코드 스캔 메뉴를 이용하세요. 안내가 표시되지 않으면 오른쪽 위 +를 눌러 Add Server로 이동한 뒤 올바른 Type을 선택하고 보유한 매개변수를 직접 입력하세요.
  3. 저장하기 전에 Address, Port, 인증 정보, TLS, SNI, 전송 설정을 확인하세요. 단일 서버 링크의 메모를 Password나 Address에 입력해서는 안 됩니다.
  4. Home으로 돌아가 새 항목이 추가되었는지 확인한 다음 해당 항목을 선택해 테스트하세요. 저장에 성공했다는 것은 클라이언트가 입력된 필드를 받아들였다는 뜻일 뿐, 서버 인증이 완료되었다는 의미는 아닙니다.

구독 주소와 원격 구성

  1. 서버 구독을 추가하려면 보통 Home → + → Add Server로 이동한 다음 Type을 Subscribe로 설정하고 전체 주소를 URL에 입력해 저장합니다. 실제 메뉴와 옵션은 현재 앱에 표시되는 내용을 기준으로 확인하세요.
  2. 가져온 뒤 해당 구독 그룹에 예상한 항목이 나타나는지 확인하세요. 목록을 새로 받아오려면 같은 URL로 구독을 반복해서 만들지 말고 기존 구독 그룹을 업데이트하세요.
  3. 규칙이 포함된 원격 구성 주소라면 Config에서 구성 용도에 맞게 추가하고 불러오세요. 전체 구성 주소를 단일 서버의 Address로 입력하지 마세요.

구독은 서버에서 목록을 다시 가져오므로 구독에 포함된 항목을 직접 수정했더라도 업데이트 후에는 덮어써질 수 있습니다. 변경 사항을 유지해야 한다면 필요한 필드를 먼저 기록하고 별도 항목을 만들지 결정하세요. 로컬 수정 사항이 서버에 자동으로 반영된다고 가정하지 마세요. 구독 URL에 포함된 token도 인증 정보처럼 안전하게 보관해야 합니다.

6. 가져오기 오류는 파싱·연결·규칙 단계로 나눠 확인하기

먼저 항목이 파싱되었는지 확인하고, 다음으로 연결이 설정되는지 확인한 뒤, 마지막으로 요청이 어떤 정책을 따르는지 살펴보세요. 이렇게 하면 Base64 문자열 문제를 네트워크 장애로 오인하거나, 규칙에서 프록시가 선택되지 않은 상황에 비밀번호만 반복해서 바꾸는 일을 줄일 수 있습니다.

vmess://를 복사했는데 새 항목이 추가되지 않는 이유는 무엇인가요?

접두사와 링크 끝부분이 온전한지 확인하고, 복사할 때 붙은 줄바꿈이나 문장 부호를 제거하세요. 내용을 확인해야 한다면 신뢰할 수 있는 로컬 환경에서 Base64를 디코딩해 완전한 JSON인지 살펴보고 add, port, id를 중점적으로 확인하세요. 실제 링크를 공개 디코딩 사이트에 제출하지 마세요.

vless://를 가져왔는데 Path가 잘못 표시되면 어떻게 하나요?

새 항목의 편집 화면을 열고 전송 방식이 ws인지 확인한 다음 Path와 Host를 살펴보세요. URL의 %2F는 파싱 후 슬래시로 표시되어야 합니다. 필드가 여전히 잘못되었거나 비어 있다면 기존 서비스 제공업체 매개변수에 맞게 수정하고 TLS와 SNI가 누락되지 않았는지 확인하세요.

구독 업데이트 후 직접 수정한 이름과 매개변수가 바뀌는 이유는 무엇인가요?

구독을 업데이트하면 서버 목록을 다시 불러오므로 로컬 수정 사항이 유지되지 않을 수 있습니다. 먼저 기존 구독 그룹을 업데이트했는지 확인한 뒤 서버의 현재 매개변수와 비교하세요. 로컬 변경 사항을 고정해서 보존해야 한다면 업데이트 때 덮어써지는 항목을 계속 수정하기보다 별도의 항목으로 저장하세요.

서버를 선택했는데도 웹사이트 요청이 해당 서버를 거치지 않는 이유는 무엇인가요?

Home에서 Global Routing을 확인하세요. Direct는 선택된 프록시를 거치지 않습니다. Config는 현재 구성의 규칙에 따라 동작하고, Proxy는 프록시 라우팅을 사용하며, Scene은 장면별 설정에 따라 동작합니다. 먼저 현재 라우팅 모드를 확인한 다음 연결 스위치와 해당 규칙을 살펴보세요.

Global Routing에서 Config를 사용하는 경우 규칙 순서도 결과에 영향을 줍니다. 예를 들어 DOMAIN-SUFFIX,example.com,DIRECT는 일치하는 도메인을 DIRECT로 처리합니다. 뒤에 있는 FINAL,PROXY는 앞선 규칙에 일치하지 않은 요청에만 적용됩니다. 공유 링크를 새로 가져와도 기존 DOMAIN-SUFFIX, GEOIP, IP-CIDR 규칙이 자동으로 덮어써지지는 않습니다.

App Store 정품 확인