抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

最近因为需要安装各种生信软件,用github比较多,每次登github都要翻墙很是麻烦。索性花了点时间研究了一下,下面分别列举三种情况下的解决github网站登录的问题。

知其然知其所以然,首先我们需要明白为什么github在国内经常无法登录。我们在浏览器地址栏输入网址以后,域名服务器会对输入的域名进行解析(DNS解析),解析成为计算机之间可以识别的ip地址。然而因为一些众所周知的因素,很多国外的网站在国内是无法直接访问的,其中一个限制方法就是DNS污染,将域名服务器中缓存的域名指向不正确的ip地址。这种限制手段就和你公司电脑会限制你浏览一些网站是一样的。

因此要浏览这些被DNS污染的网站,我们需要跳过受污染的局域域名服务器,常用的方法就是代理服务器和VPN(VPN就是一个典型的正向代理),通过更远的服务器转发我们的http请求,在经过未污染的域名服务器解析之后,返回我们想要的网页内容。当然,如果仅仅只是用翻墙的方法的话,本篇博客这里可以结束了,下面通过三种情况分别讲一下如何通过修改host等其他方法访问github。

1. Windows系统修改host

首先注意一点,如果你正在用翻墙软件或者VPN等,需要先将所有代理都关闭(防止全局代理导致设置的host失效)。

host文件是一个没有扩展名的系统文件,可以用notepad++打开编辑,其本质就是就是将访问的域名和ip地址建立关联。当浏览器中输入网址时,系统会首先从host文件中找到域名对应的ip地址,如果没有找到才会发送给域名解析器。所以我们只需要找到github相关域名对应的正确的ip地址,即可正常访问github(其他受DNS污染的网址同理)。

打开网址 https://www.ipaddress.com/

主要查找以下github相关域名的ip地址,有多少个记录多少个

1
2
3
4
5
6
github.com		# 主站
nodeload.github.com
api.github.com # API
codeload.github.com
github.global.ssl.Fastly.net # git clone速度相关
assets-cdn.github.com # 静态资源相关

windows系统中host文件位置

C:\WINDOWS\System32\drivers\etc\hosts

notepad++打开host文件,最后加入如下查到的ip地址,保存

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# domain: github.com
# 更新时间 2023年2月21日

140.82.113.3 github.com
140.82.114.10 nodeload.github.com
140.82.112.6 api.github.com
140.82.114.10 codeload.github.com

151.101.1.194 github.global.ssl.Fastly.net
151.101.65.194 github.global.ssl.Fastly.net
151.101.129.194 github.global.ssl.Fastly.net
151.101.193.194 github.global.ssl.Fastly.net

185.199.108.153 assets-cdn.github.com
185.199.110.153 assets-cdn.github.com
185.199.111.153 assets-cdn.github.com

最后一步打开cmd命令行,刷新缓存就可以正常登录github了

ipconfig /flushdns

2. Linux系统修改host

方法步骤同上,需要注意linux系统修改host需要root权限!

linux系统host文件路径

/etc/hosts

3. 无root权限的linux系统访问github

有些时候我们会在集群中安装软件,这个时候是没有root权限的,无法通过修改host的方法直接访问,因此也无法用git clone的方法克隆仓库(会报错,错误代码443)。

今天碰到这个问题,找贺师兄聊了聊才发现可以找镜像资源曲线救国……突然打开了新世界的大门hhhh

真的解决了困扰我很久的疑惑,按照往常我只能翻墙下载源代码,再解压后传回服务器,一来一回校园网的速度要传很久很久……

具体做法是先下载油猴(Tampermonkey)插件,这是个非常有名的脚本管理器,下载安装方式就不说了,网上一大把,自己搜下github官方也非常简单。Tampermonkey/tampermonkey

然后是安装github增强加速插件,插件地址 https://greasyfork.org/zh-CN/scripts/412245-github-%E5%A2%9E%E5%BC%BA-%E9%AB%98%E9%80%9F%E4%B8%8B%E8%BD%BD

我因为安装过了,这里就只演示一下:

安装之后再回到原来github页面,点击code按钮,就可以看到原来只有一个git clone地址,现在有好几个地址给出来了,在集群里随便git clone选择其他地址,就可以在成功下载啦。

这个javascript脚本感兴趣的话可以在油猴中看看,本质上也是个CDN加速和代理,只不过用的都是公益资源,速度也相当不错了。

4. 写在最后

前面两个方法改host并不是一劳永逸的,隔一段时间github的ip地址就会更新(不定,可能几天,可能几周)。这种纯手动更新的方法仍然是不够智能不够优雅的,有能力的话以后写一个自动更新的脚本(间隔一段时间自动查找相关github域名的ip地址,自动更新到host文件中)。

目前为止,还是代理最为省心。

欢迎小伙伴们留言评论~