只有ip地址怎么访问网站
拿到一个IP地址就想访问网站?地址这事没那么简单。你敲进浏览器地址栏的访问如果是http://93.184.216.34,大概率会看到一片空白或者错误提示——这跟你输入example.com时的网站体验完全不同。问题出在哪?地址IP地址只是服务器在网络上的门牌号,但网站本身还藏着另一个关键信息:Host头。访问
打个比方。网站你走到一栋写字楼,地址知道门牌号是访问88号,但楼里租给了几十家公司。网站前台问你:“找哪家?地址”你说不出公司名,人家当然不放你进去。访问IP地址对应的网站是那栋楼,而Host头才是地址你要找的公司名。现代服务器几乎都靠虚拟主机技术共享同一个IP,访问一台机器上可能挂着几百个网站。网站你光报门牌号,服务器不知道你具体想去哪个站点,只能给你看默认页面——通常是“欢迎使用服务器”或者干脆啥都没有。
那怎么办?有几种土办法。第一种,直接改本地hosts文件。Windows在C:\Windows\System32\drivers\etc\hosts,Mac和Linux在/etc/hosts。打开它,加一行:93.184.216.34 example.com,保存后浏览器里输入http://example.com,系统会跳过DNS解析,直接把你送到那个IP。这招对付那些DNS还没生效、或者被墙了的网站特别管用——前提是你知道它对应的域名是什么。
问题来了:你手里只有IP,怎么知道它对应哪个域名?这活儿不好干。你可以试试反向查询工具,像ipinfo.io或viewdns.info,输入IP能查到它绑定的域名列表。但别抱太大希望——很多服务器不开放反向解析,或者域名用了CDN,返回的IP根本不是源站。我上次帮朋友查一个钓鱼网站,IP指向了Cloudflare的节点,反查出来八百多个域名,全在同一个代理后面,等于白查。
还有个更直接的场景:你在内网或者测试环境,服务器就一个IP,没有域名。这时候访问很简单,IP后面加端口就行。比如http://192.168.1.10:8080。但注意,如果服务器上跑着多个Web服务,每个监听不同端口,那端口就是你的“公司名”。反过来,如果服务器只开了80端口,却绑定了多个站点,那没域名就是死路一条——除非你手动改hosts,把某个域名指过去,然后带着Host头访问。
题外话,有些老程序员会直接用IP加Host头来调试。用curl命令:curl -H "Host: example.com" http://93.184.216.34,服务器收到请求后会认为你是在访问example.com,返回对应内容。这是绕过DNS的正规军打法,比改hosts更灵活,适合临时测试。但你要是想用浏览器看效果,那还是得改hosts文件,因为浏览器不给你手动填Host头的选项。
说到底,IP地址是网络层的地址,网站是应用层的资源。中间隔着Host头这道桥,你绕不过去。除非那台服务器上只跑一个站点,或者管理员把所有未指定域名的请求都重定向到了某个默认页面——这种情况你直接输IP还真能打开,但看到的内容大概率不是你想要的。我见过最离谱的一次,某公司把内部系统绑在IP上没设域名,结果员工上班全靠记IP,后来换了个服务器,IP变了,整个公司半天没法干活。记住,IP是死的,域名是活的,能绑定域名就别裸奔。