如题,当前github的dns已经被污染,在不同cdn加持下,经常会抽风,虽然已经被微软收购,目前的整治可能还需一段时间,目前主流的优化方法无非也就几种,考虑安全风险问题,所以不推荐使用镜像加速,当然修改dns也有安全隐患,这个仁者见仁智者见智吧,分享一个自动修改host实现github加速的脚本。

原理简介

  1. 首先查询github在当前网路最佳的访问节点(存在安全隐患,如果不信任站长工具给的IP可以换成其他源,只要给的节点能够有效加速)
  2. 拷贝IP,打开系统host文件,单机修改时如此,如果在自己的局域网修改,则需要在dns服务器上设置,因为过期时间较短,建议制作成定时任务的形式更新(以下是我目前的host)。
185.199.110.153 assets-cdn.Github.com
#140.82.114.4 github.com
#52.192.72.89 github.com
# ipconfig /flushdns
#20.205.243.166 github.com
199.232.69.194 github.global.ssl.fastly.net
185.199.109.133 raw.githubusercontent.com
13.114.40.48 github.com
#52.69.186.44 github.com

源码

# coding=utf-8
"""查询访问github最佳的女生路线并配置到电脑host文件中dns来源:站长工具
"""
import json
import logging
import os
import platformtry:# noinspection PyCompatibilityfrom urllib.request import urlopen, Request# noinspection PyCompatibilityfrom urllib.error import HTTPError, URLError
except ImportError:# noinspection PyUnresolvedReferences,PyCompatibilityfrom urllib2 import urlopen, Request, HTTPError, URLErrorlogging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)host_window = r"C:\Windows\System32\drivers\etc\hosts"
host_unix = r"/etc/hosts"def get_best_ip(host):"""查询dns github最佳解析路线, 默认是github"""# noinspection HttpUrlsUsageapi = "http://tool.chinaz.com/AjaxSeo.aspx?t=dns&server=JACYvxRvL1|CnyK9sCL7~g=="headers = {'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', }data = 'host={host}&type=1&total=10&process=6&right=3'.format(host=host)req = Request(api, data=data.encode(), headers=headers)try:res = urlopen(req).read().decode('utf-8')res_json = json.loads(res[1: -1])return (res_json.get('list') or [{}])[0].get('result', '')except (HTTPError, URLError):logger.exception("网络连接异常")except json.decoder.JSONDecodeError:logger.exception("解析错误")except UnicodeDecodeError:logger.exception("解码错误")except Exception as e:logger.exception("未知错误 {}".format(e))return ''def _get_path():"""获取host路径"""if platform.system() is "Windows":return host_windowreturn host_unixdef read_host():"""读取host"""with open(_get_path(), 'r', encoding='utf-8') as f:return f.read()def write_host(text):"""写入host"""with open(_get_path(), 'w+', encoding='utf-8') as f:return f.write(text)def set_host(host='github.com'):"""设置host文件"""host_text = read_host()logger.info('读取host \n{}'.format(host_text))host_list = [[keyword.strip() for keyword in line.split() if keyword] for line in host_text.split('\n') ifline and len(line.split()) >= 2]best_ip = get_best_ip(host)if not best_ip:logger.warning('查询到ip数据为空')returnreset = Falsefor line in host_list:# 如果是在使用的IP不与最佳ip相同则进行注释if line[1] == host:if not line[0].startswith('#'):line[0] = "#" + line[0]if line[0] == "#" + best_ip:line[0] = line[0].strip("#")reset = Trueif not reset:host_list.append([best_ip, host])host_text = '\n'.join([' '.join(line) for line in host_list])logger.info('修改host \n{}'.format(host_text))write_host(host_text)if platform.system() == 'Windows':os.system('ipconfig /flushdns')logger.info('设置成功, 当前 {} 的解析IP为 {}'.format(host, best_ip))if __name__ == '__main__':set_host()

自动更新host实现github加速相关推荐

  1. 2012-05-04 12:58 eclipse老是building workspace及自动更新问题,eclipse加速

    最近用Eclipse开发oPhone的一个项目,每次打开Eclipse的时候,总是在build workspace,而且还老是build不完 ,因为没有build完,就无法保存,运行和调试,关闭程序则 ...

  2. github怎么自动更新被人更新过的项目_8 个程序员应该掌握的 GitHub 实用技巧

    GitHub Pages大家可能都知道,常用的做法,是建立一个gh-pages的分支,通过setting里的设置的GitHub Pages模块可以自动创建该项目的网站. 1.一秒钟把Github项目变 ...

  3. 利用 Github Actions 自动更新 docfx 文档

    利用 Github Actions 自动更新 docfx 文档 Intro docfx 是微软出品一个 .NET API 文档框架,有一个理念是代码即文档,会根据项目代码自动生成 API 文档,即使没 ...

  4. github怎么自动更新被人更新过的项目_GitHub 的这 8 个实用技巧,95%的人不知道...

    知道的越多,不知道的就越多,业余的像一棵小草! 编辑:业余草来源:https://www.xttblog.com/?p=4988 1.一秒钟把Github项目变成前端网站 GitHub Pages大家 ...

  5. 利用火绒安全软件修改host文件,加速访问GitHub网站

    利用火绒安全软件修改host文件,加速访问GitHub网站 有时候我们需要设置一下host文件,来针对访问一些特定网站的速度,例如GitHub网站,在国内的网友来说,是一个痛点,本次介绍的是修改本地系 ...

  6. Github pages 同步到Gitee pages 并自动更新Gitee pages

    由于 Gitee Pages 的访问速度很快,很多朋友会选择 Gitee Pages 部署项目(如:个人博客.开源项目国内镜像站点).但是它不像 GitHub Pages 那样,一提交代码就能自动更新 ...

  7. eclipse老是building workspace及自动更新问题,eclipse加速

    最近用Eclipse开发oPhone的一个项目,每次打开Eclipse的时候,总是在build workspace,而且还老是build不完 ,因为没有build完,就无法保存,运行和调试,关闭程序则 ...

  8. 记录安装torchtext会自动更新pytorch版本导致gpu加速失效问题

    1.配置描述 OS:win10 显卡:Nvidia GeForce MX150 版本426.00 cuda:cuda 10.1 且无法升级到10.1之后的版本 python:3.9.7 原torch版 ...

  9. github怎么自动更新被人更新过的项目_win10老是自动更新怎么办?如何完全禁止win10自动更新?...

    估计使用win10系统的用户都会遇到这些问题:经常开机时在更新系统:电脑开机经常蓝屏:总是提示系统需要更新:电脑开机更新系统等待老久!针对win10系统的自动更新,很多人只能表示无奈!今天蝈蝈就来给大 ...

最新文章

  1. 设计一个user类(Java)
  2. java之上三角矩阵_7-1 判断上三角矩阵
  3. 桌面显示激活windows_愚蠢的怪胎技巧:如何在桌面上显示Windows版本
  4. mysql json 引号 双引号_关于JSON字符串key缺少双引号的解决方法 的讲解
  5. 好程序员大数据教程分享之Hadoop优缺点
  6. 销售服务器 以次充好 判刑,销售假冒产品怎么判刑处罚,法律怎么规定的?
  7. 量子力学或证实人类生死并无意义
  8. mysql的一些查询优化,count优化,limit优化
  9. 协助数据库完成大数据实时查询
  10. 合肥师范学院计算机组成原理实验,计算机组成原理实验教学探索
  11. 有没有简易的画图软件?这4款软件让画图更简单
  12. 打印机扫描到计算机,打印机扫描文件到电脑方法教程
  13. 汤姆猫炫跑鸿蒙,汤姆猫炫跑最新版下载|汤姆猫炫跑新版本下载 安卓版 v1.4.0.470- 游娱下载站...
  14. PearOS官网下载\梨子系统
  15. NGINX反向代理缓存
  16. 前端页面局部(全局)刷新方法
  17. Oracle 实用技巧之不知道密码情况下 dblink 的迁移
  18. pandas案例之消费金额和消费之间的关联与性别和吸烟与否的关系
  19. Field II 超声声场仿真(3): 脉冲-回波响应(原理代码)
  20. trinity运行原理及常见报错(二)

热门文章

  1. 手机邮箱格式怎么写你知道吗?带你注册个人邮箱账号
  2. uniapp中自定义导航栏
  3. 飞机线束测试仪在航天航空领域的应用
  4. [ 成为架构师系列 ] 5. Spring Bean 的生命周期 (the standard bean lifecycle)
  5. FOREX嘉盛外汇 forex-jsfx.com从外汇新手成长为一名优秀的外汇交易员,你需要冲破这八道关卡!
  6. jQuery动态生成select下拉框
  7. (钻石问题)一楼到十楼的每层电梯门口都放着一颗钻石,钻石大小不一。你乘坐电梯从一楼到十楼,每层楼电梯门都会打开一 次,只能拿一次钻石,问怎样才能拿到最大的一颗?
  8. linux模糊查询特定后缀名文件,linux中查找包含指定内容的文件
  9. Java 高级软件工程师面试题,java 教程多态,Java 程序员面试笔记 pdf
  10. 手机太卡是关机再开机好,还是重启更好?