自动更新VV配置文件
All lives end,all hearts are broken.Caring is not an advantage!
生命终有尽头,人心终要破碎,太在意可不是什么优点!
– –《神探夏洛克》
分享和记录一下在Github看到的一个每天更新VV的geoip和geosite文件的Repository,同时有几个老哥在issues里面分享了一些自动更新的实现方式,没错,我很懒不想每次都手动更新
我做了个收集和整理:
原理:
- 开机自动运行 VBS 脚本
- VBS脚本调用ps1脚本
- ps1脚本实现更新
实现:
a. 新建vbs文件:start.vbs并把该文件放到开机启动目录(win+r 输入
shell:startup
打开)set ws = WScript.CreateObject("WScript.Shell") ws.Run "powershell D:\v2rayN-Core\updateIPAndsite\update.ps1", 0
b. 新建ps1脚本:update.ps1 ,可以把该文件放到vv的目录/update/下(会自动新建一个log.log日志文件),需要修改vv的目录
#打印日志到文本 function Print($Str){ "$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss') $Str" | out-file -filepath D:\v2rayN-Core\updateIPAndsite\log.log -append -width 200 } # 关闭占用指定端口进程 function Kill-Port-Process($port) { $foundProcesses = netstat -ano | findstr :$port $activePortPattern = ":$port\s.+LISTENING\s+\d+$" $pidNumberPattern = "\d+$" IF ($foundProcesses | Select-String -Pattern $activePortPattern -Quiet) { $pidMatches = $foundProcesses | Select-String -Pattern $activePortPattern $firstMatch = $pidMatches.Matches.Get(0).Value $pidNumber = [regex]::match($firstMatch, $pidNumberPattern).Value # 两种实现都可用,二选一即可 taskkill /pid $pidNumber /f # Stop-Process -Force -Id $pidNumber } } # 启动科学工具(以 v2rayN 为栗) function Start-Kexue-Tool { Print "begin process..." # 科学工具路径 $SOFTWARE_PATH="D:\v2rayN-Core\v2rayN.exe" # 科学工具的代理端口 $SOCKS_PORT=10808 $HTTP_PORT=10809 # 确保端口没被占用 Kill-Port-Process $SOCKS_PORT Kill-Port-Process $HTTP_PORT Start-Sleep -Milliseconds 1000 # 启动科学工具 Start-Process -FilePath $SOFTWARE_PATH Start-Sleep -Milliseconds 1000 } # 重启科学工具 function Restart-Kexue-Tool { Print "stop process..." # 停止 v2rayN 进程 Get-Process v2rayN | Stop-Process Start-Sleep -Milliseconds 1000 # 启动科学工具 Start-Kexue-Tool } # 更新 get_dat 文件 function Update-Geo-File { Print "update geoip.dat and geosite.dat ..." # 资源链接 $GEOIP_URL="https://github.com/Loyalsoldier/v2ray-rules-dat/raw/release/geoip.dat" $GEOSITE_URL="https://github.com/Loyalsoldier/v2ray-rules-dat/raw/release/geosite.dat" # 资源路径 $GEOIP_PATH="D:\v2rayN-Core\geoip.dat" $GEOSITE_PATH="D:\v2rayN-Core\geosite.dat" # 备份路径 $GEOIP_BACKUP=$GEOIP_PATH+".bak" $GEOSITE_BACKUP=$GEOSITE_PATH+".bak" # 备份 Copy-Item -Path $GEOIP_PATH -Destination $GEOIP_BACKUP -Force Copy-Item -Path $GEOSITE_PATH -Destination $GEOSITE_BACKUP -Force try { # 覆盖 Invoke-WebRequest -Uri $GEOIP_URL -OutFile $GEOIP_PATH Invoke-WebRequest -Uri $GEOSITE_URL -OutFile $GEOSITE_PATH } catch { # 还原 Move-Item -Force $GEOIP_BACKUP $GEOIP_PATH Move-Item -Force $GEOSITE_BACKUP $GEOSITE_PATH exit 1 } } Print "begin" # 启动 Restart-Kexue-Tool # 更新 Update-Geo-File # 重启 Restart-Kexue-Tool Print "stop"
更多信息直接查看原issue吧!
- 原文作者:阿林
- 原文链接:https://itachi.xyz/post/auto-update-geoip-site.html
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。