{"id":13455125,"url":"https://github.com/v2fly/domain-list-community","last_synced_at":"2026-06-27T06:04:56.226Z","repository":{"id":36975491,"uuid":"280658081","full_name":"v2fly/domain-list-community","owner":"v2fly","description":"Community managed domain list. Generate geosite.dat for V2Ray.","archived":false,"fork":false,"pushed_at":"2026-06-19T11:15:39.000Z","size":12022,"stargazers_count":8922,"open_issues_count":62,"forks_count":1363,"subscribers_count":69,"default_branch":"master","last_synced_at":"2026-06-19T13:13:44.114Z","etag":null,"topics":["geosite","v2ray"],"latest_commit_sha":null,"homepage":"https://www.v2fly.org","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/v2fly.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-07-18T13:05:41.000Z","updated_at":"2026-06-19T11:34:09.000Z","dependencies_parsed_at":"2026-03-06T06:07:15.751Z","dependency_job_id":"f1348355-9efc-4bd9-b566-bc98468c7ea3","html_url":"https://github.com/v2fly/domain-list-community","commit_stats":{"total_commits":3768,"total_committers":388,"mean_commits":9.711340206185566,"dds":0.7691082802547771,"last_synced_commit":"7497702f266cc457b11250f2daf1e7ba6af86454"},"previous_names":[],"tags_count":2856,"template":false,"template_full_name":null,"purl":"pkg:github/v2fly/domain-list-community","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/v2fly%2Fdomain-list-community","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/v2fly%2Fdomain-list-community/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/v2fly%2Fdomain-list-community/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/v2fly%2Fdomain-list-community/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/v2fly","download_url":"https://codeload.github.com/v2fly/domain-list-community/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/v2fly%2Fdomain-list-community/sbom","scorecard":{"id":637829,"data":{"date":"2025-08-11","repo":{"name":"github.com/v2fly/domain-list-community","commit":"7c96df42984ad1d9b446282ee5cc95f5551beb5e"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.6,"checks":[{"name":"Code-Review","score":7,"reason":"Found 23/29 approved changesets -- score normalized to 7","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":10,"reason":"30 commit(s) and 4 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/build.yml:1","Warn: no topLevel permission defined: .github/workflows/test-pr.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/v2fly/domain-list-community/build.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/v2fly/domain-list-community/build.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test-pr.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/v2fly/domain-list-community/test-pr.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test-pr.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/v2fly/domain-list-community/test-pr.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test-pr.yml:36: update your workflow using https://app.stepsecurity.io/secureworkflow/v2fly/domain-list-community/test-pr.yml/master?enable=pin","Info:   0 out of   5 GitHub-owned GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact 20250814002625 not signed: https://api.github.com/repos/v2fly/domain-list-community/releases/239837290","Warn: release artifact 20250627153051 not signed: https://api.github.com/repos/v2fly/domain-list-community/releases/228406748","Warn: release artifact 20250625164437 not signed: https://api.github.com/repos/v2fly/domain-list-community/releases/227766224","Warn: release artifact 20250608120644 not signed: https://api.github.com/repos/v2fly/domain-list-community/releases/223853888","Warn: release artifact 20250608120640 not signed: https://api.github.com/repos/v2fly/domain-list-community/releases/223853886","Warn: release artifact 20250814002625 does not have provenance: https://api.github.com/repos/v2fly/domain-list-community/releases/239837290","Warn: release artifact 20250627153051 does not have provenance: https://api.github.com/repos/v2fly/domain-list-community/releases/228406748","Warn: release artifact 20250625164437 does not have provenance: https://api.github.com/repos/v2fly/domain-list-community/releases/227766224","Warn: release artifact 20250608120644 does not have provenance: https://api.github.com/repos/v2fly/domain-list-community/releases/223853888","Warn: release artifact 20250608120640 does not have provenance: https://api.github.com/repos/v2fly/domain-list-community/releases/223853886"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 26 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-21T09:45:38.932Z","repository_id":36975491,"created_at":"2025-08-21T09:45:38.932Z","updated_at":"2025-08-21T09:45:38.932Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34843149,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-27T02:00:06.362Z","response_time":126,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["geosite","v2ray"],"created_at":"2024-07-31T08:01:01.530Z","updated_at":"2026-06-27T06:04:56.197Z","avatar_url":"https://github.com/v2fly.png","language":"Go","funding_links":[],"categories":["Go","🌐 V2Ray 核心 \u0026 服务端","致谢"],"sub_categories":["使用方式"],"readme":"# Domain list community\n\nThis project manages a list of domains, to be used as geosites for routing purpose in Project V.\n\n## Purpose of this project\n\nThis 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.\n\n## Download links\n\n- **dlc.dat**：[https://github.com/v2fly/domain-list-community/releases/latest/download/dlc.dat](https://github.com/v2fly/domain-list-community/releases/latest/download/dlc.dat)\n- **dlc.dat.sha256sum**：[https://github.com/v2fly/domain-list-community/releases/latest/download/dlc.dat.sha256sum](https://github.com/v2fly/domain-list-community/releases/latest/download/dlc.dat.sha256sum)\n- **dlc.dat_plain.yml**：[https://github.com/v2fly/domain-list-community/releases/latest/download/dlc.dat_plain.yml](https://github.com/v2fly/domain-list-community/releases/latest/download/dlc.dat_plain.yml)\n- **dlc.dat_plain.yml.sha256sum**：[https://github.com/v2fly/domain-list-community/releases/latest/download/dlc.dat_plain.yml.sha256sum](https://github.com/v2fly/domain-list-community/releases/latest/download/dlc.dat_plain.yml.sha256sum)\n\n## Notice\n\n- Rules with `@!cn` attribute has been cast out from cn lists. `geosite:geolocation-cn@!cn` is no longer available. Check [#390](https://github.com/v2fly/domain-list-community/issues/390), [#3119](https://github.com/v2fly/domain-list-community/pull/3119) and [#3198](https://github.com/v2fly/domain-list-community/pull/3198) for more information.\n- Dedicated non-category ad lists like `geosite:xxx-ads` has been removed. Use `geosite:xxx@ads` instead. `geosite:category-ads[-xx]` is not affected.\n\nPlease report if you have any problems or questions.\n\n## Usage example\n\nEach file in the `data` directory can be used as a rule in this format: `geosite:filename`.\n\n```json\n\"routing\": {\n  \"domainStrategy\": \"IPIfNonMatch\",\n  \"rules\": [\n    {\n      \"type\": \"field\",\n      \"outboundTag\": \"Reject\",\n      \"domain\": [\n        \"geosite:category-ads-all\",\n        \"geosite:category-porn\"\n      ]\n    },\n    {\n      \"type\": \"field\",\n      \"outboundTag\": \"Direct\",\n      \"domain\": [\n        \"domain:icloud.com\",\n        \"domain:icloud-content.com\",\n        \"domain:cdn-apple.com\",\n        \"geosite:cn\",\n        \"geosite:private\"\n      ]\n    },\n    {\n      \"type\": \"field\",\n      \"outboundTag\": \"Proxy-1\",\n      \"domain\": [\n        \"geosite:category-anticensorship\",\n        \"geosite:category-media\",\n        \"geosite:category-vpnservices\"\n      ]\n    },\n    {\n      \"type\": \"field\",\n      \"outboundTag\": \"Proxy-2\",\n      \"domain\": [\n        \"geosite:category-dev\"\n      ]\n    },\n    {\n      \"type\": \"field\",\n      \"outboundTag\": \"Proxy-3\",\n      \"domain\": [\n        \"geosite:geolocation-!cn\"\n      ]\n    }\n  ]\n}\n```\n\n## Generate `dlc.dat` manually\n\n- Install `golang` and `git`\n- Clone project code: `git clone https://github.com/v2fly/domain-list-community.git`\n- Navigate to project root directory: `cd domain-list-community`\n- Install project dependencies: `go mod download`\n- Generate `dlc.dat` (without `datapath` option means to use domain lists in `data` directory of current working directory):\n  - `go run ./`\n  - `go run ./ --datapath=/path/to/your/custom/data/directory`\n\nRun `go run ./ --help` for more usage information.\n\nFor anyone who wants to generate custom `.dat` files, you may read [#3370](https://github.com/v2fly/domain-list-community/discussions/3370).\n\n## Structure of data\n\nAll 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.\n\n```\n# comments\ninclude:another-file\ndomain:google.com @attr1 @attr2\nfull:analytics.google.com @ads\nkeyword:google\nregexp:^odd[1-7]\\.example\\.org(\\.[a-z]{2})?$\n```\n\n**Syntax:**\n\n\u003e [!NOTE]\n\u003e Adding new `regexp` and `keyword` rules is discouraged because it is easy to use them incorrectly, and proxy software cannot efficiently match these types of rules.\n\n\u003e [!NOTE]\n\u003e 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.\n\n- Comment begins with `#`. It may begin anywhere in the file. The content in the line after `#` is treated as comment and ignored in production.\n- Subdomain begins with `domain:`, followed by a valid domain name. The prefix `domain:` may be omitted.\n- Full domain begins with `full:`, followed by a complete and valid domain name.\n- Keyword begins with `keyword:`, followed by a substring of a valid domain name.\n- Regular expression begins with `regexp:`, followed by a valid regular expression (per Golang's standard).\n- Domain rules (including `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`.\n- Domain rules may have none, one or more affiliations, which additionally adds the domain rule into the affiliated target list. Each affiliation begins with `\u0026` 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`.\n- Inclusion begins with `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`.\n\n## How it works\n\nThe 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.\n\n**General steps:**\n\n1. Read files in the data path (ignore all comments and empty lines).\n2. Parse and resolve source data, turn affiliations and inclusions into actual domain rules in proper lists.\n3. Deduplicate and sort rules in every list.\n4. Export desired plain text lists.\n5. Generate `dlc.dat`:\n   - turn each `domain:` line into a [sub-domain routing rule](https://github.com/v2fly/v2ray-core/blob/master/app/router/routercommon/common.proto#L21).\n   - turn each `full:` line into a [full domain routing rule](https://github.com/v2fly/v2ray-core/blob/master/app/router/routercommon/common.proto#L23).\n   - turn each `keyword:` line into a [plain domain routing rule](https://github.com/v2fly/v2ray-core/blob/master/app/router/routercommon/common.proto#L17).\n   - turn each `regexp:` line into a [regex domain routing rule](https://github.com/v2fly/v2ray-core/blob/master/app/router/routercommon/common.proto#L19).\n\nRead [main.go](./main.go) for details.\n\n## How to organize domains\n\n### File name\n\nTheoretically 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\".\n\n### Attributes\n\nAttribute 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`.\n\n## Contribution guideline\n\n- Fork this repo, make modifications to your own repo, file a PR.\n- Please begin with small size PRs, say modification in a single file.\n- A PR must be reviewed and approved by another member.\n- A script will verify your pull request to test whether your PR is correct or not every time you update the PR. Only the PR which passes the test will be merged. Please go to the Action label to get detailed information if you didn't pass it. We also provide the file which has been generated to make you test.\n- After a few successful PRs, you may apply for manager access to this repository.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fv2fly%2Fdomain-list-community","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fv2fly%2Fdomain-list-community","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fv2fly%2Fdomain-list-community/lists"}