v2fly / domain-list-community

Community managed domain list. Generate geosite.dat for V2Ray.
https://www.v2fly.org
MIT License
4.66k stars 841 forks source link
geosite v2ray

Domain list community

This project manages a list of domains, to be used as geosites for routing purpose in Project V.

Purpose of this project

This project is not opinionated. In other words, it does NOT endorse, claim or imply that a domain should be blocked or proxied. It can be used to generate routing rules on demand.

Download links

Usage example

Each file in the data directory can be used as a rule in this format: geosite:filename.

"routing": {
  "domainStrategy": "IPIfNonMatch",
  "rules": [
    {
      "type": "field",
      "outboundTag": "Reject",
      "domain": [
        "geosite:category-ads-all",
        "geosite:category-porn"
      ]
    },
    {
      "type": "field",
      "outboundTag": "Direct",
      "domain": [
        "domain:icloud.com",
        "domain:icloud-content.com",
        "domain:cdn-apple.com",
        "geosite:cn",
        "geosite:private"
      ]
    },
    {
      "type": "field",
      "outboundTag": "Proxy-1",
      "domain": [
        "geosite:category-anticensorship",
        "geosite:category-media",
        "geosite:category-vpnservices"
      ]
    },
    {
      "type": "field",
      "outboundTag": "Proxy-2",
      "domain": [
        "geosite:category-dev"
      ]
    },
    {
      "type": "field",
      "outboundTag": "Proxy-3",
      "domain": [
        "geosite:geolocation-!cn"
      ]
    }
  ]
}

Generate dlc.dat manually

Run go run ./ --help for more usage information.

Structure of data

All data are under data directory. Each file in the directory represents a sub-list of domains, named by the file name. File content is in the following format.

# comments
include:another-file
domain:google.com @attr1 @attr2
keyword:google
regexp:www\.google\.com$
full:www.google.com

Syntax:

The following types of rules are NOT fully compatible with the ones that defined by user in V2Ray config file. Do Not copy and paste directly.

How it works

The entire data directory will be built into an external geosite file for Project V. Each file in the directory represents a section in the generated file.

To generate a section:

  1. Remove all the comments in the file.
  2. Replace include: lines with the actual content of the file.
  3. Omit all empty lines.
  4. Generate each domain: line into a sub-domain routing rule.
  5. Generate each keyword: line into a plain domain routing rule.
  6. Generate each regexp: line into a regex domain routing rule.
  7. Generate each full: line into a full domain routing rule.

How to organize domains

File name

Theoretically any string can be used as the name, as long as it is a valid file name. In practice, we prefer names for determinic group of domains, such as the owner (usually a company name) of the domains, e.g., "google", "netflix". Names with unclear scope are generally unrecommended, such as "evil", or "local".

Attributes

Attribute is useful for sub-group of domains, especially for filtering purpose. For example, the list of google domains may contains its main domains, as well as domains that serve ads. The ads domains may be marked by attribute @ads, and can be used as geosite:google@ads in V2Ray routing.

Contribution guideline