Skip to content
Hiddify edited this page May 11, 2023 · 4 revisions

URL Scheme

We extend the protocol defined here.

Download configuration

Supports quick import of configuration files using URL Scheme:

hiddify://install-sub?url=<encoded v2ray config URI>#<name>
hiddify://install-proxy?url=<encoded v2ray proxy share link>#<name>
vmess://....
vless://...
ss://...
trojan://...

Examples:

Example Sub link content
# http_WS_direct_vless تست 
vless://64177752-4266-4e00-94e3-1b8ececc6623@ip.sslip.io:80?security=none&sni=ip.sslip.io&type=ws&alpn=http/1.1&path=/2LBLzR6NsjNkCN830caotU&host=ip.sslip.io&encryption=none&fp=chrome&headerType=None#http_WS_direct_vless_تست

# http_WS_direct_vmess تست 
vmess://64177752-4266-4e00-94e3-1b8ececc6623@ip.sslip.io:80?security=none&sni=ip.sslip.io&type=ws&alpn=http/1.1&path=/2LBLzR6NsjNkCN830caotU&host=ip.sslip.io&encryption=none&fp=chrome&headerType=None#http_WS_direct_vless_تست
Example Encoded Proxy link

Only a single proxy is supported

vless%3A%2F%2F64177752-4266-4e00-94e3-1b8ececc6623%40ip.sslip.io%3A80%3Fsecurity%3Dnone%26sni%3Dip.sslip.io%26type%3Dws%26alpn%3Dhttp%2F1.1%26path%3D%2F2LBLzR6NsjNkCN830caotU%26host%3Dip.sslip.io%26encryption%3Dnone%26fp%3Dchrome%26headerType%3DNone%23http_WS_direct_vless_%D8%AA%D8%B3%D8%AA%0A

Profile Title:

If there is parameter in the url, we use for the profile title

else we use "Profile-Title" header as described in bellow

else we use "content-disposition" header as described in bellow

else we use the last part of the URL as the configuration file name. Any .txt .yaml or .yml will be removed

Response headers

Profile-Title

You can use base64 encoded UTF8 name for profile title that allows you to have emoji in profile title 😍 However you use also the ascii name in the header. Example:

Profile-Title: base64:SSDinaTvuI8gSGlkZGlmeQ==

It will show the profile title as I ❤️ Hiddify

Profile-Title: I love hiddify

It will show the profile title as I love Hiddify

content-disposition

If the Profile-Title is not set for backward compatibility with clash configs we use the value corresponding to filename as the configuration file name, otherwise use the last part of the URL as the configuration file name. Any .txt, .yaml or .yml will be removed

content-disposition: attachment; filename="abc.txt"

profile-update-interval

If there is a profile-update-interval field in the response header, the configuration file automatic update interval is set to the corresponding value, in hours

profile-update-interval: 12

subscription-userinfo

If the subscription-userinfo field exists in the response header, its corresponding traffic and expiration information will be displayed in the Profiles module, specification reference here

subscription-userinfo: upload=455727941; download=6174315083; totl=1073741824000; expire=1671815872

profile-web-page-url

If the profile-web-page-url field exists in the response header, the Open web page option will be displayed in the profile, allowing the user to jump to the corresponding portal home page

support-url

If the support-url field exists in the response header, the support option will be displayed in the profile, allowing the user to jump to the corresponding portal home page

moved-permanently-to

If the moved-permanently-to field exists in the response header, this will update the subscription url. It is useful when your sublink is blocked or you want to change the domain.

DNS

If the DNS field exists in the response header, and the user did not set his/her own preferred DNS, the application will use this DNS server. (In the clash profile this setting can be override)

Example

image In this example:

پروفایل یک = <name>
usage=<download>+<upload> (if more than 80% of total :yellow,  more than 100% :red)
total=<total>
روزباقیمانه=relative date of <expire> (if less than 7 days: yellow, less than zero: red)
مشاهده= open browser with <profile-web-page-url>

The usage information will be fetched by HEAD option whenever user open the application or every 1 minute (when user is focused in the application) If any of those fields are empty the corresponding data will not be shown.