Ghips:自动获取 GitHub 最快 IP,一键刷新 hosts,说说源码中的干货

发布时间 2023-07-12 14:35:49作者: zhangdaiscott

Ghips 是一个仅 601 KB 的开源软件:

项目:github.com/aardio/Ghips
镜像:gitcode.net/aardio/Ghips

支持 Win7,Win8,Win10,Win11 等操作系统。
软件通过 GitHub 官方 API 获取所有 IP,并自动找到最快 IP。
image
刷新间隔时间设为非 0 则定时获取最快 IP 并自动刷新域名解析。

更新 IP 后首次访问 GitHub 可能会略慢,稍等就快了。更新 IP 后首次访问 GitHub 可能会略慢,稍等就快了。

程序需要以管理权限运行才能修改 hosts。
建议右键点 Ghips 托盘图标,在弹出菜单中勾选「开机启动」。
image
这样开机就会静默获取管理权限启动,不会再弹出警告。

访问速度快的 IP 经常变更,单击 Ghips 托盘图标能快速刷新 IP 测速结果。访问速度快的 IP 经常变更,单击 Ghips 托盘图标能快速刷新 IP 测速结果。

Ghips 使用 aardio 开发,早于 2019 年 就在 aardio 中发布了源代码(现已分离为 Ghips 项目):
image

类似 GitHub 这样的 HTTP API,在 aardio 中一般不需要特别封装,直接就可以转换为一般的函数对象,关键代码:

import web.rest.jsonClient;

var http = web.rest.jsonClient();
var github = http.api("https://api.github.com/")	
var metaInfo = github.meta.get();

metaInfo.git 就是获取的 IP 列表。
修改 hosts 文件的文件夺权这些比较麻烦, 关键源码如下:

fsys.hosts.ownCacls();
fsys.hosts.update(githubIps)

另外,修改 hosts 需要管理权限。
如果将软件设为在开机时静默获取管理权限 —— 就不用每次都去点警告对话框了。
实现开机自动获取管理权限的关键源码如下:

import sys.runAsTask;
var sysTask = sys.runAsTask("Ghips","GitHub 网速优化工具")
sysTask.register("/tray");

添加定时器自动刷新 IP 的关键源码如下:

winform.setInterval( 
	function(){
		if(!winform.plusUpdateIps.disabled){
			winform.plusUpdateIps.oncommand(,,true);
		}
	},interval * 5000 
)