将文本文件的内容作为命令提供给 telnet

将文本文件的内容作为命令提供给 telnet

使用命令,我可以通过输入实际请求telnet docs.python.org 80来向发出手动 HTTP 请求。http://docs.python.org/2/license.html

现在,我不想实时输入,而是想从文本文件中提供请求。

我尝试了这个:

cat request.txt|telnet docs.python.org 80


请求.txt

GET /2/license.html HTTP/1.1 
Host: docs.python.org

(您必须用一个空白行结束文件,否则您将收到错误请求!)


但与服务器的连接立即关闭。

我应该如何正确地管道请求.txttelnet docs.python.org 80


编辑:

知道这一点很有用;如果您使用HEAD而不是GET,您将获得与发出请求相同的响应GET,消息正文除外。
因此,HEAD如果您只想检查 HTTP 标头,请使用 。(即,这样响应的内容就不会弄乱您的 shell 输出。)

答案1

使用 netcat(nc 命令)而不是“telnet”,因此

cat 请求.txt | nc docs.python.org 80

Telnet 是一种快速而简单的黑客攻击方式,但 netcat 显然是适合这项工作的正确工具。

答案2

我确实没有任何经验,telnet但它确实需要文件重定向的输入:

telnet < abc.txt

我可以按如下方式使其正确连接到服务器:

$ cat abc.txt
open docs.python.org 80
$ telnet < abc.txt
telnet> Trying 82.94.164.162...
Connected to dinsdale.python.org.
Escape character is '^]'.
Connection closed by foreign host.

也许你可以弄清楚如何让它接受GET命令,但我做不到。另一种方法是使用expect脚本:

#!/usr/bin/expect

spawn telnet docs.python.org 80
expect "Escape character is '^]'." { 
     send "GET /2/license.html HTTP/1.1\nHost: docs.python.org\n\n" 
}
interact

然后您可以将脚本另存为telnet.exp、使其可执行并运行它:

./telnet.exp > output.html

相关内容