用于绕过某些域的 VPN 的批处理脚本
Batch script to bypass VPN for certain domains
我使用 VPN 服务已有一段时间了,但有些网站 (twitch.tv) 不允许我通过 VPN 连接到它们。所以我在 Windows 上查找了如何绕过这些域的 VPN,并找到了静态路由。
我想做的是在启动时使用批处理文件 运行 自动路由一组给定的所有 IP 地址
域。
- 独立于默认网关地址
- 独立于正在使用的网络适配器
- 域更改 ip 地址后无需调整
- 处理整套域 ip 地址(nslookup?)
这是我通过反复试验得出的结论。
@echo off
FOR /F "tokens=3" %%F in (
'route print ^|findstr "\<0.0.0.0\>"'
) Do if not defined DefaultGateway set "DefaultGateway=%%F"
FOR /F "tokens=2" %%F in ('nslookup twitch.tv') DO (
SET var1=%%F
)
route -p add %var1% mask 255.255.255.255 %DefaultGateway%
FOR /F "skip=5 tokens=1" %%F IN ('nslookup twitch.tv') DO (
route -p add %%F mask 255.255.255.255 %DefaultGateway%
)
我想你可以看出这是我根据在 SO 上找到的片段创建的一些可怕的弗兰肯斯坦代码。它现在有效,但我怎样才能让它更优雅呢?第二个和第三个FOR循环可以合二为一吗?我该怎么做才能在添加新域时将其添加到列表中而不是再添加 2 个 FOR 循环?
我一直在使用这个批处理文件:
set domains=twitch.tv google.com some-domain.com
for /f "tokens=3" %%a in ('route print ^| findstr "\<0.0.0.0\>"') do (
for %%d in (%domains%) do (
for /f "tokens=1,2 skip=4" %%b in ('nslookup %%d 2^>nul') do (
if "%%c"=="" (route add %%b %%a) else (route add %%c %%a)
)
)
goto done
)
:done
它获取第一个 0.0.0.0
路由的网关并使用它来添加指定域的路由,它们的 IP 地址通过 nslookup
获得。
并且它被安排为 运行 每当通过 Task Scheduler -> Microsoft -> Windows -> Ras
与触发器 On an event / Application / RasClient / 20225
建立连接时。
我使用 VPN 服务已有一段时间了,但有些网站 (twitch.tv) 不允许我通过 VPN 连接到它们。所以我在 Windows 上查找了如何绕过这些域的 VPN,并找到了静态路由。
我想做的是在启动时使用批处理文件 运行 自动路由一组给定的所有 IP 地址 域。
- 独立于默认网关地址
- 独立于正在使用的网络适配器
- 域更改 ip 地址后无需调整
- 处理整套域 ip 地址(nslookup?)
这是我通过反复试验得出的结论。
@echo off
FOR /F "tokens=3" %%F in (
'route print ^|findstr "\<0.0.0.0\>"'
) Do if not defined DefaultGateway set "DefaultGateway=%%F"
FOR /F "tokens=2" %%F in ('nslookup twitch.tv') DO (
SET var1=%%F
)
route -p add %var1% mask 255.255.255.255 %DefaultGateway%
FOR /F "skip=5 tokens=1" %%F IN ('nslookup twitch.tv') DO (
route -p add %%F mask 255.255.255.255 %DefaultGateway%
)
我想你可以看出这是我根据在 SO 上找到的片段创建的一些可怕的弗兰肯斯坦代码。它现在有效,但我怎样才能让它更优雅呢?第二个和第三个FOR循环可以合二为一吗?我该怎么做才能在添加新域时将其添加到列表中而不是再添加 2 个 FOR 循环?
我一直在使用这个批处理文件:
set domains=twitch.tv google.com some-domain.com
for /f "tokens=3" %%a in ('route print ^| findstr "\<0.0.0.0\>"') do (
for %%d in (%domains%) do (
for /f "tokens=1,2 skip=4" %%b in ('nslookup %%d 2^>nul') do (
if "%%c"=="" (route add %%b %%a) else (route add %%c %%a)
)
)
goto done
)
:done
它获取第一个 0.0.0.0
路由的网关并使用它来添加指定域的路由,它们的 IP 地址通过 nslookup
获得。
并且它被安排为 运行 每当通过 Task Scheduler -> Microsoft -> Windows -> Ras
与触发器 On an event / Application / RasClient / 20225
建立连接时。