浏览器地址栏里敲一串数字,只知址样比如 93.184.216.34,道ip地打开回车。网页页面开了,链接但显示的只知址样不是你想要的网站——这大概率是IP对应的默认虚拟主机,或者干脆是道ip地打开403错误。你以为IP就是网页网址,其实它只是链接门牌号,而域名才是只知址样那个写着“某某公司”的发光招牌。
直接拿IP访问网页,道ip地打开技术上叫“裸IP请求”。网页HTTP协议里有个Host头字段,链接浏览器会把你输入的只知址样地址原封不动塞进去。你输入IP,道ip地打开Host就是网页IP;输入域名,Host就是域名。服务器收到请求后,靠这个字段决定给你看哪个站点。一台服务器上可能蹲着几百个网站,都共享同一个IP,这就是虚拟主机。你只给IP,服务器懵了——你到底找谁?于是它甩给你默认配置,通常是管理员自己的站,或者干脆一片空白。
那怎么破?你得让浏览器在请求里带上正确的Host头,同时还要解决HTTPS证书校验问题。最土的办法:改本地hosts文件。Windows在C:\Windows\System32\drivers\etc\hosts,Linux和macOS在/etc/hosts。用管理员权限打开,加一行:93.184.216.34 example.com。保存后,浏览器地址栏输入example.com,它就会直接解析到这个IP,不走DNS。这时候Host头是域名,服务器认了,正常返回页面。注意,如果你访问的是HTTPS站点,证书里签的是域名,你输入IP反而会报证书错误——所以必须输域名,靠hosts文件“骗”过去。
这招能解决大部分场景,但有个坑:如果目标网站用了CDN或负载均衡,你手动指定的IP可能只是边缘节点,甚至已经被封了。这时你拿到的IP根本不通,hosts改了也没用。你得先确认这个IP确实能跑通HTTP服务——用curl -H "Host: example.com" http://IP试试,返回200就说明有戏。curl还能加-k参数跳过证书验证,适合测试阶段。
还有个更省事的方式,用浏览器插件。比如Chrome的“Host Switch Plus”或Firefox的“HostAdmin”,装完直接在工具栏切换hosts规则,不用每次手动改文件。但插件原理一样,本质还是改本地解析。
最后说个冷知识:有些老网站,比如某些内网设备的管理后台,压根不校验Host头。你直接输IP就能进,因为它们的服务器只监听一个站点。这种场合反而省事——但外网的大厂网站,基本没这好事。你拿着IP去访问,多半撞见的是“403 Forbidden”或者一个陌生页面。说到底,IP是物理坐标,域名是逻辑身份。浏览器默认按你输入的东西来,你给坐标它就按坐标找,但服务器认的是身份。想让它们对上号,就得自己动手改hosts,或者用curl伪造请求头。别指望浏览器能猜出你想访问哪个站——它没那本事。