直接用IP访问百度,我发现了···

推荐专门分享AI技术的公众号

关注后,回复:ChatGPT ,领取账号

文末送书福利

大家好,前几天晚上,我的知识星球群里有人提了一个很有意思的问题,引发了一次热烈的讨论。

大家知道,访问网站的时候,会有一个域名解析的过程,客户端会先拿到网站的IP地址,然后通过IP地址来进行后续的HTTP通信。

185f55b6682d0afc9e90224ebf1ea17b.png

那既然如此,如果我已经知道了网站的IP地址,是不是可以跳过域名解析的过程,直接拿着IP地址去请求呢?

以百度为例,我们ping一下百度的域名,拿到它的IP地址。

01c74b4ffec21eee28f1e7f1fa3b2ab7.png

解析的IP地址是:14.119.104.189

那直接访问https://14.119.104.189,是不是也能打开百度?

结果他试了一下,发现被拒绝了!

b9b786d93fc9dab24d5dcb85966c9449.png

然后这位球友就想不通了,为啥我跳过了第一步,直接用IP访问就不行呢?网站是如何做到不让直接用IP访问的?

从这个图中就可以合理的怀疑,是不是第二步中,客户端发过去的HTTP请求在使用域名和直接使用IP地址的时候有所不同,让服务器“察觉”出来你是直接使用的IP地址在访问网站,跳过了第一步。

8e20909d234a2f06a18e842d1afdedf8.png

大胆假设,小心论证,接下来我们就来看一下是不是这样。

因为HTTPS的通信是加了密的,为了看清楚通过域名访问和通过IP访问的时候,HTTP请求内容的区别,我们使用Fildder抓包软件,这样可以看到HTTPS加密的正文内容。

首先咱们通过域名来访问一下:

0555b7eb6dc0ca16334cc46a5052a673.png

然后通过IP地址来访问一下:

f62b211a45bfe4daabcdbe8ce0fa29ec.png

放在一起一对比,在请求头中就只有两个地方不一样:

59850186af811cbf0f3859638a1a34e4.png

分别是Host字段和Cookie字段。

这样一看,真相基本就明确了,问题多半出在这个Host字段。

为了进一步验证,我们使用Postman来直接访问https://14.119.104.189,可以看到服务器返回了403错误!

18610d6b1bc2c4c01c2a81a6bc7b9a17.png

然后,我们通过Postman修改一下Host字段,将其设置为域名www.baidu.com,再试一次:

47f9af21d0ba57791b30bae05b57adaa.png

这次能成功访问了!

至此,这位球友的问题就得到解答了:

客户端在发起HTTP请求的时候,会将其要访问的服务器地址填在Host字段。当使用域名访问的时候,这个字段的值就是域名,而通过IP地址访问的时候,这个字段的内容就是对应的IP地址。而服务器正是通过请求中的Host字段,识别出了客户端是直接通过IP访问的还是通过域名访问的。

最后给大家留一个思考题:

当我用HTTPS直接访问https://14.119.104.189的时候,浏览器给了我这样一个提示:

ac446c0f9facfd600cfb443517de276f.png

这不是百度自己的SSL证书吗?为什么会有这个提示出现?评论区说说看!

—End—

 
 
赠书福利
赠送新书《Python自动化办公应用大全(ChatGPT版)》共5本,刚刚上架!由「 北京出版社」赞助提供 ,感兴趣的朋友推荐入手一本。

本书全面系统地介绍了Python语言在常见办公场景中的自动化解决方案。全书分为5篇21章,内容包括Python语言基础知识,Python读写数据常见方法,用Python自动操作Excel,用Python自动操作Word 与 PPT,用Python自动操作文件和文件夹、邮件、PDF 文件、图片、视频,用Python进行数据可视化分析及进行网页交互,借助ChatGPT轻松进阶Python办公自动化。 

添加我的微信:itcodexy,朋友圈随机送书2本

今天加入我的知识星球,可以赠送1本,共3本

点击在看,让更多朋友看到!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值