github访问太慢解决方案

问题描述

打开github网页太慢

问题原因

被墙,导致DNS无法访问,实际上通过配置本地域名到IP的映射可以避免查询DNS服务器,从而加快速度。

为了验证确实是DNS的问题,请前往站长之家DNS查询,可以看见很多DNS服务器都没有。

一般Github的访问有两部分:主站的访问和二级域名的资源加载(比如样式文件等)
一般Github加载缓慢,主要是 assets-cdn.github.com、avatars0.githubusercontent.com 以及 avatars1.githubusercontent.com 三个域名的解析问题。(国内很多地方解析不了)

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

解决方法

windows C:WindowsSystem32driversetchosts
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:WindowsSystem32driversetchosts"
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("
".join(content))

原文地址:https://www.cnblogs.com/weiyinfu/p/6376420.html