python 实现 v2ray 配置自动更新
python 实现 v2ray 配置自动更新
一个简单的python 下载文件+win10 计划任务的组合
本文使用了 Loyalsoldier 的 v2ray-rules-dat github 仓库中提供的geoip.dat以及geosite.dat作为自己 v2rayN 软件的配置,每天中午 12:00 通过仓库中包含的自动更新地址下载更新配置文件
python 下载配置文件
使用了 python3 的 request 库进行文件下载,代码如下
"""
放在v2rayN.exe所在文件夹运行
"""
import requests
import os
# 设置使用系统代理进行下载
proxies = {'http': "socks5://127.0.0.1:10808",
'https': "socks5://127.0.0.1:10808"}
# geoip.dat和geosite.dat的下载地址
geoip_url = 'https://cdn.jsdelivr.net/gh/Loyalsoldier/v2ray-rules-dat@release/geoip.dat'
geosite_url = 'https://cdn.jsdelivr.net/gh/Loyalsoldier/v2ray-rules-dat@release/geosite.dat'
# requests请求头设定
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36 QIHU 360SE'
}
# 下载更新geoip.dat
try:
geoip = requests.get(geoip_url, headers=headers, proxies=proxies)
print("geoip.dat下载完成")
# 确认更新完后删除原文件创建写入新文件
path = "./geoip.dat"
if os.path.exists(path):
os.remove(path)
geoip_dat = open("geoip.dat", 'wb')
geoip_dat.write(geoip.content)
geoip_dat.close()
print("geoip.dat更新完成")
except Exception as e:
print("geoip.dat更新失败\n" + str(e))
# 下载更新geosite.dat
try:
geosite = requests.get(geosite_url, headers=headers, proxies=proxies)
# geosite = requests.get(geosite_url)
print("geosite.dat下载完成")
# 确认更新完后删除原文件创建写入新文件
path = "./geosite.dat"
if os.path.exists(path):
os.remove(path)
geosite_dat = open("geosite.dat", 'wb')
geosite_dat.write(geosite.content)
geosite_dat.close()
print("geosite.dat更新完成")
except Exception as e:
print("geosite.dat更新失败\n"+str(e))
win10 计划任务每天更新
通过 win10 提供的计划任务即可对每天进行更新
通过 win+R 打开运行界面,然后输入 taskschd.msc 打开计划任务窗口

操作 ->创建任务

触发器 ->新建 ->每天 ->设置时间 ->确定
也可以再添加一次几分种后的任务来检验自动执行是否成功。

操作 ->新建 ->设置程序为执行.py 文件的 python.exe 的绝对地址 ->参数为所执行的.py 文件名 ->参数地址为.py 文件的绝对地址 ->确定

(另有说法如下,如果尝试上面的有问题可以试试如下设置)
【程序或脚本】文本框中填的是 Python 编译器的名称,一般就是 python.exe,【起始于】文本框中填的是 Python 编译器的目录,上图中假设你的 Python 编译器的完整路径是“C:\Python27\python.exe”,【添加参数】文本框中填的是你的 Python 程序的完整路径,这里假设在 C 盘的 Users 文件夹下面有一个叫做 code.py 的文件。如果你的 Python 程序包含命令行参数,将其添加到 Python 程序的完整路径之后即可。
然后就实现每天自动更新了,当然在 v2rayN 里面也需要重启文件才会应用到自动更新后的配置,但对个人来说这个没什么必要所以就没有继续研究了。(其实整个更新都没啥必要,写着试试而已)
