当前位置:  开发笔记 > 编程语言 > 正文

使用netcat编写HTTP头请求脚本

如何解决《使用netcat编写HTTP头请求脚本》经验,为你挑选了2个好方法。

我正在尝试使用netcat来了解有关HTTP如何工作的更多信息.我想用bash或Perl编写一些脚本,但是在测试的早期我遇到了一个绊脚石.

如果我直接从提示符运行netcat并输入HEAD请求,它会工作,我收到我正在探测的Web服务器的标题.

这有效:

    [romandas@localhost ~]$ nc 10.1.1.2 80
    HEAD / HTTP/1.0

    HTTP/1.1 200 OK
    MIME-Version: 1.0
    Server: Edited out
    Content-length: 0
    Cache-Control: public
    Expires: Sat, 01 Jan 2050 18:00:00 GMT

    [romandas@localhost ~]$

但是当我将相同的信息放入文本文件并通过管道或重定向将其提供给netcat时,为了编写脚本,它不会返回标题.
文本文件由HEAD请求和两个换行符组成:

HEAD / HTTP/1.0

通过echoprintf发送相同的信息也不起作用.

$ printf "HEAD / HTTP/1.0\r\n"; |nc -n 10.1.1.2 80
$ /bin/echo -ne 'HEAD / HTTP/1.0\n\n' |nc 10.1.1.2 80

我有什么想法我做错了吗?不确定它是否是bash问题,echo问题或netcat问题.

我通过Wireshark检查了流量,成功请求(手动输入)在第二个数据包中发送尾随换行符,而echo,printf和text文件方法将换行符保留在同一个数据包中,但我不确定是什么原因造成的这种行为.



1> moonshadow..:

你需要两个"\ r \n",并告诉netcat等待响应.printf "HEAD / HTTP/1.0\r\n\r\n" |nc -n -i 1 10.1.1.2 80或类似的应该工作.


1.10-33哦,尝试添加-q 10以使netcat在STDIN上获得EOF后等待响应.

2> 小智..:

另一种方法是使用所谓的'heredoc'约定.

$ nc -n -i 1 10.1.1.2 80 < HEAD / HTTP/1.0
>
> EOF

推荐阅读
mobiledu2402851323
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有