Compare commits

...

33 Commits

Author SHA1 Message Date
GitHub Action
b555c5f501 定期更新数据并生成 gfw.pac 2025-06-19 00:38:18 +00:00
GitHub Action
c326290d19 定期更新数据并生成 gfw.pac 2025-06-12 00:37:29 +00:00
GitHub Action
a0492f01dd 定期更新数据并生成 gfw.pac 2025-06-05 00:37:44 +00:00
GitHub Action
1ef7a4092d 定期更新数据并生成 gfw.pac 2025-05-29 00:37:04 +00:00
GitHub Action
d5a92c3623 定期更新数据并生成 gfw.pac 2025-05-22 00:36:49 +00:00
GitHub Action
0d3a81c98a 定期更新数据并生成 gfw.pac 2025-05-15 00:36:01 +00:00
GitHub Action
48b691f648 定期更新数据并生成 gfw.pac 2025-05-08 00:36:59 +00:00
GitHub Action
b08e659514 定期更新数据并生成 gfw.pac 2025-05-01 00:40:47 +00:00
GitHub Action
1a511c81ef 定期更新数据并生成 gfw.pac 2025-04-24 00:35:46 +00:00
GitHub Action
e084116209 定期更新数据并生成 gfw.pac 2025-04-17 00:35:28 +00:00
GitHub Action
64f75179f5 自动生成 gfw.pac: 增加gr.global.aa-rt.sharepoint.com到onedrive直连域名 2025-04-10 05:23:58 +00:00
zhiyi
948a002d73 增加gr.global.aa-rt.sharepoint.com到onedrive直连域名 2025-04-10 13:23:46 +08:00
GitHub Action
046401ec20 定期更新数据并生成 gfw.pac 2025-04-10 00:34:51 +00:00
GitHub Action
9cf413c43c 定期更新数据并生成 gfw.pac 2025-04-03 00:34:34 +00:00
GitHub Action
601b549b31 定期更新数据并生成 gfw.pac 2025-03-27 00:34:35 +00:00
GitHub Action
6b65baa275 定期更新数据并生成 gfw.pac 2025-03-20 00:33:42 +00:00
GitHub Action
8c52b77a03 定期更新数据并生成 gfw.pac 2025-03-13 00:34:11 +00:00
GitHub Action
02f24366f5 定期更新数据并生成 gfw.pac 2025-03-06 00:33:48 +00:00
GitHub Action
419485dde2 定期更新数据并生成 gfw.pac 2025-02-27 00:33:11 +00:00
GitHub Action
2a1c178d3a 定期更新数据并生成 gfw.pac 2025-02-20 00:32:57 +00:00
GitHub Action
ab03a97789 定期更新数据并生成 gfw.pac 2025-02-13 00:32:19 +00:00
GitHub Action
ac4fb7b19b 定期更新数据并生成 gfw.pac 2025-02-06 00:32:21 +00:00
GitHub Action
f810a66b0c 定期更新数据并生成 gfw.pac 2025-01-30 00:31:19 +00:00
GitHub Action
e6129a6dd4 定期更新数据并生成 gfw.pac 2025-01-23 00:31:48 +00:00
GitHub Action
f1df8acaba 定期更新数据并生成 gfw.pac 2025-01-16 00:31:43 +00:00
GitHub Action
7add95746e 定期更新数据并生成 gfw.pac 2025-01-09 00:32:39 +00:00
GitHub Action
9622bd4456 定期更新数据并生成 gfw.pac 2025-01-02 00:32:02 +00:00
GitHub Action
3949a407b0 定期更新数据并生成 gfw.pac 2024-12-26 00:31:59 +00:00
GitHub Action
8b51175a34 定期更新数据并生成 gfw.pac 2024-12-19 00:34:09 +00:00
GitHub Action
bdc53dd5ca 定期更新数据并生成 gfw.pac 2024-12-12 00:35:00 +00:00
zhiyi
f3d1085c2d 改改workflow 2024-12-05 17:59:43 +08:00
GitHub Action
932d427c01 自动生成 gfw.pac: 简单压缩,生成的文件中相邻的前缀相同前缀字符用波浪线替代,最终文件缩减又110k,目前116k。未经完全测试。 2024-12-05 09:44:21 +00:00
zhiyi
d554c444cc 简单压缩,生成的文件中相邻的前缀相同前缀字符用波浪线替代,最终文件缩减又110k,目前116k。未经完全测试。 2024-12-05 17:44:00 +08:00
6 changed files with 3556 additions and 2728 deletions

