GitHub 是全球最大的代碼開源平台,重要性不言而喻。
但由於某些特殊原因,可能導致了DNS解析緩慢,容易出現tcp的連接超時情況,很多人發現自己訪問 GitHub 時斷時續。
到底是什么原因導致了這個問題,網上眾說紛紜,我還是小白,也不必去深究,只要解決這個問題來滿足自己的訪問需求就可以了。
下面就說兩種方法吧:
1. 改 hosts
我們在瀏覽器輸入 GitHub 的網址時,會向 DNS 服務器發送一個請求,獲取到 GitHub 網站所在的服務器 IP 地址,從而進行訪問。
就像你是一名快遞員,在送快遞前要先找中間人詢問收件人的地址。而 DNS 就是這個告訴你目標地址的中間人,如果 DNS 告訴了你錯誤的地址、或者請求被攔截、再或者 DNS 掛了,都會導致你無法訪問網站。
那有什么辦法不經過 DNS,就獲取到網址對應的 IP 么?
答案就是修改 hosts
文件。當用戶在瀏覽器中輸入網址時,系統會首先自動從 hosts 文件中尋找對應的 IP 地址,一旦找到,系統會立即打開對應網頁,如果沒有找到,系統才會再將網址提交 DNS 域名解析服務器進行 IP 地址的解析。
(關於DNS地址解析協議的詳解,前面的隨筆中寫的非常清楚了,不太懂的朋友可以去看看。快速鏈接:https://www.cnblogs.com/eudaimonia/p/15983188.html)
因此,想要訪問 GitHub,我們可以先通過 IP 查詢工具 來獲取當前 GitHub 網站的真實地址,再修改本地 hosts 文件,將該地址和 GitHub 網址關聯。
先找到 hosts 文件的位置,不同操作系統,hosts 文件的存儲位置也不同:
- Windows 系統:
C:\Windows\System32\drivers\etc\hosts
- Linux 系統:
/etc/hosts
- Mac(蘋果電腦)系統:
/etc/hosts
- Android(安卓)系統:
/system/etc/hosts
- iPhone(iOS)系統:
/etc/hosts
打開 hosts 文件,添加一行,將 xx 替換為你查詢到的解析地址即可:
xx.xx.xx.xx www.github.com
但這種方式比較麻煩,而且查詢出來的 IP 也未必支持國內的訪問,所以下面再推薦另外一種更簡單的方式!
如果出現hosts寫權限失敗,或者修改后也無法訪問的情況,請跳轉文末有結局方案
2.github520
GitHub520 就是一個幫助大家訪問 GitHub 的項目,本質也是通過修改 hosts 來實現的。
該項目的作者為大家提供了一份完整的 hosts 列表,無需大家自己查詢可用 IP,非常地貼心,而且每天都會更新!
通過修改本地hosts文件中的內容,讓訪問github達到加速的目的。操作很簡單,復制下面的內容到設備的hosts文件中去。
# GitHub520 Host Start
185.199.108.154 github.githubassets.com
140.82.113.22 central.github.com
185.199.108.133 desktop.githubusercontent.com
185.199.108.153 assets-cdn.github.com
185.199.108.133 camo.githubusercontent.com
185.199.108.133 github.map.fastly.net
199.232.69.194 github.global.ssl.fastly.net
140.82.113.3 gist.github.com
185.199.108.153 github.io
140.82.114.4 github.com
140.82.112.6 api.github.com
185.199.108.133 raw.githubusercontent.com
185.199.108.133 user-images.githubusercontent.com
185.199.108.133 favicons.githubusercontent.com
185.199.108.133 avatars5.githubusercontent.com
185.199.108.133 avatars4.githubusercontent.com
185.199.108.133 avatars3.githubusercontent.com
185.199.108.133 avatars2.githubusercontent.com
185.199.108.133 avatars1.githubusercontent.com
185.199.108.133 avatars0.githubusercontent.com
185.199.108.133 avatars.githubusercontent.com
140.82.113.9 codeload.github.com
52.217.88.28 github-cloud.s3.amazonaws.com
52.216.238.99 github-com.s3.amazonaws.com
52.216.26.252 github-production-release-asset-2e65be.s3.amazonaws.com
52.217.101.68 github-production-user-asset-6210df.s3.amazonaws.com
52.217.48.84 github-production-repository-file-5c1aeb.s3.amazonaws.com
185.199.108.153 githubstatus.com
64.71.168.201 github.community
185.199.108.133 media.githubusercontent.com
# Update time: 2022-03-13 T12:24:16+08:00
# Star me GitHub url: https://github.com/521xueweihan/GitHub520
# GitHub520 Host End
上面內容會自動定時更新,保證最新有效。
下面再說兩種方法都可能會出現的問題:
1.hosts文件無法修改
找到hosts文件后右鍵安全屬性,高級設置,配置權限為允許修改和寫入即可。
**注:修改完畢hosts文件后,出於安全考慮,還是請大家將權限再次關閉,以免出現惡意定位的ip偽裝攻擊。
2.激活hosts文件重新生效
大部分情況下是直接生效,如未生效可嘗試下面的辦法,刷新 DNS:
Windows:在 CMD 窗口輸入:ipconfig /flushdns (win+r調出搜索台,鍵入cmd后回車即可進入控制台)
Linux 命令:sudo rcnscd restart
Mac 命令:sudo killall -HUP mDNSResponder
Tips: 上述方法無效可以嘗試重啟機器。
**3.13日晚更新:使用上述方法依然會有時候無法訪問,原因應該是github的ip自動更新了,然而dns的解析仍然停留在老的ip地址,所以會出現訪問困難。
最好用的解決辦法:
每次訪問困難時,調cmd做一次dnsflush:ipconfig /flushdns,然后再利用這個url:http://www.github.com.ipaddress.com/ 查出github新的ip地址,然后使用ip訪問。
這個方法一次大概可以維持一小時,基本可以滿足需求,一小時后再使用的話,再flush一次dns,訪問新的ip就可以了