diff --git a/.github/workflows/delete.yml b/.github/workflows/delete.yml new file mode 100644 index 00000000..bb7b6851 --- /dev/null +++ b/.github/workflows/delete.yml @@ -0,0 +1,16 @@ +name: Delete old workflow runs +on: + schedule: + - cron: '0 0 * * 0' +# Run monthly, at 00:00 on the 1st day of month. + +jobs: + del_runs: + runs-on: ubuntu-latest + steps: + - name: Delete workflow runs + uses: GitRML/delete-workflow-runs@main + with: + token: ${{ secrets.AUTH_PAT }} + repository: ${{ github.repository }} + retain_days: 7 diff --git a/.github/workflows/run.yml b/.github/workflows/run.yml index 44ec65f7..4fd42004 100644 --- a/.github/workflows/run.yml +++ b/.github/workflows/run.yml @@ -1,8 +1,8 @@ -name: Build V2Ray rules dat files +name: Build rules dat files on: workflow_dispatch: schedule: - - cron: "0 22 * * *" + - cron: "30 22 * * *" # 6:30 AM UTC+8 push: branches: - master @@ -12,34 +12,24 @@ jobs: build: runs-on: ubuntu-latest steps: - - name: Setup Go 1.19.6 - uses: actions/setup-go@v3 - with: - go-version: 1.19.6 - - name: Set variables run: | - echo "RELEASE_NAME=Released on $(date +%Y%m%d%H%M)" >> $GITHUB_ENV - echo "TAG_NAME=$(date +%Y%m%d%H%M)" >> $GITHUB_ENV - echo "CHINA_DOMAINS_URL=https://raw.githubusercontent.com/felixonmars/dnsmasq-china-list/master/accelerated-domains.china.conf" >> $GITHUB_ENV + echo "GOAMD64=v3" >> $GITHUB_ENV + echo "BUILDTIME=$(TZ=Asia/Shanghai date +'%Y-%m-%d %H:%M')" >> $GITHUB_ENV + echo "CHINA_DOMAINS_URL=https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/ChinaMax/ChinaMax_Domain.txt" >> $GITHUB_ENV echo "GOOGLE_DOMAINS_URL=https://raw.githubusercontent.com/felixonmars/dnsmasq-china-list/master/google.china.conf" >> $GITHUB_ENV echo "APPLE_DOMAINS_URL=https://raw.githubusercontent.com/felixonmars/dnsmasq-china-list/master/apple.china.conf" >> $GITHUB_ENV - echo "EASYLISTCHINA_EASYLIST_REJECT_URL=https://easylist-downloads.adblockplus.org/easylistchina+easylist.txt" >> $GITHUB_ENV - echo "EASYPRIVACY_REJECT_URL=https://easylist-downloads.adblockplus.org/easyprivacy.txt" >> $GITHUB_ENV - echo "PETERLOWE_REJECT_URL=https://pgl.yoyo.org/adservers/serverlist.php?hostformat=hosts&showintro=1&mimetype=plaintext" >> $GITHUB_ENV - echo "ADGUARD_DNS_REJECT_URL=https://adguardteam.github.io/AdGuardSDNSFilter/Filters/filter.txt" >> $GITHUB_ENV - echo "DANPOLLOCK_REJECT_URL=https://someonewhocares.org/hosts/hosts" >> $GITHUB_ENV - echo "ANTIAD_DOMAINS_URL=https://raw.githubusercontent.com/privacy-protection-tools/anti-AD/master/anti-ad-domains.txt" >> $GITHUB_ENV - echo "CUSTOM_DIRECT=https://raw.githubusercontent.com/Loyalsoldier/domain-list-custom/release/cn.txt" >> $GITHUB_ENV + # echo "CUSTOM_DIRECT=https://raw.githubusercontent.com/Loyalsoldier/domain-list-custom/release/cn.txt" >> $GITHUB_ENV echo "CUSTOM_PROXY=https://raw.githubusercontent.com/Loyalsoldier/domain-list-custom/release/geolocation-!cn.txt" >> $GITHUB_ENV echo "WIN_SPY=https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/spy.txt" >> $GITHUB_ENV echo "WIN_UPDATE=https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/update.txt" >> $GITHUB_ENV echo "WIN_EXTRA=https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/extra.txt" >> $GITHUB_ENV shell: bash - - name: Checkout the "hidden" branch of this repo + - name: Checkout the "hidden" branch uses: actions/checkout@v3 with: + repository: MetaCubeX/meta-rules-dat ref: hidden - name: Checkout Loyalsoldier/domain-list-custom @@ -60,6 +50,12 @@ jobs: repository: cokebar/gfwlist2dnsmasq path: gfwlist2dnsmasq + - name: Setup Go + uses: actions/setup-go@v4 + with: + go-version-file: ./custom/go.mod + cache-dependency-path: ./custom/go.sum + - name: Get geoip.dat relative files run: | wget https://github.com/Loyalsoldier/geoip/raw/release/geoip.dat @@ -73,8 +69,8 @@ jobs: - name: Get and add direct domains into temp-direct.txt file run: | - curl -sSL $CHINA_DOMAINS_URL | perl -ne '/^server=\/([^\/]+)\// && print "$1\n"' > temp-direct.txt - curl -sSL ${CUSTOM_DIRECT} | perl -ne '/^(domain):([^:]+)(\n$|:@.+)/ && print "$2\n"' >> temp-direct.txt + curl -sSL ${CHINA_DOMAINS_URL} | sed '/^\s*#/d' | sed '/^[^\.]/ s/^/full:/' | sed 's/^\.\([^.]*\)/\1/' > temp-direct.txt + # curl -sSL ${CUSTOM_DIRECT} | perl -ne '/^(domain):([^:]+)(\n$|:@.+)/ && print "$2\n"' >> temp-direct.txt - name: Get and add proxy domains into temp-proxy.txt file run: | @@ -83,152 +79,193 @@ jobs: curl -sSL $APPLE_DOMAINS_URL | perl -ne '/^server=\/([^\/]+)\// && print "$1\n"' >> temp-proxy.txt curl -sSL ${CUSTOM_PROXY} | grep -Ev ":@cn" | perl -ne '/^(domain):([^:]+)(\n$|:@.+)/ && print "$2\n"' >> temp-proxy.txt - - name: Get and add reject domains into temp-reject.txt file - run: | - curl -sSL $EASYLISTCHINA_EASYLIST_REJECT_URL | perl -ne '/^\|\|([-_0-9a-zA-Z]+(\.[-_0-9a-zA-Z]+){1,64})\^$/ && print "$1\n"' | perl -ne 'print if not /^[0-9]{1,3}(\.[0-9]{1,3}){3}$/' > temp-reject.txt - curl -sSL $EASYPRIVACY_REJECT_URL | perl -ne '/^\|\|([-_0-9a-zA-Z]+(\.[-_0-9a-zA-Z]+){1,64})\^$/ && print "$1\n"' | perl -ne 'print if not /^[0-9]{1,3}(\.[0-9]{1,3}){3}$/' >> temp-reject.txt - curl -sSL $ADGUARD_DNS_REJECT_URL | perl -ne '/^\|\|([-_0-9a-zA-Z]+(\.[-_0-9a-zA-Z]+){1,64})\^$/ && print "$1\n"' | perl -ne 'print if not /^[0-9]{1,3}(\.[0-9]{1,3}){3}$/' >> temp-reject.txt - curl -sSL $ANTIAD_DOMAINS_URL | perl -ne '/^((?=^.{3,255})[a-zA-Z0-9][-_a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-_a-zA-Z0-9]{0,62})+)/ && print "$1\n"' >> temp-reject.txt - curl -sSL $PETERLOWE_REJECT_URL | perl -ne '/^127\.0\.0\.1\s([-_0-9a-zA-Z]+(\.[-_0-9a-zA-Z]+){1,64})$/ && print "$1\n"' >> temp-reject.txt - curl -sSL $DANPOLLOCK_REJECT_URL | perl -ne '/^127\.0\.0\.1\s([-_0-9a-zA-Z]+(\.[-_0-9a-zA-Z]+){1,64})/ && print "$1\n"' | sed '1d' >> temp-reject.txt - - name: Reserve `full`, `regexp` and `keyword` type of rules from custom lists to "reserve" files run: | - curl -sSL ${CUSTOM_DIRECT} | perl -ne '/^((full|regexp|keyword):[^:]+)(\n$|:@.+)/ && print "$1\n"' | sort --ignore-case -u > direct-reserve.txt + # curl -sSL ${CUSTOM_DIRECT} | grep -v google | grep -v manhua | grep -v ooklaserver | grep -v "acg.rip" | perl -ne '/^((full|regexp|keyword):[^:]+)(\n$|:@.+)/ && print "$1\n"' | sort --ignore-case -u > direct-reserve.txt curl -sSL ${CUSTOM_PROXY} | grep -Ev ":@cn" | perl -ne '/^((full|regexp|keyword):[^:]+)(\n$|:@.+)/ && print "$1\n"' | sort --ignore-case -u > proxy-reserve.txt - name: Add proxy, direct and reject domains from "hidden" branch to appropriate temp files run: | cat proxy.txt >> temp-proxy.txt cat direct.txt >> temp-direct.txt - cat reject.txt >> temp-reject.txt + # cat reject.txt >> temp-reject.txt - name: Sort and generate redundant lists run: | cat temp-proxy.txt | sort --ignore-case -u > proxy-list-with-redundant cat temp-direct.txt | sort --ignore-case -u > direct-list-with-redundant - cat temp-reject.txt | sort --ignore-case -u > reject-list-with-redundant + # cat temp-reject.txt | sort --ignore-case -u > reject-list-with-redundant - name: Remove redundant domains run: | chmod +x findRedundantDomain.py ./findRedundantDomain.py ./direct-list-with-redundant ./direct-list-deleted-unsort ./findRedundantDomain.py ./proxy-list-with-redundant ./proxy-list-deleted-unsort - ./findRedundantDomain.py ./reject-list-with-redundant ./reject-list-deleted-unsort [ ! -f "direct-list-deleted-unsort" ] && touch direct-list-deleted-unsort [ ! -f "proxy-list-deleted-unsort" ] && touch proxy-list-deleted-unsort - [ ! -f "reject-list-deleted-unsort" ] && touch reject-list-deleted-unsort sort ./direct-list-deleted-unsort > ./direct-list-deleted-sort sort ./proxy-list-deleted-unsort > ./proxy-list-deleted-sort - sort ./reject-list-deleted-unsort > ./reject-list-deleted-sort diff ./direct-list-deleted-sort ./direct-list-with-redundant | awk '/^>/{print $2}' > ./direct-list-without-redundant diff ./proxy-list-deleted-sort ./proxy-list-with-redundant | awk '/^>/{print $2}' > ./proxy-list-without-redundant - diff ./reject-list-deleted-sort ./reject-list-with-redundant | awk '/^>/{print $2}' > ./reject-list-without-redundant - name: Remove domains from "need-to-remove" lists in "hidden" branch run: | diff ./direct-need-to-remove.txt ./direct-list-without-redundant | awk '/^>/{print $2}' > temp-cn.txt diff ./proxy-need-to-remove.txt ./proxy-list-without-redundant | awk '/^>/{print $2}' > temp-geolocation-\!cn.txt - diff ./reject-need-to-remove.txt ./reject-list-without-redundant | awk '/^>/{print $2}' > temp-category-ads-all.txt - name: Remove domains end with ".cn" in "temp-geolocation-!cn.txt" and write lists to data directory run: | - cat temp-cn.txt | sort --ignore-case -u | perl -ne '/^((?=^.{1,255})[a-zA-Z0-9][-_a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-_a-zA-Z0-9]{0,62})*)/ && print "$1\n"' > ./community/data/cn + cat temp-cn.txt | grep -v google | grep -v manhua | grep -v ooklaserver | grep -v "acg.rip" | sort --ignore-case -u | perl -ne '/^((?=^.{1,255})[a-zA-Z0-9][-_a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-_a-zA-Z0-9]{0,62})*)/ && print "$1\n"' > ./community/data/cn cat temp-cn.txt | sort --ignore-case -u | perl -ne 'print if not /^((?=^.{3,255})[a-zA-Z0-9][-_a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-_a-zA-Z0-9]{0,62})+)/' > direct-tld-list.txt cat temp-geolocation-\!cn.txt | sort --ignore-case -u | perl -ne '/^((?=^.{1,255})[a-zA-Z0-9][-_a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-_a-zA-Z0-9]{0,62})*)/ && print "$1\n"' | perl -ne 'print if not /\.cn$/' > ./community/data/geolocation-\!cn cat temp-geolocation-\!cn.txt | sort --ignore-case -u | perl -ne 'print if not /^((?=^.{3,255})[a-zA-Z0-9][-_a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-_a-zA-Z0-9]{0,62})+)/' > proxy-tld-list.txt - cat temp-category-ads-all.txt | sort --ignore-case -u | perl -ne '/^((?=^.{1,255})[a-zA-Z0-9][-_a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-_a-zA-Z0-9]{0,62})*)/ && print "$1\n"' > ./community/data/category-ads-all - cat temp-category-ads-all.txt | sort --ignore-case -u | perl -ne 'print if not /^((?=^.{3,255})[a-zA-Z0-9][-_a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-_a-zA-Z0-9]{0,62})+)/' > reject-tld-list.txt - - name: Add `full`, `regexp` and `keyword` type of rules back into "cn", "geolocation-!cn" and "category-ads-all" list + - name: Add `full`, `regexp` and `keyword` type of rules back into "cn", and "geolocation-!cn" list run: | [ -f "direct-reserve.txt" ] && cat direct-reserve.txt >> ./community/data/cn [ -f "proxy-reserve.txt" ] && cat proxy-reserve.txt >> ./community/data/geolocation-\!cn - [ -f "reject-reserve.txt" ] && cat reject-reserve.txt >> ./community/data/category-ads-all cp ./community/data/cn direct-list.txt cp ./community/data/geolocation-\!cn proxy-list.txt - cp ./community/data/category-ads-all reject-list.txt - awk '{print "0.0.0.0 " $0}' reject-list.txt > hosts - name: Create `google-cn`、`apple-cn`、`gfw` lists run: | curl -sSL $GOOGLE_DOMAINS_URL | perl -ne '/^server=\/([^\/]+)\// && print "full:$1\n"' > ./community/data/google-cn - curl -sSL $GOOGLE_DOMAINS_URL | perl -ne '/^server=\/([^\/]+)\// && print "full:$1\n"' > google-cn.txt curl -sSL $APPLE_DOMAINS_URL | perl -ne '/^server=\/([^\/]+)\// && print "full:$1\n"' > ./community/data/apple-cn - curl -sSL $APPLE_DOMAINS_URL | perl -ne '/^server=\/([^\/]+)\// && print "full:$1\n"' > apple-cn.txt cat ./gfwlist2dnsmasq/temp-gfwlist.txt | perl -ne '/^((?=^.{3,255})[a-zA-Z0-9][-_a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-_a-zA-Z0-9]{0,62})+)/ && print "$1\n"' >> ./community/data/gfw - cat ./community/data/gfw | sort --ignore-case -u > gfw.txt curl -sSL $WIN_SPY | grep "0.0.0.0" | awk '{print $2}' > ./community/data/win-spy - curl -sSL $WIN_SPY | grep "0.0.0.0" | awk '{print $2}' > win-spy.txt curl -sSL $WIN_UPDATE | grep "0.0.0.0" | awk '{print $2}' > ./community/data/win-update - curl -sSL $WIN_UPDATE | grep "0.0.0.0" | awk '{print $2}' > win-update.txt curl -sSL $WIN_EXTRA | grep "0.0.0.0" | awk '{print $2}' > ./community/data/win-extra - curl -sSL $WIN_EXTRA | grep "0.0.0.0" | awk '{print $2}' > win-extra.txt + + - name: merge 'ios_rule_script/SteamCN' + env: + SED: sed '/^\s*#/d' | sed 's/DOMAIN,//g' | sed 's/DOMAIN-SUFFIX,//g' | sed 's/DOMAIN-KEYWORD,/keyword:/g' + run: | + curl -sSL https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/SteamCN/SteamCN.list | ${{ env.SED }} > steamcn.txt + while read line; do grep -q "$line @cn" ./community/data/steam || sed -i "/$line/ s/$/ @cn/" ./community/data/steam; done < steamcn.txt + cat ./community/data/steam + + - name: Add data for `meta` + env: + SED: sed '/^\s*#/d' | sed 's/^PROCESS-NAME,//' | sed 's/DOMAIN,/full:/g' | sed 's/DOMAIN-SUFFIX,//g' | sed 's/DOMAIN-KEYWORD,/keyword:/g' | sed '/^\s*IP-CIDR/d' + run: | + curl -sSL https://raw.githubusercontent.com/xishang0128/rules/main/biliintl.list > ./community/data/biliintl + curl -sSL https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/OneDrive/OneDrive.list | ${{ env.SED }} > ./community/data/onedrive + echo "sharepoint.cn" >> ./community/data/onedrive + curl -sSL https://raw.githubusercontent.com/xishang0128/rules/main/sharepoint.list > ./community/data/sharepoint + curl -sSL https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/PrivateTracker/PrivateTracker.list | ${{ env.SED }} > ./community/data/tracker + curl -sSL https://gitea.com/XIU2/TrackersListCollection/raw/branch/master/all.txt | grep -i "\.[A-Z]" | grep -v tracker | sed 's/^.*\/\///g' | sed 's/:.*\/.*//g' >> ./community/data/tracker + curl -sSL https://github.com/blackmatrix7/ios_rule_script/raw/master/rule/Clash/BlockHttpDNS/BlockHttpDNS.list | ${{ env.SED }} > ./community/data/httpdns - name: Build geosite.dat file run: | cd custom || exit 1 + # echo sentry.io >> ../community/data/openai + echo ipleak.net >> ../community/data/geolocation-\!cn && echo browserleaks.org >> ../community/data/geolocation-\!cn go run ./ --datapath=../community/data - - name: Checkout CHIZI-0618/sing-geosite - uses: actions/checkout@v3 - with: - repository: CHIZI-0618/sing-geosite - path: sing-geosite + - name: Build geosite-lite.dat file + env: + NO_SKIP: true + SED: grep DOMAIN | grep -v "#" | sed 's/ - DOMAIN,/full:/g' | sed 's/ - DOMAIN-SUFFIX,//g' | sed 's/ - DOMAIN-KEYWORD,/keyword:/g' + run: | + cd community || exit 1 + mkdir -p data-lite + curl -sSL https://raw.githubusercontent.com/xishang0128/rules/main/biliintl.list > ./data-lite/biliintl + curl -sSL https://github.com/v2fly/domain-list-community/raw/master/data/ehentai > ./data-lite/ehentai + curl -sSL https://github.com/v2fly/domain-list-community/raw/master/data/private > ./data-lite/private - - name: Build geosite.db file + curl -sSL https://github.com/blackmatrix7/ios_rule_script/raw/master/rule/Clash/AbemaTV/AbemaTV.yaml | ${{ env.SED }} > ./data-lite/abema + curl -sSL https://github.com/blackmatrix7/ios_rule_script/raw/master/rule/Clash/Apple/Apple_Classical.yaml | ${{ env.SED }} > ./data-lite/apple + curl -sSL https://github.com/blackmatrix7/ios_rule_script/raw/master/rule/Clash/AppleMusic/AppleMusic.yaml | ${{ env.SED }} > ./data-lite/applemusic + curl -sSL https://github.com/blackmatrix7/ios_rule_script/raw/master/rule/Clash/BiliBili/BiliBili.yaml | ${{ env.SED }} > ./data-lite/bilibili + curl -sSL https://github.com/blackmatrix7/ios_rule_script/raw/master/rule/Clash/Bahamut/Bahamut.yaml | ${{ env.SED }} > ./data-lite/bahamut + + curl -sSL https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/China/China_Domain.yaml | grep - | sed "s/ - '+.//g" | sed "s/ - '/full:/g" | grep -v "#" | grep -v "acg.rip" | sed "s/'//g" > ./data-lite/cn + curl -sSL https://github.com/blackmatrix7/ios_rule_script/raw/master/rule/Clash/Cloudflare/Cloudflare.yaml | ${{ env.SED }} > ./data-lite/cloudflare + curl -sSL https://github.com/blackmatrix7/ios_rule_script/raw/master/rule/Clash/Google/Google.yaml | ${{ env.SED }} > ./data-lite/google + curl -sSL https://github.com/blackmatrix7/ios_rule_script/raw/master/rule/Clash/GitHub/GitHub.yaml | ${{ env.SED }} > ./data-lite/github + curl -sSL https://github.com/blackmatrix7/ios_rule_script/raw/master/rule/Clash/Microsoft/Microsoft.yaml | ${{ env.SED }} > ./data-lite/microsoft + curl -sSL https://github.com/blackmatrix7/ios_rule_script/raw/master/rule/Clash/Netflix/Netflix.yaml | ${{ env.SED }} > ./data-lite/netflix + curl -sSL https://github.com/blackmatrix7/ios_rule_script/raw/master/rule/Clash/OpenAI/OpenAI.yaml | ${{ env.SED }} > ./data-lite/openai + curl -sSL https://github.com/blackmatrix7/ios_rule_script/raw/master/rule/Clash/OneDrive/OneDrive.yaml | ${{ env.SED }} > ./data-lite/onedrive + curl -sSL https://github.com/blackmatrix7/ios_rule_script/raw/master/rule/Clash/Pixiv/Pixiv.yaml | ${{ env.SED }} > ./data-lite/pixiv + curl -sSL https://github.com/blackmatrix7/ios_rule_script/raw/master/rule/Clash/ProxyLite/ProxyLite.yaml | ${{ env.SED }} > ./data-lite/proxy + curl -sSL https://github.com/blackmatrix7/ios_rule_script/raw/master/rule/Clash/Spotify/Spotify.yaml | ${{ env.SED }} > ./data-lite/spotify + curl -sSL https://github.com/blackmatrix7/ios_rule_script/raw/master/rule/Clash/Telegram/Telegram.yaml | ${{ env.SED }} > ./data-lite/telegram + curl -sSL https://github.com/blackmatrix7/ios_rule_script/raw/master/rule/Clash/Twitter/Twitter.yaml | ${{ env.SED }} > ./data-lite/twitter + curl -sSL https://github.com/blackmatrix7/ios_rule_script/raw/master/rule/Clash/TikTok/TikTok.yaml | ${{ env.SED }} > ./data-lite/tiktok + curl -sSL https://github.com/blackmatrix7/ios_rule_script/raw/master/rule/Clash/YouTube/YouTube.yaml | ${{ env.SED }} > ./data-lite/youtube + curl -sSL https://github.com/blackmatrix7/ios_rule_script/blob/master/rule/Clash/GlobalMedia/GlobalMedia.yaml | ${{ env.SED }} > ./data-lite/proxymedia + + echo include:google >> ./data-lite/proxy && echo include:github >> ./data-lite/proxy && echo include:netflix >> ./data-lite/proxy + echo ipleak.net >> ./data-lite/proxy && echo browserleaks.org >> ./data-lite/proxy + echo "full:o33249.ingest.sentry.io" >> ./data-lite/openai + go run ./ --datapath=./data-lite --outputname geosite-lite.dat + + - name: Get geoip.dat relative files + run: | + wget -O geoip-lite.dat https://github.com/xishang0128/geoip/raw/release/geoip.dat + wget https://github.com/Loyalsoldier/geoip/raw/release/geoip.dat + + - name: Build db and metadb file env: NO_SKIP: true run: | - cd sing-geosite || exit 1 - cp ../custom/publish/geosite.dat ./ - go run -v . geosite.dat geosite.db + go install -trimpath -ldflags="-s -w -buildid=" github.com/metacubex/geo/cmd/geo@master + geo convert site -i v2ray -o sing -f geosite.db ./custom/publish/geosite.dat + geo convert site -i v2ray -o sing -f geosite-lite.db ./community/geosite-lite.dat + geo convert ip -i v2ray -o sing -f geoip.db ./geoip.dat + geo convert ip -i v2ray -o meta -f geoip.metadb ./geoip.dat + geo convert ip -i v2ray -o sing -f geoip-lite.db ./geoip-lite.dat + geo convert ip -i v2ray -o meta -f geoip-lite.metadb ./geoip-lite.dat - - name: Checkout SagerNet/sing-geoip - uses: actions/checkout@v3 - with: - repository: SagerNet/sing-geoip - path: sing-geoip - - - name: Build geoip.db file - env: - NO_SKIP: true - run: | - cd sing-geoip || exit 1 - sed -i 's/Dreamacro\/maxmind-geoip/Loyalsoldier\/geoip/g' main.go - go run -v . - - - name: Move and zip files and generate sha256 hash + - name: Move and zip files run: | mkdir -p ./publish/ + wget https://raw.githubusercontent.com/xishang0128/geoip/release/Country.mmdb -O ./publish/country-lite.mmdb + wget https://raw.githubusercontent.com/Loyalsoldier/geoip/release/Country.mmdb -O ./publish/country.mmdb + install -Dp ./geoip-lite.dat ./publish/ install -Dp ./geoip.dat ./publish/ - install -Dp ./geoip.dat.sha256sum ./publish/ install -Dp ./custom/publish/geosite.dat ./publish/ - install -Dp ./sing-geosite/geosite.db ./publish/ - install -Dp ./sing-geosite/geosite-v2fly.db ./publish/ - install -Dp ./sing-geoip/geoip.db ./publish/ - install -p {proxy,direct,reject}-tld-list.txt ./publish/ - install -p {proxy,direct,reject}-list.txt ./publish/ - install -p hosts ./publish/ - install -p {apple-cn,google-cn,gfw,win-spy,win-update,win-extra}.txt ./publish/ + install -Dp ./community/geosite-lite.dat ./publish/ + install -Dp ./geosite.db ./publish/ + install -Dp ./geosite-lite.db ./publish/ + install -Dp ./geoip.db ./publish/ + install -Dp ./geoip-lite.db ./publish/ + install -Dp ./geoip.metadb ./publish/ + install -Dp ./geoip-lite.metadb ./publish/ + curl -sSL https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/ChinaMax/ChinaMax_Domain.yaml | sed '/^\s*#/d' > ./publish/cn_domain.yaml + curl -sSL https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Proxy/Proxy_Domain.yaml | sed '/^\s*#/d' > ./publish/proxy.yaml + curl -sSL https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/ChinaMax/ChinaMax_Classical.yaml | grep DOMAIN | grep -v "#" | sed 's/ - DOMAIN,/full:/g' | sed 's/ - DOMAIN-SUFFIX,//g' | sed 's/ - DOMAIN-KEYWORD,/keyword:/g' > ./publish/cn.txt cd ./publish || exit 1 - zip rules.zip {proxy,direct,reject}-list.txt geoip.dat geosite.dat geosite.db geosite-v2fly.db geoip.db + sha256sum geoip-lite.dat > geoip-lite.dat.sha256sum + sha256sum geoip.dat > geoip.dat.sha256sum sha256sum geosite.dat > geosite.dat.sha256sum + sha256sum geosite-lite.dat > geosite-lite.dat.sha256sum sha256sum geosite.db > geosite.db.sha256sum + sha256sum geosite-lite.db > geosite-lite.db.sha256sum sha256sum geoip.db > geoip.db.sha256sum - sha256sum rules.zip > rules.zip.sha256sum + sha256sum geoip-lite.db > geoip-lite.db.sha256sum + sha256sum geoip.metadb > geoip.metadb.sha256sum + sha256sum geoip-lite.metadb > geoip-lite.metadb.sha256sum - - name: Release and upload assets - uses: softprops/action-gh-release@v0.1.6 + - name: Delete current release assets + uses: andreaswilli/delete-release-assets-action@v3.0.0 with: - name: ${{ env.RELEASE_NAME }} - tag_name: ${{ env.TAG_NAME }} - draft: false - prerelease: false - files: | - ./publish/* - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + github_token: ${{ secrets.GITHUB_TOKEN }} + tag: latest + deleteOnlyFromDrafts: false + + - name: Create and Upload Release + id: upload_release + uses: svenstaro/upload-release-action@v2 + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + release_name: Release ${{ env.BUILDTIME }} + tag: latest + file_glob: true + overwrite: true + file: ./publish/* - name: Git push assets to "release" branch run: | @@ -238,7 +275,7 @@ jobs: git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com" git checkout -b release git add . - git commit -m "${{ env.RELEASE_NAME }}" + git commit -m "Released on ${{ env.BUILDTIME }}" git remote add origin "https://${{ github.actor }}:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}" git push -f -u origin release diff --git a/README.md b/README.md index b7e60e5d..6e2332c7 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,80 @@ -# 简介 +## **下载地址**: -[**V2Ray**](https://github.com/v2fly/v2ray-core) 路由规则文件加强版,可代替 V2Ray 官方 `geoip.dat` 和 `geosite.dat`,兼容 [Shadowsocks-windows](https://github.com/shadowsocks/shadowsocks-windows)、[Xray-core](https://github.com/XTLS/Xray-core)、[Trojan-Go](https://github.com/p4gefau1t/trojan-go) 和 [leaf](https://github.com/eycorsican/leaf)。利用 GitHub Actions 北京时间每天早上 6 点自动构建,保证规则最新。 +### geoX +- **country.mmdb** + - [Github release](https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/country.mmdb) + - [JSdelivr](https://cdn.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/country.mmdb) + - [JSdelivr-CF](https://testingcf.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/country.mmdb) + +- **geoip.dat** + - [Github release](https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geoip.dat) + - [JSdelivr](https://cdn.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/geoip.dat) + - [JSdelivr-CF](https://testingcf.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/geoip.dat) -## 规则文件生成方式 +- **geoip.db** + - [Github release](https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geoip.db) + - [JSdelivr](https://cdn.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/geoip.db) + - [JSdelivr-CF](https://testingcf.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/geoip.db) -### geoip.dat +- **geoip.metadb** + - [Github release](https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geoip.metadb) + - [JSdelivr](https://cdn.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/geoip.metadb) + - [JSdelivr-CF](https://testingcf.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/geoip.metadb) -- 通过仓库 [@Loyalsoldier/geoip](https://github.com/Loyalsoldier/geoip) 生成 -- 其中全球 IP 地址(IPv4 和 IPv6)来源于 [MaxMind GeoLite2](https://dev.maxmind.com/geoip/geoip2/geolite2/),`CN`(中国大陆)类别下的 IPv4 地址融合了 [ipip.net](https://github.com/17mon/china_ip_list) 和 [@gaoyifan/china-operator-ip](https://github.com/gaoyifan/china-operator-ip),`CN`(中国大陆)类别下的 IPv6 地址融合了 [MaxMind GeoLite2](https://dev.maxmind.com/geoip/geoip2/geolite2/) 和 [@gaoyifan/china-operator-ip](https://github.com/gaoyifan/china-operator-ip) +- **country-lite.mmdb** + - [Github release](https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/country-lite.mmdb) + - [JSdelivr](https://cdn.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/country-lite.mmdb) + - [JSdelivr-CF](https://testingcf.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/country-lite.mmdb) + +- **geoip-lite.dat** + - [Github release](https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geoip-lite.dat) + - [JSdelivr](https://cdn.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/geoip-lite.dat) + - [JSdelivr-CF](https://testingcf.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/geoip-lite.dat) + +- **geoip-lite.db** + - [Github release](https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geoip-lite.db) + - [JSdelivr](https://cdn.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/geoip-lite.db) + - [JSdelivr-CF](https://testingcf.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/geoip-lite.db) + - +- **geoip-lite.mmdb** + - [Github release](https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geoip-lite.mmdb) + - [JSdelivr](https://cdn.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/geoip-lite.mmdb) + - [JSdelivr-CF](https://testingcf.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/geoip-lite.mmdb) + +- **geosite.dat** + - [Github release](https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geosite.dat) + - [JSdelivr](https://cdn.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/geosite.dat) + - [JSdelivr-CF](https://testingcf.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/geosite.dat) + +- **geosite.db** + - [Github release](https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geosite.db) + - [JSdelivr](https://cdn.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/geosite.db) + - [JSdelivr-CF](https://testingcf.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/geosite.db) + +- **geosite-lite.dat** + - [Github release](https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geosite-lite.dat) + - [JSdelivr](https://cdn.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/geosite-lite.dat) + - [JSdelivr-CF](https://testingcf.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/geosite-lite.dat) + +- **geosite-lite.db** + - [Github release](https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geosite-lite.db) + - [JSdelivr](https://cdn.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/geosite-lite.db) + - [JSdelivr-CF](https://testingcf.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/geosite-lite.db) + +### **rule-set** + - **cn_domain.yaml** + - [Github release](https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/cn_domain.yaml) + - [JSdelivr](https://cdn.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/cn_domain.yaml) + - [JSdelivr-CF](https://testingcf.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/cn_domain.yaml) + + - **proxy.yaml** + - [Github release](https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/proxy.yaml) + - [JSdelivr](https://cdn.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/proxy.yaml) + - [JSdelivr-CF](https://testingcf.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/proxy.yaml) + +## **country.mmdb,geoip.dat,geoip.db 内容** + +同 [Loyalsoldier/v2ray-rules-dat](https://github.com/Loyalsoldier/v2ray-rules-dat) - 新增类别(方便有特殊需求的用户使用): - `geoip:cloudflare` - `geoip:cloudfront` @@ -18,428 +85,83 @@ - `geoip:telegram` - `geoip:twitter` -> 希望定制 `geoip.dat` 文件?查看仓库 [@Loyalsoldier/geoip](https://github.com/Loyalsoldier/geoip)。 +## **country-lite.mmdb,geoip-lite.dat,geoip-lite.db 内容** -### geosite.dat +国家仅包含CN/JP,精简体积,替换一些类别 +- 新增类别(方便有特殊需求的用户使用): + - `geoip:cloudflare` + - `geoip:cloudfront` + - `geoip:facebook` + - `geoip:bilibili` + - `geoip:google` + - `geoip:netflix` + - `geoip:telegram` + - `geoip:twitter` + - `geoip:apple` -- 基于 [@v2fly/domain-list-community/data](https://github.com/v2fly/domain-list-community/tree/master/data) 数据,通过仓库 [@Loyalsoldier/domain-list-custom](https://github.com/Loyalsoldier/domain-list-custom) 生成 -- **加入大量中国大陆域名、Apple 域名和 Google 域名**: - - [@felixonmars/dnsmasq-china-list/accelerated-domains.china.conf](https://github.com/felixonmars/dnsmasq-china-list/blob/master/accelerated-domains.china.conf) 加入到 `geosite:cn` 类别中 - - [@felixonmars/dnsmasq-china-list/apple.china.conf](https://github.com/felixonmars/dnsmasq-china-list/blob/master/apple.china.conf) 加入到 `geosite:geolocation-!cn` 类别中(如希望本文件中的 Apple 域名直连,请参考下面 [geosite 的 Routing 配置方式](https://github.com/Loyalsoldier/v2ray-rules-dat#geositedat-1)) - - [@felixonmars/dnsmasq-china-list/google.china.conf](https://github.com/felixonmars/dnsmasq-china-list/blob/master/google.china.conf) 加入到 `geosite:geolocation-!cn` 类别中(如希望本文件中的 Google 域名直连,请参考下面 [geosite 的 Routing 配置方式](https://github.com/Loyalsoldier/v2ray-rules-dat#geositedat-1)) -- **加入 GFWList 域名**: - - 基于 [@gfwlist/gfwlist](https://github.com/gfwlist/gfwlist) 数据,通过仓库 [@cokebar/gfwlist2dnsmasq](https://github.com/cokebar/gfwlist2dnsmasq) 生成 - - 加入到 `geosite:gfw` 类别中,供习惯于 PAC 模式并希望使用 [GFWList](https://github.com/gfwlist/gfwlist) 的用户使用 - - 同时加入到 `geosite:geolocation-!cn` 类别中 -- **加入 Greatfire Analyzer 检测到的屏蔽域名**: - - 通过仓库 [@Loyalsoldier/cn-blocked-domain](https://github.com/Loyalsoldier/cn-blocked-domain) 获取 [Greatfire Analyzer](https://zh.greatfire.org/analyzer) 检测到的在中国大陆被屏蔽的域名 - - 加入到 `geosite:greatfire` 类别中,可与上面的 `geosite:gfw` 类别同时使用,以达到域名黑名单的效果 - - 同时加入到 `geosite:geolocation-!cn` 类别中 -- **加入 EasyList 和 EasyListChina 广告域名**:通过 [@AdblockPlus/EasylistChina+Easylist.txt](https://easylist-downloads.adblockplus.org/easylistchina+easylist.txt) 获取并加入到 `geosite:category-ads-all` 类别中 -- **加入 AdGuard DNS Filter 广告域名**:通过 [@AdGuard/DNS-filter](https://kb.adguard.com/en/general/adguard-ad-filters#dns-filter) 获取并加入到 `geosite:category-ads-all` 类别中 -- **加入 Peter Lowe 广告和隐私跟踪域名**:通过 [@PeterLowe/adservers](https://pgl.yoyo.org/adservers) 获取并加入到 `geosite:category-ads-all` 类别中 -- **加入 Dan Pollock 广告域名**:通过 [@DanPollock/hosts](https://someonewhocares.org/hosts) 获取并加入到 `geosite:category-ads-all` 类别中 -- **加入 Windows 操作系统相关的系统升级和隐私跟踪域名**: - - 基于 [@crazy-max/WindowsSpyBlocker](https://github.com/crazy-max/WindowsSpyBlocker/tree/master/data/hosts) 数据 - - [**慎用**] Windows 操作系统使用的隐私跟踪域名 [@crazy-max/WindowsSpyBlocker/hosts/spy.txt](https://github.com/crazy-max/WindowsSpyBlocker/blob/master/data/hosts/spy.txt) 加入到 `geosite:win-spy` 类别中 - - [**慎用**] Windows 操作系统使用的系统升级域名 [@crazy-max/WindowsSpyBlocker/hosts/update.txt](https://github.com/crazy-max/WindowsSpyBlocker/blob/master/data/hosts/update.txt) 加入到 `geosite:win-update` 类别中 - - [**慎用**] Windows 操作系统附加的隐私跟踪域名 [@crazy-max/WindowsSpyBlocker/hosts/extra.txt](https://github.com/crazy-max/WindowsSpyBlocker/blob/master/data/hosts/extra.txt) 加入到 `geosite:win-extra` 类别中 - - 关于这三个类别的使用方式,请参考下面 [geosite 的 Routing 配置方式](https://github.com/Loyalsoldier/v2ray-rules-dat#geositedat-1) -- **可添加自定义直连、代理和广告域名**:由于上游域名列表更新缓慢或缺失某些域名,所以引入**需要添加的域名**列表。[`hidden 分支`](https://github.com/Loyalsoldier/v2ray-rules-dat/tree/hidden)里的三个文件 `direct.txt`、`proxy.txt` 和 `reject.txt`,分别存放自定义的需要添加的直连、代理、广告域名,最终分别加入到 `geosite:cn`、`geosite:geolocation-!cn` 和 `geosite:category-ads-all` 类别中 -- **可移除自定义直连、代理和广告域名**:由于上游域名列表存在需要被移除的域名,所以引入**需要移除的域名**列表。[`hidden 分支`](https://github.com/Loyalsoldier/v2ray-rules-dat/tree/hidden)里的三个文件 `direct-need-to-remove.txt`、`proxy-need-to-remove.txt` 和 `reject-need-to-remove.txt`,分别存放自定义的需要从 `direct-list`(直连域名列表)、`proxy-list`(代理域名列表)和 `reject-list`(广告域名列表) 移除的域名 +## **geosite.dat,geosite.db 内容** -## 规则文件下载及使用方式 +用法同 [Loyalsoldier/v2ray-rules-dat](https://github.com/Loyalsoldier/v2ray-rules-dat) + - `geosite:category-ads-all` 仅使用域名作为广告拦截用途作用有限,因此不作额外域名添加 + - `geosite:cn` 源替换为 [ios_rule_script/ChinaMax_Domain](https://github.com/blackmatrix7/ios_rule_script/tree/master/rule/Clash/ChinaMax) + - `geosite:onedrive` 合并 [ios_rule_script/OneDrive](https://github.com/blackmatrix7/ios_rule_script/tree/master/rule/Clash/OneDrive) + - `geosite:steam@cn` 合并 [ios_rule_script/SteamCN](https://github.com/blackmatrix7/ios_rule_script/tree/master/rule/Clash/SteamCN) 的内数据 + - 新增类别 + - `geosite:biliintl` 来源 [biliintl](https://raw.githubusercontent.com/xishang0128/rules/main/biliintl.list) + - `geosite:tracker` 来源 [TrackersList](https://trackerslist.com/#/zh)以及[blackmatrix7 +/ +ios_rule_script](https://github.com/blackmatrix7/ios_rule_script/tree/master/rule/Clash/PrivateTracker) -**下载地址**: -> 如果无法访问域名 `raw.githubusercontent.com`,可以使用第二个地址(`cdn.jsdelivr.net`),但是内容更新会有 12 小时的延迟。 +## **geosite-lite.dat,geosite-lite.db 内容** -- **geoip.dat**: - - [https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geoip.dat](https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geoip.dat) - - [https://cdn.jsdelivr.net/gh/Loyalsoldier/v2ray-rules-dat@release/geoip.dat](https://cdn.jsdelivr.net/gh/Loyalsoldier/v2ray-rules-dat@release/geoip.dat) -- **geosite.dat**: - - [https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geosite.dat](https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geosite.dat) - - [https://cdn.jsdelivr.net/gh/Loyalsoldier/v2ray-rules-dat@release/geosite.dat](https://cdn.jsdelivr.net/gh/Loyalsoldier/v2ray-rules-dat@release/geosite.dat) -- **直连域名列表 direct-list.txt**: - - [https://raw.githubusercontent.com/Loyalsoldier/v2ray-rules-dat/release/direct-list.txt](https://raw.githubusercontent.com/Loyalsoldier/v2ray-rules-dat/release/direct-list.txt) - - [https://cdn.jsdelivr.net/gh/Loyalsoldier/v2ray-rules-dat@release/direct-list.txt](https://cdn.jsdelivr.net/gh/Loyalsoldier/v2ray-rules-dat@release/direct-list.txt) -- **代理域名列表 proxy-list.txt**: - - [https://raw.githubusercontent.com/Loyalsoldier/v2ray-rules-dat/release/proxy-list.txt](https://raw.githubusercontent.com/Loyalsoldier/v2ray-rules-dat/release/proxy-list.txt) - - [https://cdn.jsdelivr.net/gh/Loyalsoldier/v2ray-rules-dat@release/proxy-list.txt](https://cdn.jsdelivr.net/gh/Loyalsoldier/v2ray-rules-dat@release/proxy-list.txt) -- **广告域名列表 reject-list.txt**: - - [https://raw.githubusercontent.com/Loyalsoldier/v2ray-rules-dat/release/reject-list.txt](https://raw.githubusercontent.com/Loyalsoldier/v2ray-rules-dat/release/reject-list.txt) - - [https://cdn.jsdelivr.net/gh/Loyalsoldier/v2ray-rules-dat@release/reject-list.txt](https://cdn.jsdelivr.net/gh/Loyalsoldier/v2ray-rules-dat@release/reject-list.txt) -- **Apple 在中国大陆可直连的域名列表 apple-cn.txt**: - - [https://raw.githubusercontent.com/Loyalsoldier/v2ray-rules-dat/release/apple-cn.txt](https://raw.githubusercontent.com/Loyalsoldier/v2ray-rules-dat/release/apple-cn.txt) - - [https://cdn.jsdelivr.net/gh/Loyalsoldier/v2ray-rules-dat@release/apple-cn.txt](https://cdn.jsdelivr.net/gh/Loyalsoldier/v2ray-rules-dat@release/apple-cn.txt) -- **Google 在中国大陆可直连的域名列表 google-cn.txt**: - - [https://raw.githubusercontent.com/Loyalsoldier/v2ray-rules-dat/release/google-cn.txt](https://raw.githubusercontent.com/Loyalsoldier/v2ray-rules-dat/release/google-cn.txt) - - [https://cdn.jsdelivr.net/gh/Loyalsoldier/v2ray-rules-dat@release/google-cn.txt](https://cdn.jsdelivr.net/gh/Loyalsoldier/v2ray-rules-dat@release/google-cn.txt) -- **GFWList 域名列表 gfw.txt**: - - [https://raw.githubusercontent.com/Loyalsoldier/v2ray-rules-dat/release/gfw.txt](https://raw.githubusercontent.com/Loyalsoldier/v2ray-rules-dat/release/gfw.txt) - - [https://cdn.jsdelivr.net/gh/Loyalsoldier/v2ray-rules-dat@release/gfw.txt](https://cdn.jsdelivr.net/gh/Loyalsoldier/v2ray-rules-dat@release/gfw.txt) -- **Greatfire 域名列表 greatfire.txt**: - - [https://raw.githubusercontent.com/Loyalsoldier/v2ray-rules-dat/release/greatfire.txt](https://raw.githubusercontent.com/Loyalsoldier/v2ray-rules-dat/release/greatfire.txt) - - [https://cdn.jsdelivr.net/gh/Loyalsoldier/v2ray-rules-dat@release/greatfire.txt](https://cdn.jsdelivr.net/gh/Loyalsoldier/v2ray-rules-dat@release/greatfire.txt) -- **Windows 操作系统使用的隐私跟踪域名列表 win-spy.txt**: - - [https://raw.githubusercontent.com/Loyalsoldier/v2ray-rules-dat/release/win-spy.txt](https://raw.githubusercontent.com/Loyalsoldier/v2ray-rules-dat/release/win-spy.txt) - - [https://cdn.jsdelivr.net/gh/Loyalsoldier/v2ray-rules-dat@release/win-spy.txt](https://cdn.jsdelivr.net/gh/Loyalsoldier/v2ray-rules-dat@release/win-spy.txt) -- **Windows 操作系统使用的系统升级域名列表 win-update.txt**: - - [https://raw.githubusercontent.com/Loyalsoldier/v2ray-rules-dat/release/win-update.txt](https://raw.githubusercontent.com/Loyalsoldier/v2ray-rules-dat/release/win-update.txt) - - [https://cdn.jsdelivr.net/gh/Loyalsoldier/v2ray-rules-dat@release/win-update.txt](https://cdn.jsdelivr.net/gh/Loyalsoldier/v2ray-rules-dat@release/win-update.txt) -- **Windows 操作系统使用的附加隐私跟踪域名列表 win-extra.txt**: - - [https://raw.githubusercontent.com/Loyalsoldier/v2ray-rules-dat/release/win-extra.txt](https://raw.githubusercontent.com/Loyalsoldier/v2ray-rules-dat/release/win-extra.txt) - - [https://cdn.jsdelivr.net/gh/Loyalsoldier/v2ray-rules-dat@release/win-extra.txt](https://cdn.jsdelivr.net/gh/Loyalsoldier/v2ray-rules-dat@release/win-extra.txt) +仅包含常用集合,cn为精简集合,可能不全 +集合内容均来自 https://github.com/blackmatrix7/ios_rule_script/tree/master/rule/Clash -**使用方式**: +集合包含 `abema / apple / applemusic / bilibili / biliintl / bahamut / cn / ehentai / google / github / microsoft / netflix / openai / onedrive / pixiv / proxy / spotify / telegram / twitter / tiktok / youtube / proxymedia` -1. 安装适用于自己操作系统的客户端 -2. 下载本项目的 `geoip.dat` 和 `geosite.dat` -3. 把下载下来的 `geoip.dat` 和 `geosite.dat` 放入到客户端的规则文件目录,替换掉原来的 `geoip.dat` 和 `geosite.dat` -4. 如果使用的是 V2Ray v4 版本客户端,配置可参考下面 👇👇👇 -## 参考配置(仅适用于 V2Ray v4 版本) +## **示例** +```yaml +rule-providers: + cn: + behavior: domain + interval: 86400 + path: ./provider/rule-set/cn_domain.yaml + type: http + url: "https://testingcf.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/cn_domain.yaml" -### geoip.dat - -跟 V2Ray 官方 `geoip.dat` 配置方式相同。 - -**Routing 配置方式**: - -```json -"routing": { - "rules": [ - { - "type": "field", - "outboundTag": "Direct", - "ip": [ - "223.5.5.5/32", - "119.29.29.29/32", - "180.76.76.76/32", - "114.114.114.114/32", - "geoip:cn", - "geoip:private" - ] - }, - { - "type": "field", - "outboundTag": "Proxy", - "ip": [ - "1.1.1.1/32", - "1.0.0.1/32", - "8.8.8.8/32", - "8.8.4.4/32", - "geoip:us", - "geoip:ca", - "geoip:telegram" - ] - } - ] -} +rules: + - RULE-SET,cn,DIRECT + - GEOSITE,category-ads-all,REJECT + - GEOSITE,private,DIRECT + - GEOSITE,youtube,PROXY + - GEOSITE,google,PROXY + - GEOSITE,twitter,PROXY + - GEOSITE,pixiv,PROXY + - GEOSITE,category-scholar-!cn,PROXY + - GEOSITE,biliintl,PROXY + - GEOSITE,onedrive,DIRECT + - GEOSITE,microsoft@cn,DIRECT + - GEOSITE,apple-cn,DIRECT + - GEOSITE,steam@cn,DIRECT + - GEOSITE,category-games@cn,DIRECT + - GEOSITE,geolocation-!cn,PROXY + - GEOSITE,cn,DIRECT + + #GEOIP规则 + - GEOIP,private,DIRECT,no-resolve + - GEOIP,telegram,PROXY + - GEOIP,JP,PROXY + - GEOIP,CN,DIRECT + - DST-PORT,80/8080/443/8443,PROXY + - MATCH,DIRECT ``` -### geosite.dat +## 辅助工具 +https://github.com/MetaCubeX/geo -跟 V2Ray 官方 `geosite.dat` 配置方式相同。相比官方 `geosite.dat` 文件,本项目特有的类别: - -- `geosite:apple-cn`:包含 [@felixonmars/dnsmasq-china-list/apple.china.conf](https://github.com/felixonmars/dnsmasq-china-list/blob/master/apple.china.conf) 文件里的域名,供希望 Apple 域名直连(不走代理)的用户使用。 -- `geosite:google-cn`:包含 [@felixonmars/dnsmasq-china-list/google.china.conf](https://github.com/felixonmars/dnsmasq-china-list/blob/master/google.china.conf) 文件里的域名,供希望 Google 域名直连(不走代理)的用户使用。 -- [**慎用**]`geosite:win-spy`:包含 [@crazy-max/WindowsSpyBlocker/hosts/spy.txt](https://github.com/crazy-max/WindowsSpyBlocker/blob/master/data/hosts/spy.txt) 文件里的域名,供希望屏蔽 Windows 操作系统隐私跟踪域名的用户使用。 -- [**慎用**]`geosite:win-update`:包含 [@crazy-max/WindowsSpyBlocker/hosts/update.txt](https://github.com/crazy-max/WindowsSpyBlocker/blob/master/data/hosts/update.txt) 文件里的域名,供希望屏蔽 Windows 操作系统自动升级的用户使用。 -- [**慎用**]`geosite:win-extra`:包含 [@crazy-max/WindowsSpyBlocker/hosts/extra.txt](https://github.com/crazy-max/WindowsSpyBlocker/blob/master/data/hosts/extra.txt) 文件里的域名,供希望屏蔽 Windows 操作系统附加隐私跟踪域名的用户使用。 - -> ⚠️ 注意:在 Routing 配置中,类别越靠前(上),优先级越高,所以 `geosite:apple-cn` 和 `geosite:google-cn` 要放置在 `geosite:geolocation-!cn` 前(上)面才能生效。 - -#### 高级用法 - -v2fly/domain-list-community 项目 [data](https://github.com/v2fly/domain-list-community/tree/master/data) 目录中某些列表里的规则会被标记诸如 `@cn` 的 attribute(如下所示),意为该域名在中国大陆有接入点,可直连。 - -``` -steampowered.com.8686c.com @cn -steamstatic.com.8686c.com @cn -``` - -对于玩 Steam 国区游戏,想要直连的用户,可以设置类别 `geosite:steam@cn` 为直连,意为将 [steam](https://github.com/v2fly/domain-list-community/blob/master/data/steam) 列表内所有被标记了 `@cn` attribute 的规则(域名)设置为直连。同理,由于 [category-games](https://github.com/v2fly/domain-list-community/blob/master/data/category-games) 列表包含了 `steam`、`ea`、`blizzard`、`epicgames` 和 `nintendo` 等常见的游戏厂商。设置类别 `geosite:category-games@cn` 为直连,即可节省大量服务器流量。 - -> ⚠️ 注意:在 Routing 配置中,类别越靠前(上),优先级越高,所以 `geosite:category-games@cn` 等所有带有 `@cn` attribute 的规则都要放置在 `geosite:geolocation-!cn` 前(上)面才能生效。 -> -> `category-games` 列表内的规则(域名)可能会有疏漏,请留意规则命中情况。如发现遗漏,欢迎到项目 v2fly/domain-list-community 提 [issue](https://github.com/v2fly/domain-list-community/issues) 反馈。 - -#### 配置参考下面 👇👇👇 - -**白名单模式 Routing 配置方式**: - -```json -"routing": { - "rules": [ - { - "type": "field", - "outboundTag": "Reject", - "domain": ["geosite:category-ads-all"] - }, - { - "type": "field", - "outboundTag": "Direct", - "domain": [ - "geosite:private", - "geosite:apple-cn", - "geosite:google-cn", - "geosite:tld-cn", - "geosite:category-games@cn" - ] - }, - { - "type": "field", - "outboundTag": "Proxy", - "domain": ["geosite:geolocation-!cn"] - }, - { - "type": "field", - "outboundTag": "Direct", - "domain": ["geosite:cn"] - }, - { - "type": "field", - "outboundTag": "Proxy", - "network": "tcp,udp" - } - ] -} -``` - -**黑名单模式 Routing 配置方式:** - -```json -"routing": { - "rules": [ - { - "type": "field", - "outboundTag": "Reject", - "domain": ["geosite:category-ads-all"] - }, - { - "type": "field", - "outboundTag": "Proxy", - "domain": ["geosite:gfw", "geosite:greatfire"] - }, - { - "type": "field", - "outboundTag": "Proxy", - "ip": ["geoip:telegram"] - }, - { - "type": "field", - "outboundTag": "Direct", - "network": "tcp,udp" - } - ] -} -``` - -**DNS 配置方式**: - -```json -"dns": { - "hosts": { - "dns.google": "8.8.8.8", - "dns.pub": "119.29.29.29", - "dns.alidns.com": "223.5.5.5", - "geosite:category-ads-all": "127.0.0.1" - }, - "servers": [ - { - "address": "https://1.1.1.1/dns-query", - "domains": ["geosite:geolocation-!cn"], - "expectIPs": ["geoip:!cn"] - }, - "8.8.8.8", - { - "address": "114.114.114.114", - "port": 53, - "domains": ["geosite:cn", "geosite:category-games@cn"], - "expectIPs": ["geoip:cn"], - "skipFallback": true - }, - { - "address": "localhost", - "skipFallback": true - } - ] -} -``` - -### 自用 V2Ray v4 版本客户端配置(不适用于 V2Ray v5 及更新的版本) - -注意事项: - -- 由于下面客户端配置的 DNS 使用了 `skipFallback` 选项,所以必须使用 v4.37.2 或更新版本的 [V2Ray](https://github.com/v2fly/v2ray-core/releases) -- 下面客户端配置使 V2Ray 在本机开启 SOCKS 代理(监听 1080 端口)和 HTTP 代理(监听 2080 端口),允许局域网内其他设备连接并使用代理 -- BT 流量统统直连(实测依然会有部分 BT 流量走代理,如果服务商禁止 BT 下载,请不要为下载软件设置代理) -- 最后,不命中任何路由规则的请求和流量,统统走代理 -- `outbounds` 里的第一个大括号内的配置,即为 V2Ray 代理服务的配置。请根据自身需求进行修改,并参照 V2Ray 官网配置文档中的 [配置 > Outbounds > OutboundObject](https://www.v2fly.org/config/outbounds.html#outboundobject) 部分进行补全 - -```jsonc -{ - "log": { - "loglevel": "warning" - }, - "dns": { - "hosts": { - "dns.google": "8.8.8.8", - "dns.pub": "119.29.29.29", - "dns.alidns.com": "223.5.5.5", - "geosite:category-ads-all": "127.0.0.1" - }, - "servers": [ - { - "address": "https://1.1.1.1/dns-query", - "domains": ["geosite:geolocation-!cn", "geosite:google@cn"], - "expectIPs": ["geoip:!cn"] - }, - "8.8.8.8", - { - "address": "114.114.114.114", - "port": 53, - "domains": [ - "geosite:cn", - "geosite:icloud", - "geosite:category-games@cn" - ], - "expectIPs": ["geoip:cn"], - "skipFallback": true - }, - { - "address": "localhost", - "skipFallback": true - } - ] - }, - "inbounds": [ - { - "protocol": "socks", - "listen": "0.0.0.0", - "port": 1080, - "tag": "Socks-In", - "settings": { - "ip": "127.0.0.1", - "udp": true, - "auth": "noauth" - }, - "sniffing": { - "enabled": true, - "destOverride": ["http", "tls"] - } - }, - { - "protocol": "http", - "listen": "0.0.0.0", - "port": 2080, - "tag": "Http-In", - "sniffing": { - "enabled": true, - "destOverride": ["http", "tls"] - } - } - ], - "outbounds": [ - { - //下面这行,协议类别要改为socks、shadowsocks、vmess或vless等(记得删除本行文字说明) - "protocol": "协议类别", - "settings": {}, - //下面这行,tag的值对应Routing里的outboundTag,这里为Proxy(记得删除本行文字说明) - "tag": "Proxy", - "streamSettings": {}, - "mux": {} - }, - { - "protocol": "dns", - "tag": "Dns-Out" - }, - { - "protocol": "freedom", - "tag": "Direct", - "settings": { - "domainStrategy": "UseIPv4" - } - }, - { - "protocol": "blackhole", - "tag": "Reject", - "settings": { - "response": { - "type": "http" - } - } - } - ], - "routing": { - "domainStrategy": "IPIfNonMatch", - "domainMatcher": "mph", - "rules": [ - { - "type": "field", - "outboundTag": "Direct", - "protocol": ["bittorrent"] - }, - { - "type": "field", - "outboundTag": "Dns-Out", - "inboundTag": ["Socks-In", "Http-In"], - "network": "udp", - "port": 53 - }, - { - "type": "field", - "outboundTag": "Reject", - "domain": ["geosite:category-ads-all"] - }, - { - "type": "field", - "outboundTag": "Proxy", - "domain": [ - "full:www.icloud.com", - "domain:icloud-content.com", - "geosite:google" - ] - }, - { - "type": "field", - "outboundTag": "Direct", - "domain": [ - "geosite:tld-cn", - "geosite:icloud", - "geosite:category-games@cn" - ] - }, - { - "type": "field", - "outboundTag": "Proxy", - "domain": ["geosite:geolocation-!cn"] - }, - { - "type": "field", - "outboundTag": "Direct", - "domain": ["geosite:cn", "geosite:private"] - }, - { - "type": "field", - "outboundTag": "Direct", - "ip": ["geoip:cn", "geoip:private"] - }, - { - "type": "field", - "outboundTag": "Proxy", - "network": "tcp,udp" - } - ] - } -} -``` - -## 使用本项目的项目 - -- [@Loyalsoldier/clash-rules](https://github.com/Loyalsoldier/clash-rules) -- [@Loyalsoldier/surge-rules](https://github.com/Loyalsoldier/surge-rules) +🗺 An easy way to manage all your Geo resources. ## 致谢 @@ -455,7 +177,4 @@ steamstatic.com.8686c.com @cn - [@PeterLowe/adservers](https://pgl.yoyo.org/adservers) - [@DanPollock/hosts](https://someonewhocares.org/hosts) - [@crazy-max/WindowsSpyBlocker](https://github.com/crazy-max/WindowsSpyBlocker) - -## 项目 Star 数增长趋势 - -[![Stargazers over time](https://starchart.cc/Loyalsoldier/v2ray-rules-dat.svg)](https://starchart.cc/Loyalsoldier/v2ray-rules-dat) +- [@blackmatrix7/ios_rule_script](https://github.com/blackmatrix7/ios_rule_script)