직접 이용 중인 서비스의 설정 정보를 가지고 있으며 가져오기 유형을 확인하려는 사용자를 위한 안내입니다. 먼저 단일 공유 링크와 구독 URL을 구분한 뒤 Shadowsocks, VMess, VLESS, Trojan의 각 항목을 살펴봅니다. 마지막으로 Shadowrocket에서 가져오기, 업데이트, 연결 확인을 진행합니다. 도메인, 비밀번호, UUID는 모두 설명을 위한 가상 값이며 실제 연결에는 사용할 수 없습니다.
1. 연결 정보와 설정 목록 주소를 구분하세요
Shadowrocket의 단일 서버 항목에는 프로토콜, 서버 주소, 포트, 인증 정보가 저장됩니다. ss://, vmess://, vless://, trojan://로 시작하는 공유 링크에는 보통 이러한 항목이 직접 인코딩되어 있습니다. 가져오기는 링크에서 정보를 복원하는 과정일 뿐, 서버가 실제로 작동하는지 확인해 주지는 않습니다.
구독 URL은 보통 HTTPS 주소입니다. Shadowrocket이 해당 주소에 요청을 보내고 응답 내용을 읽어 서버 항목을 생성하거나 업데이트합니다. 따라서 공유 링크의 파싱 여부와 구독 서버에 접속할 수 있는지는 서로 다른 문제입니다. HTTPS는 접속 방식일 뿐입니다. 일반 웹페이지나 로그인 페이지도 HTTPS를 사용하므로, 주소의 접두어만 보고 구독 URL이라고 단정할 수 없습니다.
단일 항목은 원본 서버의 주소가 바뀌어도 일반적으로 자동 변경되지 않습니다. 구독 항목은 업데이트할 때 매개변수를 다시 가져올 수 있습니다. 업데이트 과정에서 이전 항목이 삭제되거나 구독이 관리하는 필드가 덮어써질 수도 있으므로, 로컬에서 직접 수정한 내용을 장기적인 관리 방법으로 삼는 것은 적절하지 않습니다. 이 글은 이미 보유한 설정의 사용 방법만 설명하며, 연결 서비스나 구독을 제공·판매·추천하지 않습니다.
2. ss://: Shadowsocks 인증 정보와 포트 확인
ss://는 Shadowsocks 공유 형식입니다. 흔히 쓰이는 SIP002 형식에서는 암호화 방식과 비밀번호를 Base64로 인코딩한 사용자 정보 뒤에 @서버:포트가 이어집니다. 아래 인증 정보는 디코딩하면 aes-128-gcm:password가 됩니다. 도메인과 비밀번호는 모두 가상 값입니다.
ss://[email protected]:8388#Example-SS
YWVzLTEyOC1nY206cGFzc3dvcmQ=: Base64로 인코딩한 암호화 방식과 비밀번호입니다. 서버 도메인이 아닙니다.ss.example.com: 서버 호스트 이름입니다.8388은 이 예시의 포트이며, 실제 값은 서버 설정과 일치해야 합니다.#Example-SS: 화면에 표시되는 메모입니다. 메모를 바꿔도 일반적으로 연결 매개변수는 달라지지 않습니다.?plugin=: 일부 링크에는 플러그인 매개변수가 포함됩니다. 복사할 때 임의로 제거하지 마세요. 사용 가능 여부는 해당 매개변수와 클라이언트 지원 여부에 따라 달라집니다.
일부 구형 링크는 암호화 방식, 비밀번호, 서버, 포트를 통째로 인코딩해 @가 눈에 띄지 않기도 합니다. 표시 방식이 다르다고 프로토콜까지 다른 것은 아닙니다. Base64는 텍스트 인코딩 방식이지 암호화 수단이 아닙니다. 전체 링크를 얻은 사람은 보통 그 안의 연결 자격 정보도 복원할 수 있습니다.
3. vmess://: JSON을 디코딩한 뒤 전송 방식과 TLS 확인
일반적인 VMess 공유 형식은 vmess:// 뒤에 Base64로 인코딩한 JSON을 붙입니다. VLESS URI 형식과 다르므로 접두어를 vless://로 바꿔 프로토콜을 변환할 수 없습니다. 아래 내용은 디코딩된 예시 JSON이며, 그대로 붙여 넣어 가져올 수 있는 완전한 공유 링크가 아닙니다.
{
"v": "2",
"ps": "Example-VMess",
"add": "vmess.example.com",
"port": "443",
"id": "00000000-0000-4000-8000-000000000001",
"aid": "0",
"scy": "auto",
"net": "ws",
"type": "none",
"host": "ws.example.com",
"path": "/connect",
"tls": "tls",
"sni": "tls.example.com"
}
add와 port는 연결 대상을 지정하고, id는 인증용 UUID, ps는 메모입니다. net=ws는 WebSocket 사용을 뜻하며, path는 해당 경로, host는 이 전송 방식에서 사용하는 Host 정보입니다. tls=tls가 TLS 활성화를 나타냅니다. 포트만 443으로 지정한다고 TLS 설정이 자동으로 추가되지는 않습니다.
sni는 TLS 핸드셰이크에 사용할 서버 이름입니다.add와 다르다는 이유만으로 값을 덮어쓰면 안 됩니다.aid는 이전 버전과의 호환을 위한 필드이며, 이 예시에서는0입니다. 연결 지연 시간이나 포트를 뜻하지 않습니다.scy는 VMess의 암호화 설정입니다. WebSocket이나 TLS와 같은 설정으로 취급하면 안 됩니다.v는 이 유형의 공유 JSON에서 사용하는 형식 필드이며, Shadowrocket 앱 버전이 아닙니다.
가져온 뒤 주소와 UUID가 모두 있는데도 연결되지 않는다면 전송 유형, 경로, Host, SNI를 함께 확인하세요. 서버 주소만 맞다고 해서 WebSocket과 TLS를 사용하는 설정이 연결되는 것은 아닙니다.
4. vless://와 trojan://: 비슷한 형식, 다른 인증 정보
VLESS와 Trojan의 공유 형식은 모두 표준 URI와 비슷합니다. 인증 정보는 @ 앞에, 서버와 포트는 뒤에 오며 물음표 뒤에는 매개변수, 해시 기호 뒤에는 메모가 붙습니다. 아래 두 줄은 구조를 보여 주는 예시일 뿐, 실제 연결에 사용할 수 있는 설정은 아닙니다.
vless://[email protected]:443?encryption=none&security=tls&type=ws&host=ws.example.com&path=%2Fconnect&sni=tls.example.com#Example-VLESS
trojan://[email protected]:443?security=tls&type=tcp&sni=tls.example.com#Example-Trojan
| 필드 위치 | VLESS 예시 | Trojan 예시 |
|---|---|---|
@ 앞 | UUID 인증 ID | 연결 비밀번호 |
security=tls | 이 예시의 TLS 설정 | 이 예시의 TLS 설정 |
type | ws,WebSocket | tcp, 이 예시에서는 TCP 전송을 사용합니다 |
sni | TLS 서버 이름 | TLS 서버 이름 |
# 뒤 | 표시 메모 | 표시 메모 |
VLESS 예시의 encryption=none은 VLESS 자체의 암호화 필드를 설명하며, 연결 전체에 TLS가 없다는 뜻은 아닙니다. 이 예시에서는 security=tls로 전송 보안 설정을 지정합니다. 공유 매개변수는 구현에 따라 다를 수 있습니다. 원본에 flow 등의 필드가 있다면 값을 그대로 유지하고 가져온 결과를 확인하세요. 다른 링크의 매개변수를 가져와 조합하면 안 됩니다.
%2Fconnect를 디코딩하면 /connect가 됩니다. 비밀번호에 @, #, & 등의 예약 문자가 들어 있다면 일반적으로 올바른 퍼센트 인코딩이 필요합니다. 그렇지 않으면 파서가 비밀번호 일부를 구분자로 처리할 수 있습니다. IPv6 리터럴 주소를 URI에 넣을 때는 [2001:db8::1]:443처럼 대괄호로 감싸야 합니다. 이 주소도 문서 예시일 뿐입니다.
5. Home에서 단일 링크와 구독 URL 가져오기
먼저 가져올 내용의 유형을 확인하세요. Config는 규칙 설정을 관리합니다. 내용이 URL이라는 이유만으로 서버 구독 주소를 규칙 설정으로 가져오면 안 됩니다. Home의 서버 항목과 구독 그룹, Config의 라우팅 규칙은 각각 용도가 다릅니다.
가져올 항목은 두 가지: 단일 연결 정보와 원격 구독 목록
단일 공유 링크
- 원본 링크 전체를 복사하세요. 클립보드에서 가져오라는 안내가 표시되면 먼저 프로토콜 유형을 확인하세요.
- Home에서 가져오기를 마친 뒤 항목을 열어 서버, 포트, 인증 정보를 확인하세요.
- TLS, SNI, 전송 매개변수도 확인하세요. 메모 이름으로 프로토콜을 판단하지 마세요.
- 매개변수가 바뀌면 해당 항목을 다시 가져오거나 편집하세요. 구독 업데이트에 의존하지 마세요.
이미 보유한 구독 URL
- Home → +로 이동한 다음 Type을 Subscribe로 설정하세요.
- URL에 구독 주소 전체를 붙여 넣고, 알아보기 쉬운 메모를 입력한 뒤 저장하세요.
- 구독을 업데이트하고 해당 그룹에 서버 항목이 표시되는지 확인하세요.
- 이후에는 원본 구독에서 매개변수를 업데이트하세요. 새로고침할 때마다 구독을 새로 추가하지 마세요.
가져오기에 성공했다는 것은 필드나 응답 내용을 파싱할 수 있었다는 뜻일 뿐입니다. 현재 설정의 사용 가능 여부는 연결 테스트와 실제 접속을 거쳐야 판단할 수 있습니다.
구독 URL은 보통 https://example.com/sub?token=xxxx와 같은 형식입니다. 여기서 도메인과 token은 모두 가상 값입니다. 실제 token은 접근 권한을 부여할 수 있으므로 쿼리 매개변수 전체를 유지하되 공개 게시판에 올리지 마세요. 브라우저에서 주소가 열린다고 해서 앱이 유효한 구독 정보를 읽을 수 있는 것은 아닙니다. 응답이 로그인 페이지, 오류 페이지 또는 지원하지 않는 형식일 수 있습니다.
- 구독을 저장한 뒤 그룹 이름과 항목 수를 기록해 두면 다음 업데이트 결과를 비교하기 쉽습니다.
- 업데이트를 실행하고 오류가 표시되는지, 서버 주소나 항목이 바뀌었는지 확인하세요.
- 항목 하나를 선택해 Connectivity Test를 실행한 뒤 연결 스위치를 켜고 실제로 접속해 보세요.
- 구독 항목을 수정해야 한다면 먼저 원래 매개변수를 보관하세요. 이후 업데이트에서 구독이 관리하는 필드가 덮어써질 수 있습니다.
6. 수동 업데이트와 자동 업데이트 선택하기
구독 업데이트는 원격 목록을 다시 요청하는 기능입니다. 모든 서버를 테스트하거나 단일 공유 링크에 자동 동기화 기능을 추가하는 것은 아닙니다. 처음 가져올 때는 수동 업데이트를 실행해 원본과 응답 내용이 올바른지 확인하세요. 반복해서 검증할 방법을 마련한 뒤 필요에 따라 Settings → Subscribe에서 업데이트 설정을 조정하면 됩니다.
Subscribe 수동 업데이트
권장처음 가져오거나 문제를 확인할 때 직접 업데이트를 실행하면 오류 메시지와 항목 변화를 해당 작업과 연결해 살펴볼 수 있습니다. 매개변수를 확인하기 전에 반복해서 새로고침하는 상황도 피할 수 있습니다.
권장 상황: 처음 가져올 때, 매개변수 확인, 구독 업데이트 오류 해결
Subscribe 자동 업데이트
구독을 정상적으로 업데이트할 수 있는 상태라면 앱에서 제공하는 업데이트 설정에 따라 목록을 관리할 수 있습니다. 실제 실행 여부는 네트워크와 앱 실행 상태의 영향을 받으므로, 지속적인 백그라운드 확인이 보장되는 것은 아닙니다.
권장 상황: 사용 가능 여부를 확인했고 원격 목록을 계속 관리해야 할 때
구독 요청이 기존 프록시 연결을 통해서만 도달할 수 있다면 Settings → Subscribe → Update via Proxy를 확인하세요. 이 옵션을 켜기 전에 작동하는 연결이 있어야 합니다. 이 설정으로 만료된 token을 복구하거나 작동하지 않는 서버를 되살릴 수는 없습니다. 현재 연결을 사용할 수 없다면 해당 연결을 통해 업데이트를 강제할 경우 오히려 시간 초과가 발생할 수 있습니다.
7. 자주 묻는 질문: 파싱 오류부터 업데이트 후 연결 실패까지
링크를 복사했는데 가져온 뒤 아무것도 표시되지 않는 이유는 무엇인가요?
프로토콜 접두어가 온전히 있는지, 끝부분이 메신저에서 잘리지 않았는지, 링크에 줄바꿈이나 따옴표 또는 설명 문구가 섞이지 않았는지 확인하세요. VMess라면 일부 JSON 조각이 아니라 인코딩된 전체 내용을 가져왔는지 확인해야 합니다. 원본으로 돌아가 다시 복사하고, 접두어를 바꿔 프로토콜을 추측하지 마세요.
구독 업데이트는 성공했는데 단일 서버 연결이 시간 초과되는 이유는 무엇인가요?
업데이트 성공은 구독 주소에 접속할 수 있고 응답 내용을 파싱할 수 있다는 뜻일 뿐입니다. Home에서 해당 항목을 선택해 Connectivity Test를 실행한 뒤 주소, 포트, 인증 정보, TLS 매개변수를 확인하세요. 일부 항목만 실패한다면 구독 전체를 계속 새로고침하지 말고 해당 항목을 따로 점검하세요.
포트가 이미 443인데도 SNI를 확인해야 하는 이유는 무엇인가요?
포트는 연결 대상의 포트 번호만 지정합니다. TLS를 사용할 때는 SNI, 인증서 이름, 검증 결과도 핸드셰이크에 영향을 줍니다. 항목을 열어 TLS와 서버 이름을 확인하고 원래 설정에 맞는 값으로 복원하세요. 인증서 검증을 끄는 방법을 일반적인 해결책으로 삼지 마세요.
업데이트 후 직접 바꾼 이름이나 매개변수가 달라진 이유는 무엇인가요?
구독이 관리하는 항목은 새로고침할 때 다시 생성되거나 덮어써질 수 있습니다. 업데이트 전 기록과 비교해 메모만 바뀐 것인지, 서버·포트·인증 정보까지 달라진 것인지 확인하세요. 계속 유지해야 하는 별도 수정 사항은 구독 관리 항목과 분리해 관리하고, 원본 서비스의 매개변수가 변경되면 직접 동기화해야 한다는 점에 유의하세요.
문제 해결을 위해 링크를 다른 사람에게 보내도 되나요?
원본 링크를 그대로 보내지 마세요. 비밀번호, UUID, token 등 민감한 값은 숨기고 프로토콜 유형, 포트, 전송 방식, 오류 현상만 남기세요. 전체 구독 주소가 유출됐다면 원본 서비스에서 제공하는 계정 관리 기능으로 접근 자격 정보를 재설정한 다음 Home에서 구독 URL을 업데이트하세요.
문제 해결은 ‘유형 확인 → 전체 복사 → 필드 확인 → 구독 요청 → 단일 항목 테스트 → 실제 접속’ 순서로 진행할 수 있습니다. 공유 링크에는 연결 매개변수가, 구독 주소에는 목록을 가져오는 진입점이 담깁니다. 먼저 어느 단계에서 문제가 생겼는지 파악해야 라우팅 문제를 형식 오류로 오해하거나 원격 서버 문제를 가져오기 실패로 잘못 판단하지 않습니다.