github訪問太慢解決方案


問題描述

打開github網頁太慢

問題原因

被牆,導致DNS無法訪問,實際上通過配置本地域名到IP的映射可以避免查詢DNS服務器,從而加快速度。

為了驗證確實是DNS的問題,請前往站長之家DNS查詢,可以看見很多DNS服務器都沒有。

一般Github的訪問有兩部分:主站的訪問和二級域名的資源加載(比如樣式文件等)
一般Github加載緩慢,主要是 assets-cdn.github.com、avatars0.githubusercontent.com 以及 avatars1.githubusercontent.com 三個域名的解析問題。(國內很多地方解析不了)

為了提高速度,可以使用HOSTS加速對Github的域名解析。

解決方法

windows C:\Windows\System32\drivers\etc\hosts
linux /private/etc/hosts
修改hosts主機映射文件:
添加github一系列網址的IP地址、域名映射
原理就是:當我們訪問github時,那些域名什么的就不需要去DNS服務器上詢問了,直接從本地HOST文件中獲得。

但是github域名所對應IP好像是隨時間變化的,挨個查詢太麻煩,來個腳本
先建立一個域名列表haha.txt,下面列表中的gist.github.com是代碼片功能,被牆得死死地。無論如何打不開。

github.com
assets-cdn.github.com
avatars0.githubusercontent.com
avatars1.githubusercontent.com
documentcloud.github.com
gist.github.com
help.github.com
nodeload.github.com
raw.github.com
status.github.com
training.github.com
github.io

然后用python語言使用requests+beautifulsoup制作一個小爬蟲

import requests
from bs4 import BeautifulSoup

for i in open("haha.txt"):
    url = "http://ip.chinaz.com/" + i.strip()
    resp = requests.get(url)
    soup=BeautifulSoup(resp.text)
    x=soup.find(class_="IcpMain02")
    x=x.find_all("span",class_="Whwtdhalf")
    print(x[5].string.strip(),i.strip())

最終得到所要結果

192.30.253.113 github.com
151.101.100.133 assets-cdn.github.com
151.101.100.133 avatars0.githubusercontent.com
151.101.100.133 avatars1.githubusercontent.com
151.101.100.133 documentcloud.github.com
8.7.198.45 gist.github.com
151.101.100.133 help.github.com
192.30.253.121 nodeload.github.com
151.101.100.133 raw.github.com
174.129.214.132 status.github.com
151.101.100.133 training.github.com
23.235.33.133 github.io

關閉瀏覽器,重新打開,就能體驗到飛一般的感覺 !

為了簡單,可以通過Python直接更改HOSTS文件,不用手動更改。

s = """
github.com
assets-cdn.github.com
avatars0.githubusercontent.com
avatars1.githubusercontent.com
documentcloud.github.com 
help.github.com
nodeload.github.com
raw.github.com
status.github.com
training.github.com
github.io
"""
import requests
from bs4 import BeautifulSoup

ans = []
for i in s.split():
    url = "http://ip.chinaz.com/" + i.strip()
    resp = requests.get(url)
    soup = BeautifulSoup(resp.text)
    x = soup.find(class_="IcpMain02")
    x = x.find_all("span", class_="Whwtdhalf")
    x = "%s %s" % (x[5].string.strip(), i.strip())
    print(x)
    ans.append(x)

hosts = r"C:\Windows\System32\drivers\etc\hosts"
with open(hosts, "r") as f:
    content = [i for i in f.readlines() if i.startswith("#")]
    content.extend(ans)
with open(hosts, "w") as f:
    f.write("\n".join(content))


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM