个人文档
  • AI编程Cursor
  • GPT使用笔记
  • npm常用库合集
  • 同步用
  • 小Demo们
  • 工具网站教程集合
  • HTML、CSS 工具方法集合
    • HTML 全局属性
    • css常用功能
    • font-face 字体|子集相关
    • iframe父子页面传值
    • input输入优化
    • loading状态
    • nodejs使用谷歌邮箱发邮件
    • 为 Dom 自定义事件监听
    • 初始html的head标签配置
    • 拼音输入中文汉字的事件监听
    • 文字颜色效果
    • 文档片段范围 Range
    • 移动端开发-rem
    • 等宽字体推荐
    • 网站SEO优化注意点
    • 邮件html模板
  • JS 工具方法集合
    • Axios 简单使用
    • Axios 简单封装
    • Gitbook的安装和使用
    • Github 登录开发
    • HTML转为纯文本
    • JS 中强大的操作符
    • cookie 操作
    • js 动态加载js资源
    • js 常用功能语句
    • js取代trycatch的方法封装
    • js接口下载二进制
    • script 标签的异步属性
    • 判断当前是移动端还是pc端
    • 刷新token队列管理
    • 前端多线程 Web Worker
    • 加密-AES对称加密
    • 加密-node进行rsa加密解密
    • 地区省市区三级联动的地址数据 + 功能
    • 复制插件
    • 开发时环境变量
    • 得到随机图片
    • 数字格式整理集合
    • 数学计算插件
    • 时间格式整理
    • 获取ip地址
    • 获取url传参
    • 进制转换和位运算符
    • 页面隐藏|激活|关闭的监听
  • JS 知识点研究
    • Babel 历史和原理
    • Babel 配置和使用
    • Function 的 apply、call、bind
    • HTTP浏览器缓存粗解
    • Source map 文件还原为源码
    • TS常用技巧
    • js 的加载和模块化
    • js 的新数据类型 Symbol
    • js的代理对象 proxy 和 defineProperty
    • js的原型链 prototype
    • vite 打包体积优化
    • webpack 可视化打包文件大小插件
    • webpack 基础使用配置
    • webpack 版本5的报错
    • yeoman 开发脚手架的工具
    • 同步异步和微任务宏任务
    • 移动端调试---谷歌工具+eruda+vconsole
    • 转换-Blob URL
    • 转换-FileReader
    • 转换-Js文件类型和转换
    • 转换-前端开发的URL的编码和解码
    • 转换-字符串和Base 64的转换
  • Node 和 Npm 相关
    • Node 开发环境配置
    • express + jwt 校验
    • node 常用方法
    • node后台服务器-PM2
    • node基本使用
    • npm 中依赖的版本问题
    • npm 功能使用
    • npm指令说明和其他对比
    • nvm版本管理+自动切换node版本
  • React 学习
    • React Hook
    • React 项目基础开发
    • React.memo 和 React.PureComponent
    • React懒加载进阶
    • useContext Hook
    • useEffect Hook
    • useMemo 和 useCallback - Hook
    • useRef Hook
    • useState Hook
    • 同步修改变量功能封装 useVal for react
    • 轻便的传值组件
  • Rust 语言相关
    • Rust 基本
    • Rust 基础学习
    • Rust 调用 Object-C 的API
    • Tauri 基本使用
    • Tauri 是什么
  • VUE 学习
    • Vue3 使用
    • Vue3使用hook
    • Vue开发小技术点
    • vue路由切换时的动画效果
    • 花式引入组件和资源-打包时拆包减少js体积
  • Web3相关
    • Web3.0开发上-准备和概念理解
    • Web3.0开发下-功能代码示例
    • 以太坊区块链和Web3.0
    • 开发智能合约
  • python
    • pyenv版本管理工具
    • python初始化
    • python基本概念
    • venv虚拟环境
  • 个人其他
    • Steam Deck的基本设置和插件
  • 其他编程相关
    • Git教程和常用命令
    • Java开发-JDK和Maven的安装和卸载
    • Jenkins安装和基本使用
    • Linux系统指令
    • Mac 使用2K屏幕开启缩放
    • Mac 使用VS code打开项目
    • Mac 安装 Homebrew
    • Mac 的终端 shell 与 zsh
    • Mac 软件和插件
    • MacBook使用建议
    • Mac升降级到指定版本的系统
    • Mac安装Zsh
    • Mac安装软件各种提示
    • Mac系统脚本语言 AppleScript 的使用
    • Mac终端代理工具
    • Markdown(md)文档开发-Typora
    • Mysql 的安装和使用
    • Nginx 安装和基础使用
    • Nginx 稍微高深的配置
    • Slate - Api 的文档开发工具
    • Sublime配置
    • Ubuntu的 apt-get 使用
    • VScode配置
    • Windows 软件和插件
    • curl 工具使用
    • github 网站访问优化
    • host 文件
    • inquirer 终端中和用户交互
    • uTools的插件开发教程
    • vim 文本编辑功能
    • 使用 Github Pages 免费部署网站
    • 压缩指令 zip 和 unzip
    • 油猴的安装和开发(Tampermonkey)
    • 阿里云简略使用
  • 微信开发
    • 微信小程序开发
    • 微信开发必读
    • 微信开发提前购买域名
    • 微信手机打开的页面中授权登录
    • 微信扫码登录
    • 微信服务号登录+推送服务提醒
    • 自定义分享卡片-node.js实现
  • 数据结构与算法
    • KMP算法
    • Wildcard字符串分析算法
    • 二叉树
    • 字典树
    • 时间复杂度浅析
    • 算法神器——动态规划
Powered by GitBook
On this page
  • host 文件
  • 各系统文件位置和默认内容
  • 默认内容
  • 查询最佳 host
  • 修改 host 的软件

Was this helpful?

  1. 其他编程相关

host 文件

title: host 文件 id: 528e5bbcfc721e7ccb69fe027ff4a346 tags: [] date: 2000/01/01 00:00:00 updated: 2023/03/04 19:29:12 isPublic: true --#|[分隔]|#--

host 文件

浏览器访问网站,要首先要把访问的网站域名解析成其指定的 IP 地址,浏览器才能对此网站进行定位并且访问其数据。

操作系统规定,这种网络请求,会先检查系统自己的 hosts 文件中,是否有这个域名和 IP 的映射关系。

如果有,则直接访问这个IP地址指定的网络位置,如果没有,再向已知的 DNS 服务器提出域名解析请求。

hosts 文件可以用文本编辑工具打开并修改,内容就是一个个 IP 和域名的对应关系。

我们可以修改这个文件中的映射关系,来免除一些域名请求的 DNS 步骤,加快访问,或者自定义一些映射关系,配合一些软件开发。

有时候,比如我们在 hosts 文件中指定了某个我们随便编的域名,访问某个网站 ip,可能会发现无法正常打开。

这可能是因为,对方的网站想到正常打开,是需要域名必须是他们指定的域名才行,这个对方是可以在 nginx 中配置的。

实际你是已经访问到这个 ip 的了,但对方经过判断,知道你这个域名不是自己的,就不给你正常提供服务了。

各系统文件位置和默认内容

文件位置:

  • linux 系统(Ubuntu 18.04.5 LTS \n \l):/etc/hosts

  • Mac 系统:/etc/hosts

  • Windows 系统:C:\Windows\System32\drivers\etc\hosts

  • Android 系统:/system/etc/hosts

  • iOS 系统:/etc/hosts

默认内容

以下是 Mac 系统的 hosts 文件内容,其他系统的关键内容类似。

默认内容:

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1       localhost
255.255.255.255 broadcasthost
::1             localhost

查询最佳 host

修改 host,对 DNS 解析比较慢、或者自动解析到的服务器距离自己太远(比如自己住北京,某个网站在北京明明有服务器,可 DNS 硬是给解析到一个美国的服务器,导致打开网站很慢)。

比如广为诟病的 github.com,国内常常打开很慢,或者压根就打不开,那么很可能就是 DNS 解析失败、解析的慢、解析到的 IP 地址舍近求远了。

这时修改 host 就比较有必要了,使用此网站查询某个域名对应的 IP、和此 IP 的访问速度。

使用 nslookup 指令

以下是使用系统自带的 nslookup 工具,分别查询 github.com 和 github.global.ssl.fastly.Net 两个域名的服务 ip:

# 查询 github.com 提供服务的 ip
@bogon ~ % nslookup github.com
Server:		192.168.1.1
Address:	192.168.1.1#53

Non-authoritative answer:
Name:	github.com
Address: 13.250.177.223

# 查询 github.global.ssl.fastly.Net 提供服务的 ip
@bogon ~ % nslookup github.global.ssl.fastly.Net
Server:		192.168.1.1
Address:	192.168.1.1#53

Non-authoritative answer:
Name:	github.global.ssl.fastly.Net
Address: 115.126.100.160

查询到 ip,再直接修改系统的 host 文件,添加下面两行即可:

13.250.177.223   github.com
115.126.100.160  github.global.ssl.fastly.Net

使用第三方网站

查询工具网站:http://tool.chinaz.com/dns。

1. 输入 github.com,点击「检测」查询

可见,这里会展示几个比较良好的 ip,但注意,这些并不一定适合自己,因为这些 ip,应该是相对于人家这个网站服务器来说的,而不是相对于「你」现在这台电脑使用的网络。

比如我 ping 203.208.39.99 这个 ip,可以 ping 通,延迟还挺低,但设置为 host 后,github.com 却完全打不开了(见下面 设置了「不合适」的 host 时 的图)。

所以我们需要依次使用这几个 ip 来设置 host,实验检验真理,而我当前的设置使用的可用的是 13.229.188.59 这个ip。

设置了「不合适」的 host 时:

2. 点击「更多节点」查询更多节点

如果这几个 ip 都不合适(可能性比较小),那可以尝试点击「更多节点」,来跳转到另一个网站,查询更多节点。

这里跳转了新网站,虽然但不建议直接在这个网站的输入框搜索,因为我这儿搜索后,直接显示「系统正在维护中…」。

但此时,如果直接再刷新下页面,你要搜的东西就出来了。。。所以,搜索框不能用,但搜索失败后,再刷新页面就可以了。

点击后跳转网站,下拉到「ip占比」,这几个 ip 都可以尝试。

3. 最后,同理添加 github.global.ssl.fastly.net 的 host

4. 清除系统的 DNS 缓存,让 host 修改生效(非必须)

Windows环境下,可以使用以下命令:

ipconfig /flushdns

Mac OS X 环境下,通常可以使用以下命令:

sudo dscacheutil -flushcache

Linux 根据系统DNS缓存机制的不同设置,自查。

修改 host 的软件

正常修改 host 会比较麻烦,需要去找到文件修改什么的。。。也不太麻烦。

这里有一个可视化软件,可以方便的管理 host,类似设置好几个 host 文件,自己选择当前使用哪一套。

软件 SwitchHosts:https://github.com/oldj/SwitchHosts/releases

默认为英文,可在设置中选择中文。

Previousgithub 网站访问优化Nextinquirer 终端中和用户交互

Last updated 3 months ago

Was this helpful?

Snipaste_2021-03-01_11-45-59.png
Snipaste_2021-03-01_11-54-09.png

设置了「合适」的 host 时:

Snipaste_2021-03-01_12-02-13.png
Snipaste_2021-02-27_13-50-04.png