写在最前 Github时不时抽风,老是访问不了,诚然,用科学上网能解决一切这类问题,但是,能不翻墙还是不要翻墙的好。这里采用的是通过修改本地hosts,配置域名和IP映射关系,这样一来,当我们访问github时,这些域名可以直接从本地hosts文件中获取IP,而不需要再去DNS服务器上询问一圈。从而提高访问速度。
修改hosts 以Windows系统为例, hosts的路径是C:\Windows\System32\drivers\etc , 打开后将以下内容复制到文件最下方。
185.199.108.154 github.githubassets.com 199.232.68.133 camo.githubusercontent.com 199.232.68.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.113.4 github.com 140.82.114.5 api.github.com 199.232.68.133 raw.githubusercontent.com 199.232.68.133 user-images.githubusercontent.com 199.232.68.133 favicons.githubusercontent.com 199.232.68.133 avatars5.githubusercontent.com 199.232.68.133 avatars4.githubusercontent.com 199.232.68.133 avatars3.githubusercontent.com 199.232.68.133 avatars2.githubusercontent.com 199.232.68.133 avatars1.githubusercontent.com 199.232.68.133 avatars0.githubusercontent.com 140.82.114.9 codeload.github.com 52.217.83.84 github-cloud.s3.amazonaws.com 52.216.229.155 github-com.s3.amazonaws.com 52.216.30.60 github-production-release-asset-2e65be.s3.amazonaws.com 52.216.17.0 github-production-user-asset-6210df.s3.amazonaws.com 52.216.236.43 github-production-repository-file-5c1aeb.s3.amazonaws.com
保存后,win +X ,按A ,以管理员权限启动powershell,输入 刷新DNS缓存。之后就能变快了……才怪嘞,因为上述域名的IP是不停在变的,这一串映射仅仅适用于今天而已,到了明天,ip一变动,又登不上了,我总不可能天天来更新吧?
使用爬虫脚本实时获取最新ip 需要查询ip地址的域名有这么多。手动添加肯定是不乐意的了。
github.githubassets.com camo.githubusercontent.com github.map.fastly.net github.global.ssl.fastly.net gist.github.com github.io github.com api.github.com raw.githubusercontent.com user-images.githubusercontent.com favicons.githubusercontent.com avatars5.githubusercontent.com avatars4.githubusercontent.com avatars3.githubusercontent.com avatars2.githubusercontent.com avatars1.githubusercontent.com avatars0.githubusercontent.com codeload.github.com github-cloud.s3.amazonaws.com github-com.s3.amazonaws.com github-production-release-asset-2e65be.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com
因为github相关的诸多域名的ip是在变动的,为了能够实时获取最新的ip,我们可以使用爬虫来从站长之家 或其余ip查询网站上爬取最新ip。
这里要用到python,安装推荐使用Anaconda ,Anaconda安装方式推荐参看Win10重装日记 的3.2章节。根据Anaconda版本与python版本的对照选择自己需要的Anaconda安装包,然后直接安装即可,路径建议修改为非系统盘,同时务必勾选将python路径加入到环境变量 的选项。
新建一个python脚本——githosts.py(最简单的方法,新建一个txt文本文件,把下面的代码粘贴进去以后,修改后缀为.py)
s = "" " github.githubassets.com camo.githubusercontent.com github.map.fastly.net github.global.ssl.fastly.net gist.github.com github.io github.com api.github.com raw.githubusercontent.com user-images.githubusercontent.com favicons.githubusercontent.com avatars5.githubusercontent.com avatars4.githubusercontent.com avatars3.githubusercontent.com avatars2.githubusercontent.com avatars1.githubusercontent.com avatars0.githubusercontent.com codeload.github.com github-cloud.s3.amazonaws.com github-com.s3.amazonaws.com github-production-release-asset-2e65be.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com " "" import requests from bs4 import BeautifulSoup ans = [] for i in s.split(): url = "https://ip.tool.chinaz.com/" + i.strip() resp = requests.get(url) soup = BeautifulSoup(resp.text,"html.parser" ) 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))
然后把githosts.py
放到C:\Windows\System32
目录下(不放其实也可以,只是这样一来每次都要自己cd路径。)win +X ,按A ,以管理员权限启动 Powershell,输入
然后脚本就会自动爬取最新的IP与域名到你的hosts文件中了。
可能遇到的bug 老老实实按照上面说的来,看仔细加粗的地方,就不会有下面的bug。
没有权限修改hosts 这个应该是windows用户才会遇到,如果是脚本改写,那一定是没有用管理员权限启动Powershell,如果只是单纯手动添加hosts,那么可以直接复制hosts文件到有权限修改的目录下,然后把IP复制进去,接着再复制回原hosts路径,覆盖掉当前hosts。也可以考虑使用火绒安全管家,它的工具箱里有提供直接修改hosts的功能。
python的环境变量没添加 那就是安装的时候没勾选,找到Anaconda的安装目录,在根目录里有python.exe文件,至于怎么添加还请自行百度。(其实卸载了Anaconda以后重新安装,这次记得勾选添加到环境变量也可以。顺带一提,卸载很慢哦,还不如老老实实自己添加一下)
缺少requests包 一般Anaconda是自带一些基础包库的,没有这个包说明你是从python官网下载的python安装包。不过就算缺少,也可以通过pip install [packages]
来安装。遇到安装速度慢的情况,就去自行百度“pip install 换清华源” 。
报错“NoneType’ object has no attribute ‘find_all” 该报错有两种情况。
最有可能是站长之家的域名网址变动,例如从ip.chinaz.com变为ip.tool.chinaz.com,将源代码中url = "https://ip.tool.chinaz.com/" + i.strip()
里的域名改为现行网址即可。
如果是页面元素结构变化则需要通过F12查看原网页元素id或者class来确定元素位置重新改写源代码x = x.find_all("span", class_="Whwtdhalf")
中需要find_all的元素(也即是我们需要的ip查询结果)
参考内容