HTTP系列二: 使用telnet模拟http请求

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTTP系列二: 使用telnet模拟http请求相关的知识,希望对你有一定的参考价值。

参考技术A 上一篇讲解了http协议的大致原理与基本格式,这一篇使用mac系统自带telnet工具来模拟http请求,分为GET请求和POST请求

为了测试使用,我在本地服务器上上传了一个php脚本,

这个脚本的功能是在浏览器输入用户名和密码,正确的用户名为zhangsan,密码为1234,如果用户名和密码正确,那么就返回username=zhangsan,如果用户名和密码不正确,那么就返回空字符。同时支持get请求和post请求,会把请求方法也输出。

1.首先打开终端,在终端输入telnet 127.0.0.1 80

2.连接成功后,按终端提示 按住control+] 进入telnet命令行,注意命令操作一定要快,因为telnet连接web服务器后,在短时间内就会被web服务器关闭连接。具体连接时间是多少不太清楚,目测1分钟左右。所以最好提前把需要输入的命令复制好,等用的时候直接复制粘贴。

为了方便,我就把命令敲在此处:

GET /login.php?username=zhang&password=1234 HTTP/1.1

Host:localhost

3.注意此处一定要在按一下回车,不能直接在telnet>后面输入命令

4.输入两条命令后 连续按两次回车 即是发出请求

可以看到,服务器返回是登录成功。

post请求与get请求前边操作一致,只是请求行 请求头 与请求头有区别

一个post请求的命令如下:

POST /login.php HTTP/1.1

Host:localhost

Content-type:application/x-www-form-urlencoded

content-length:28

username=zhang&password=1234

注意请求头输入完之后要留一个空行,表示请求头输入完成,接下来的内容是请求体。

可以看到telnet发送的POST请求也得到了服务器的正确响应。

通过使用telnet模拟http的请求,我们发现,其实只要我们发送给服务器的消息的格式符合http请求规范,那么http服务器(apache,ngnix)就能正确响应我们的请求,而浏览器所做的工作就是包装我们发送的http请求,形成符合规范的http请求,详细过程我们可以通过谷歌浏览器或者抓包工具进行抓取分析。

以上是关于HTTP系列二: 使用telnet模拟http请求的主要内容,如果未能解决你的问题,请参考以下文章

telnet客户端模拟浏览器发送请求

curl模拟http请求

使用 telnet 的 HTTP 请求没有得到任何响应

使用telnet发送HTTP请求报文

如何使用 Telnet 发送 HTTP 请求 [关闭]

如何使用 Telnet 生成 HTTP POST 请求?