cd ~{,/zhs/}

V2Ray Subscription Parse

Meta Info


V2Ray core doesn’t provide subscription feature, this is cool because it’s considered unnecessary 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.

V2RayN Format

Source documentation



Get Content from Subscription Url

HOWTO Fetch Internet Resources Using The urllib Package — Python 3.8.0 documentation

from urllib.request import urlopen
subscribe_url = 'https://input-your-own-v2rayn-format-subscribe-url-here'
return_content = urlopen(subscribe_url).read()

Now we should get a really long string that seems random, like this:

Base64 Example

base64 — Base16, Base32, Base64, Base85 Data Encodings — Python 3.8.0 documentation

from base64 import b64decode
share_links = b64decode(return_content).decode('utf-8').splitlines()

This step we get a list of share link string:

Share Links

Get Configurations

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')

Note: You may have to add padding to url.netloc.

Finally we get a list of json objects, each of them contains a server configuraion: