如何用代码检测Github被墙?

如果你的程序,需要访问github.com来克隆一些流行的开源项目的代码,但……你懂得的原因,经常无法访问,对于无法访问的用户,可以使用http的代理。但并不是每个用户都是无法访问的,如果所有人都用代理,效率就太低了。如何实时检测?

如果你正好使用js或ts,可参考或直接使用这个项目:

https://github.com/gucong3000/in-gfw/

https://www.npmjs.com/package/in-gfw

可惜它代码太老,在新版本的Node.js+ts的环境中难以正常运行。

在魔当(LM Downloader中) 项目中参考上面的项目,重写了这个功能。你可以用到你的项目中,能较好地兼容ts的编译环境。

以下是源码:

https://gitee.com/lmdown/lm-downloader-desktop/blob/master/src/main/util/GFWCheckUtil.ts

使用方法很简单,这个函数需要两个参数,第一个是可能被墙的国外网站,第二个是可在国内访问的网站,如果第一个被block,就会返回true:

const githubBlocked = await GFWCheckUtil.asyncCheck('https://github.com/', 'https://gitee.com/')

当然还可以检查其他网站,如:

// 判断google是否被block
const googleBlocked = await GFWCheckUtil.asyncCheck('https://www.google.com/', 'https://www.google.cn/')

// 判断huggingface是否被block,而替代者hf-mirror.com是否正常
const huggingfaceBlocked = await GFWCheckUtil.asyncCheck('https://huggingface.co/', 'https://hf-mirror.com/')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值