hosts获取网站
- 行业动态
- 2025-05-04
- 5
Hosts文件可通过手动添加IP与域名映射获取网站,位于系统目录,修改需管理员权限,用于本地DNS解析加速
什么是hosts文件?
hosts文件是一个系统级的文本文件,用于手动映射域名到IP地址,绕过DNS解析过程,它最早起源于Unix系统,后被所有主流操作系统(Windows、macOS、Linux)沿用,当浏览器访问某个域名时,系统会优先从hosts文件中查找对应的IP地址,若未找到则转向DNS服务器,通过修改hosts文件,可以实现以下功能:
- 加速访问:直接指定IP,跳过DNS查询。
- 绕过域名封锁:某些网站可能被DNS被墙或屏蔽,通过hosts直接指向真实IP可突破限制。
- 屏蔽广告或反面网站:将特定域名指向127.0.0.1(本地回环地址)或0.0.0.0(无效地址)。
如何通过hosts文件获取网站IP?
获取目标网站的IP地址
方法1:使用
ping
命令
在命令行(Windows)或终端(macOS/Linux)输入:ping www.example.com
返回结果中会显示目标域名的IP地址(如
0.2.1
)。
注意:部分网站有多个IP,需结合其他工具确认。方法2:使用
nslookup
或dig
命令- Windows/Linux:
nslookup www.example.com
- macOS:
dig www.example.com +short
直接返回IP地址,适合批量查询。
- Windows/Linux:
方法3:在线工具
通过网站(如www.ip138.com
、mxtoolbox.com
)输入域名查询IP。
编辑hosts文件
文件位置:
| 操作系统 | 文件路径 |
|—————-|———————————–|
| Windows |C:WindowsSystem32driversetchosts
|
| macOS/Linux |/etc/hosts
|修改步骤:
- 备份原文件:复制
hosts
文件并重命名(如hosts.bak
)。 - 用管理员权限编辑:
- Windows:记事本(右键选择“以管理员身份运行”)。
- macOS/Linux:终端使用命令
sudo nano /etc/hosts
或sudo vi /etc/hosts
。
- 添加映射规则:格式为
IP地址 域名
(中间用空格或制表符分隔)。
示例:0.2.1 www.example.com 127.0.0.1 ad.doubleclick.net
- 保存并刷新DNS缓存:
- Windows:执行
ipconfig /flushdns
。 - macOS:执行
sudo dscacheutil -flushcache
。 - Linux:执行
sudo systemctl restart NetworkManager
。
- Windows:执行
- 备份原文件:复制
hosts文件的典型应用场景
场景 | 操作示例 |
---|---|
绕过域名封锁 | 将www.github.com 指向真实IP(如82.121.4 ),突破网络限制。 |
屏蔽广告域名 | 将广告商域名(如ads.google.com )指向0.0.1 ,阻止广告加载。 |
模拟网站访问 | 将自定义域名(如test.local )指向本地服务器IP(如168.1.100 )。 |
加速访问 | 直接指定CDN节点IP(如www.aliyun.com 指向11.132.12 ),减少DNS跳转。 |
注意事项与风险
IP地址动态变化:
- 网站服务器可能更换IP,需定期更新hosts文件。
- CDN加速的网站(如阿里云、酷盾安全)可能有多个IP,需添加全部节点。
权限与安全性:
- 修改hosts文件需管理员权限,误操作可能导致系统异常。
- 警惕反面软件改动hosts文件(如锁定为干扰服务器IP)。
多IP处理:
同一域名对应多个IP时,需全部添加(如百度有多个CDN节点)。
常见问题(FAQs)
Q1:修改hosts文件后无法访问网站,怎么办?
A1:
- 检查IP是否正确:重新通过
ping
或nslookup
确认目标IP。 - 检查格式:确保每行是
IP+空格+域名
,无多余符号(如注释需单独一行)。 - 恢复备份:替换回原始
hosts.bak
文件,重新编辑。
Q2:如何批量获取多个域名的IP并导入hosts文件?
A2:
- 使用工具生成:
- Windows:
HostsFileEditor
等工具支持批量添加。 - 在线服务:通过
https://www.hostsfile.org
下载公共hosts文件,手动合并。
- Windows:
- 命令行批量查询:
- Linux/macOS:
for domain in $(cat domains.txt); do echo -n "$domain "; dig +short $domain; done >> hosts.txt
- 将生成的
hosts.txt
内容复制到系统hosts文件中。
- Linux/macOS: