/iran-hosted-domains

Primary LanguagePythonMIT LicenseMIT

Iran Hosted Domains

A lot of services and domains are outside of Iran and they are restricted or blocked by iranian censorship infrastructure or tech companies around the world, for accessing this service you need to use VPN or proxies with tunneling option, apart from these problems, when we use proxies the domestic services are unavailable because our IP is not in Iran; for bypassing these issues we gathered a list of Iranian domains and services to help our people bypass this situation.

VPN & Proxy Problems in Iran

The following issues arise when using VPN for some Iran hosted websites:

  • They may force you to have Iran IP to be able to access.
  • They may offer 50% off bandwidth while having Iran IP.
  • They may limit speed for non-Iran IPs or VPNs are slow.

Usage

This can differ depending on which tool you use. You can download the domains list from the release page.
In v2ray clients you can set Domain Resolution Strategy to IPIfNonMatch for better routing. more info.

Qv2ray

In the release section, you'll find the qv2ray_schema file.

  1. Download the file.
  2. open preferences and click on Advanced Route Settings.
  3. From the bottom of the screen, click on import schema....
  4. choose the downloaded file (qv2ray_schema.json).
  5. in the opened dialogue box, click on yes.
  6. Click on OK.

image

.dat file

It can be used in all v2fly, v2ray and xray clients.

  1. Download iran.dat file from here.

  2. Copy/Import file in your client.
    for example:

    • v2ray macOS: /usr/local/share/v2ray image
  3. Add proper rules:

    • ext:iran.dat:ir
    • ext:iran.dat:other
    • ext:iran.dat:ads
  4. Reconnect.

SagerNet

  1. Download iran.dat file from here.
  2. Import .dat file from Route -> Three dots -> Manage Route Assets:

sagernet

  1. Add proper rules Route -> Create Route:
    • Block Ads:
      • domain: geosite:category-ads-all
      • outbound: Block
    • Block Iran Ads:
      • domain: ext:iran.dat:ads
      • outbound: Block
    • Bypass Iran .ir Domains:
      • domain: regexp:.+\.ir$
      • outbound: Bypass
    • Bypass Iran non .ir Domains:
      • domain: ext:iran.dat:other
      • outbound: Bypass
    • Bypass Iran geoip:
      • ip: geoip:ir
      • outbound: Bypass

for screenshots of routing settings click here.

  1. Reconnect.

Shadowrocket

  1. Download shadowrocket.conf file.
  2. Tap Import From Cloud in the Shadowrocket app and then import the file.

shadowrocket

  1. Finally, tap on the shadowrocket.conf and select Use Config.

shadowrocket

Clash (Like ClashX / clash_for_windows_pkg / Clash .NET / ...)

  1. Open your current profile/config that you use.
  2. Add these lines to the file:
rule-providers:
  iran:
    type: http
    behavior: classical
    url: "https://github.com/SamadiPour/iran-hosted-domains/releases/latest/download/clash_rules.yaml"
    path: ./ruleset/iran.yaml
    interval: 432000
  1. Add this line to rules: section
  - RULE-SET,iran,DIRECT

image

  1. Save the file.
  2. Based on the client, you may need to set clash on Rule mode.

Create .dat file manually (Tutorial)

1. Install golang

It's important to install the right version. Always check it from v2fly/domain-list-community.

2. Clone v2fly/domain-list-community

git clone https://github.com/v2fly/domain-list-community

3. Prepare domains

In a .dat file, you can have as many distinct groups as you want. Each of these groups can be in bypass, proxy or blocked sections. Each group can have as many domains as you want.

Each group is a txt file containing domains. For example, you can have an ads.txt file containing ad domains.

4. Move files to /data

When cloning domain-list-community, you also clone all the groups that have been there before. Since you don't need them, delete everything in /data directory.

Now you have to copy your files to /data directory. Make sure to remove their file extension. So for example, ads.txt needs to be ads.

cd domain-list-community
rm data/*

cp ~/ads.txt data/ads

5. Run the program

go run ./ --outputdir=../

Files

  • iran.dat: Contains all websites hosted in Iran and ADs in a special format.
  • domains.txt: Contains all websites hosted in Iran.
  • qv2ray_schema.json: Importable json schema that can be used in Qv2ray.
  • shadowrocket.conf: Importable conf file that can be used in Shadowrocket.

Source

If you know of any other source, or you found a website that isn't here, please open an issue or add that specific website to custom_domains.py and make a PR.

How does it work?

A Python script is executed by Github Action and generates files that are on the release page.