# GitHub520
<p align="center">
<a href="https://hellogithub.com/repository/d05ff820bf36470581c02cda5cbd17ea" target="_blank"><img src="https://api.hellogithub.com/v1/widgets/recommend.svg?rid=d05ff820bf36470581c02cda5cbd17ea&claim_uid=8MKvZoxaWt" alt="Featured|HelloGitHub" style="width: 250px; height: 54px;" width="250" height="54" /></a><br>
😘 讓你“愛”上 GitHub,解決訪問時圖裂、載入慢的問題。
</p>
> 伺服器已續費到 2024.12 共花了:1500+💰 [點選掃碼贊助](https://raw.hellogithub.com/code.png),感謝🙏
## 一、介紹
對 GitHub 說"愛"太難了:訪問慢、圖片載入不出來。
**本專案無需安裝任何程式,僅需 5 分鐘。**
透過修改本地 hosts 檔案,試圖解決:
- GitHub 訪問速度慢的問題
- GitHub 專案中的圖片顯示不出的問題
讓你"愛"上 GitHub。
*注:* 本專案還處於測試階段,僅在本機測試透過,如有問題歡迎提 [issues](https://github.com/521xueweihan/GitHub520/issues/new)
## 二、使用方法
下面的地址無需訪問 GitHub 即可獲取到最新的 hosts 內容:
- 檔案:`https://raw.hellogithub.com/hosts`
- JSON:`https://raw.hellogithub.com/hosts.json`
### 2.1 手動方式
#### 2.1.1 複製下面的內容
```bash
# GitHub520 Host Start
140.82.114.25 alive.github.com
140.82.114.5 api.github.com
185.199.110.153 assets-cdn.github.com
185.199.110.133 avatars.githubusercontent.com
185.199.108.133 avatars0.githubusercontent.com
185.199.108.133 avatars1.githubusercontent.com
185.199.108.133 avatars2.githubusercontent.com
185.199.110.133 avatars3.githubusercontent.com
185.199.110.133 avatars4.githubusercontent.com
185.199.110.133 avatars5.githubusercontent.com
185.199.108.133 camo.githubusercontent.com
140.82.114.22 central.github.com
185.199.108.133 cloud.githubusercontent.com
140.82.113.10 codeload.github.com
140.82.114.22 collector.github.com
185.199.110.133 desktop.githubusercontent.com
185.199.110.133 favicons.githubusercontent.com
140.82.112.3 gist.github.com
54.231.161.249 github-cloud.s3.amazonaws.com
52.217.121.193 github-com.s3.amazonaws.com
52.217.224.161 github-production-release-asset-2e65be.s3.amazonaws.com
52.216.94.3 github-production-repository-file-5c1aeb.s3.amazonaws.com
3.5.31.16 github-production-user-asset-6210df.s3.amazonaws.com
192.0.66.2 github.blog
140.82.112.3 github.com
140.82.112.18 github.community
185.199.111.154 github.githubassets.com
151.101.193.194 github.global.ssl.fastly.net
185.199.110.153 github.io
185.199.108.133 github.map.fastly.net
185.199.110.153 githubstatus.com
140.82.112.25 live.github.com
185.199.108.133 media.githubusercontent.com
185.199.110.133 objects.githubusercontent.com
13.107.42.16 pipelines.actions.githubusercontent.com
185.199.110.133 raw.githubusercontent.com
185.199.108.133 user-images.githubusercontent.com
140.82.114.22 education.github.com
185.199.110.133 private-user-images.githubusercontent.com
# Update time: 2024-12-08T12:07:08+08:00
# Update url: https://raw.hellogithub.com/hosts
# Star me: https://github.com/521xueweihan/GitHub520
# GitHub520 Host End
```
該內容會自動定時更新, 資料更新時間:2024-12-08T12:07:08+08:00
#### 2.1.2 修改 hosts 檔案
hosts 檔案在每個系統的位置不一,詳情如下:
- Windows 系統:`C:\Windows\System32\drivers\etc\hosts`
- Linux 系統:`/etc/hosts`
- Mac(蘋果電腦)系統:`/etc/hosts`
- Android(安卓)系統:`/system/etc/hosts`
- iPhone(iOS)系統:`/etc/hosts`
修改方法,把第一步的內容複製到文字末尾:
1. Windows 使用記事本。
2. Linux、Mac 使用 Root 許可權:`sudo vi /etc/hosts`。
3. iPhone、iPad 須越獄、Android 必須要 root。
#### 2.1.3 啟用生效
大部分情況下是直接生效,如未生效可嘗試下面的辦法,重新整理 DNS:
1. Windows:在 CMD 視窗輸入:`ipconfig /flushdns`
2. Linux 命令:`sudo nscd restart`,如報錯則須安裝:`sudo apt install nscd` 或 `sudo /etc/init.d/nscd restart`
3. Mac 命令:`sudo killall -HUP mDNSResponder`
**Tips:** 上述方法無效可以嘗試重啟機器。
### 2.2 自動方式(SwitchHosts)
**Tip**:推薦 [SwitchHosts](https://github.com/oldj/SwitchHosts) 工具管理 hosts
以 SwitchHosts 為例,看一下怎麼使用的,配置參考下面:
- Hosts 型別: `Remote`
- Hosts 標題: 隨意
- URL: `https://raw.hellogithub.com/hosts`
- 自動重新整理: 最好選 `1 小時`
如圖:
![](./img/switch-hosts.png)
這樣每次 hosts 有更新都能及時進行更新,免去手動更新。
### 2.3 一行命令
#### Windows
使用命令需要安裝[git bash](https://gitforwindows.org/)
複製以下命令儲存到本地命名為**fetch_github_hosts**
```shell
_hosts=$(mktemp /tmp/hostsXXX)
hosts=/c/Windows/System32/drivers/etc/hosts
remote=https://raw.hellogithub.com/hosts
reg='/# GitHub520 Host Start/,/# Github520 Host End/d'
sed "$reg" $hosts > "$_hosts"
curl "$remote" >> "$_hosts"
cat "$_hosts" > "$hosts"
rm "$_hosts"
```
在**CMD**中執行以下命令,執行前需要替換**git-bash.exe**和**fetch_github_hosts**為你本地的路徑,注意前者為windows路徑格式後者為shell路徑格式
`"C:\Program Files\Git\git-bash.exe" -c "/c/Users/XXX/fetch_github_hosts"`
可以將上述命令新增到windows的task schedular(任務計劃程式)中以定時執行
#### GNU(Ubuntu/CentOS/Fedora)
`sudo sh -c 'sed -i "/# GitHub520 Host Start/Q" /etc/hosts && curl https://raw.hellogithub.com/hosts >> /etc/hosts'`
#### BSD/macOS
`sudo sed -i "" "/# GitHub520 Host Start/,/# Github520 Host End/d" /etc/hosts && curl https://raw.hellogithub.com/hosts | sudo tee -a /etc/hosts`
將上面的命令新增到 cron,可定時執行。使用前確保 GitHub520 內容在該檔案最後部分。
**在 Docker 中執行,若遇到 `Device or resource busy` 錯誤,可使用以下命令執行**
`cp /etc/hosts ~/hosts.new && sed -i "/# GitHub520 Host Start/Q" ~/hosts.new && curl https://raw.hellogithub.com/hosts >> ~/hosts.new && cp -f ~/hosts.new /etc/hosts`
### 2.4 AdGuard 使用者(自動方式)
在 **過濾器>DNS 封鎖清單>新增阻止列表>新增一個自定義列表**,配置如下:
- 名稱:隨意
- URL:`https://raw.hellogithub.com/hosts`(和上面 SwitchHosts 使用的一樣)
如圖:
![](./img/AdGuard-rules.png)
更新間隔在 **設定 > 常規設定 > 過濾器更新間隔(設定一小時一次即可)**,記得勾選上 **使用過濾器和 Hosts 檔案以攔截指定域名**
![](./img/AdGuard-rules2.png)
**Tip**:不要新增在 **DNS 允許清單** 內,只能新增在 **DNS 封鎖清單** 才管用。 另外,AdGuard for Mac、AdGuard for Windows、AdGuard for Android、AdGuard for IOS 等等 **AdGuard 家族軟體** 新增方法均類似。
## 三、效果對比
之前的樣子:
![](./img/old.png)
修改完 hosts 的樣子:
![](./img/new.png)
## TODO
- [x] 定時自動更新 hosts 內容
- [x] hosts 內容無變動不會更新
- [x] 尋到最優 IP 解析結果
## 宣告
<a rel="license" href="https://creativecommons.org/licenses/by-nc-nd/4.0/deed.zh"><img alt="知識共享許可協議" style="border-width: 0" src="https://licensebuttons.net/l/by-nc-nd/4.0/88x31.png"></a><br>本作品採用 <a rel="license" href="https://creativecommons.org/licenses/by-nc-nd/4.0/deed.zh">署名-非商業性使用-禁止演繹 4.0 國際</a> 進行許可。