最近因为需要安装各种生信软件,用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 | github.com # 主站 |
windows系统中host文件位置
C:\WINDOWS\System32\drivers\etc\hosts
notepad++打开host文件,最后加入如下查到的ip地址,保存
1 | # domain: 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文件中)。
目前为止,还是代理最为省心。