View File

@@ -11,7 +11,6 @@ on:
- 'direct-domains.txt'
- 'proxy-domains.txt'
- 'cidrs-cn.txt'
- '!gfw.pac'
workflow_dispatch:
jobs:
@@ -21,13 +20,25 @@ jobs:
- name: Checkout repository
uses: actions/checkout@v4
- name: Check if gfw.pac is in the commit
id: check-file
run: |
if git diff --name-only HEAD^ HEAD | grep -q 'gfw\.pac'; then
echo "file-exists=true" >> $GITHUB_ENV
else
echo "file-exists=false" >> $GITHUB_ENV
fi
- name: Download the latest cn.txt
if: env.file-exists == 'false'
run: curl -L https://raw.githubusercontent.com/Loyalsoldier/geoip/release/text/cn.txt -o cidrs-cn.txt
- name: Run gfw-pac.py script
if: env.file-exists == 'false'
run: ./gfw-pac.py -f gfw.pac -p "PROXY 127.0.0.1:3128" --proxy-domains=proxy-domains.txt --direct-domains=direct-domains.txt --localtld-domains=local-tlds.txt --ip-file=cidrs-cn.txt
- name: Commit and push changes
if: env.file-exists == 'false'
run: |
last_commit_message=$(git log -1 --pretty=%B)
commit_message=$([[ "${{ github.event_name }}" == "schedule" ]] && echo "定期更新数据并生成 gfw.pac" || echo "自动生成 gfw.pac: $last_commit_message")
@@ -38,6 +49,7 @@ jobs:
git push
- name: Trigger Auto-Release
if: env.file-exists == 'false'
uses: benc-uk/workflow-dispatch@v1
with:
workflow: Auto Generate Release

View File

File diff suppressed because it is too large Load Diff

View File

@@ -132,6 +132,7 @@ ocsp.digicert.cn
ocsp.dcocsp.cn
api.onedrive.com
storage.live.com
gr.global.aa-rt.sharepoint.com
skyapi.live.net
roaming.officeapps.live.com
blob.core.windows.net

View File

@@ -33,6 +33,13 @@ def convert_cidr(cidr):
network_address = network
return hex(int(network_address))[2:]
def longest_common_prefix(str1, str2):
min_length = min(len(str1), len(str2))
for i in range(min_length):
if str1[i] != str2[i]:
return str1[:i]
return str1[:min_length]
def generate_cnip_cidrs():
""" 从文件中读取CIDR地址 """
args = parse_args()
@@ -42,6 +49,22 @@ def generate_cnip_cidrs():
for cidr in cidrs:
converted_cidrs.append(convert_cidr(cidr))
converted_cidrs.sort(key=lambda x: (len(x), x), reverse=False)
converted_cidrs_clone = converted_cidrs[:]
lastFullCidr = ''
for i in range(len(converted_cidrs)):
prevCidr = converted_cidrs_clone[i-1] if i > 0 else ''
currentCidr = converted_cidrs[i]
if len(prevCidr) != len(currentCidr):
lastFullCidr = currentCidr
continue
prefix = longest_common_prefix(lastFullCidr, currentCidr)
if len(prefix) < len(lastFullCidr)//1.2:
lastFullCidr = currentCidr
continue
converted_cidrs[i] = '~' + currentCidr[len(prefix):]
cidr_list = ','.join(converted_cidrs)
return f"'{cidr_list}'.split(',')"

10
gfw.pac
View File

File diff suppressed because one or more lines are too long

View File

@@ -163,8 +163,14 @@ var radixTree = new RadixTree();
(function () {
debug('开始生成 Radix Tree', 'PAC文件载入开始');
lastFullPrefix = ''
for (let i=0; i<cidrs.length; i++) {
var prefix = cidrs[i];
if (prefix.substring(0, 1) !== '~') {
lastFullPrefix = prefix
} else {
prefix = lastFullPrefix.substring(0, lastFullPrefix.length-prefix.length+1) + prefix.substring(1)
}
var bits = (parseInt(prefix, 16)).toString(2);
radixTree.insert(bits);
}