This project manages a list of domains, to be used as geosites for routing purpose in Project V.
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.
@!cn attribute has been cast out from cn lists. geosite:geolocation-cn@!cn is no longer available. Check #390, #3119 and #3198 for more information.geosite:xxx-ads has been removed. Use geosite:xxx@ads instead. geosite:category-ads[-xx] is not affected.Please report if you have any problems or questions.
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"
]
}
]
}
dlc.dat manuallygolang and gitgit clone https://github.com/v2fly/domain-list-community.gitcd domain-list-communitygo mod downloaddlc.dat (without datapath option means to use domain lists in data directory of current working directory):go run ./go run ./ --datapath=/path/to/your/custom/data/directoryRun go run ./ --help for more usage information.
For anyone who wants to generate custom .dat files, you may read #3370.
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
full:analytics.google.com @ads
keyword:google
regexp:^odd[1-7]\.example\.org(\.[a-z]{2})?$
Syntax:
[!NOTE] Adding new
regexpandkeywordrules is discouraged because it is easy to use them incorrectly, and proxy software cannot efficiently match these types of rules.[!NOTE] 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.
#. It may begin anywhere in the file. The content in the line after # is treated as comment and ignored in production.domain:, followed by a valid domain name. The prefix domain: may be omitted.full:, followed by a complete and valid domain name.keyword:, followed by a substring of a valid domain name.regexp:, followed by a valid regular expression (per Golang's standard).domain, full, keyword, and regexp) may have none, one or more attributes. Each attribute begins with @ and followed by the name of the attribute. Attributes will remain available in final lists and dlc.dat.& and followed by the name of the target list (nomatter whether the target has a dedicated file in data path). This is a method for data management, and will not remain in the final lists or dlc.dat.include:, followed by the name of another valid domain list. include:listb in file lista means adding all domain rules of listb into lista. Inclusions with attributes stand for selective inclusion. include:listb @attr1 @-attr2 means only adding those domain rules with @attr1 and without @attr2. This is a special type for data management, and will not remain in the final lists or dlc.dat.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.
General steps:
dlc.dat:domain: line into a sub-domain routing rule.full: line into a full domain routing rule.keyword: line into a plain domain routing rule.regexp: line into a regex domain routing rule.Read main.go for details.
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".
Attribute is useful for sub-group of domains, especially for filtering purpose. For example, the list of google 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. Domains and services that originate from outside China mainland but have access point in China mainland, may be marked by attribute @cn.
$ claude mcp add domain-list-community \
-- python -m otcore.mcp_server <graph>