V2Ray core doesn’t provide subscription feature, this is cool because it’s considered unnecessery to people who self-host just one or several V2Ray services. If using service bought from websites, however, one may have to find a client with subscribe support to get a better user experience.
Up to now, there are several subscription formats; I’m gonna explore to resolve some of them on my own demand, using Python or even other languages.
- Subscription url: a regular url (http / https);
- Return content of subscription url: a list of share link, separated by newline, at last encoded using
- Support schemes:
vmess://base64(Configuration) ss://base64(Configuration) socks://base64(Configuration)
Get Content from Subscription Url#
from urllib.request import urlopen subscribe_url = 'https://input-your-own-v2rayn-format-subscribe-url-here' return_content = urlopen(subscribe_url).read() print(return_content)
Now we should get a really long string that seems random, like this:
Get Share Links#
from base64 import b64decode share_links = b64decode(return_content).decode('utf-8').splitlines() print(share_links)
This step we get a list of share link string:
- urllib.parse — Parse URLs into components — Python 3.8.0 documentation
- json — JSON encoder and decoder — Python 3.8.0 documentation
from urllib.parse import urlsplit import json schemes_allow = ['vmess', 'ss', 'socks'] configs =  for share_link in share_links: url = urlsplit(share_link) if url.scheme not in schemes_allow: raise RuntimeError('invalid share link') configs.append(json.loads(b64decode(url.netloc).decode('utf-8'))) print(configs)
Finally we get a list of json objects, each of them contains a server configuraion: