如何在 Telnet 中创建 HTTP 请求
How to create a HTTP Request in Telnet
我有兴趣将 HTTP 请求脚本编写到我编写的监听 Web 服务(用于测试目的)。我想在 Powershell 中执行此操作。通过 telnet 发起 HTTP 请求非常简单。
telnet google.com 80
然后,建立套接字后,我可以输入以下 HTTP 动词和文件:
GET /search?q=test
这相当于执行 google 搜索词 "test"。伟大的!但是,如果我想做一些更有趣的事情,我需要提供更详细的 HTTP 请求 Header。我正在尝试做一些与此处找到的示例非常相似的事情:http://blog.tonycode.com/tech-stuff/http-notes/making-http-requests-via-telnet
按照作者在上一个站点的示例,我创建了一个包含以下内容的本地文件:
echo "open "
sleep 2
echo "GET HTTP/1.0"
echo "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4"
echo "Host: "
echo
echo
sleep 2
(这类似于自定义 HTTP 请求 Header 我想用它来测试我自己的网络服务)
然后我将此文件保存为 "getpage"(我也尝试将其保存为 "getpage.sh")。我继续按照作者的示例并尝试将之前的文件通过管道传输到 Powershell:
的 telnet
./getpage tonycode.com 80 tonycode.com /| telnet
但是,Powershell 返回以下错误:
Cannot run a document in the middle of a pipeline: ~\Desktop\getpage.
At line:1 char:1
+ ./getpage tonycode.com 80 tonycode.com /| telnet
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (~....Desktop\getpage:String) [], RuntimeException
+ FullyQualifiedErrorId : CantActivateDocumentInPipeline
我在 Powershell 中输入 $PSVersionTable 并确认我使用的是 Powershell 4.0 版。我开始 运行 没主意了。我浏览了有关通过 telnet 的 http 请求的 Whosebug 论坛,但我还没有找到通过 telnet 传入 pre-formated http header 来发送自定义 HTTP 请求 Header 的好方法shell 管道。我不能真正在 telnet 中输入整个 Http 请求,因为 1) 这违背了编写此类脚本的目的,以及 2) 在我完成输入完整的 Http Header.有没有人对我如何在 PowerShell 中完成此操作有任何建议?我已经可以在 Firefox 中编写和发送自定义 Http Headers,这让生活变得更轻松。如果可能的话,我只想在 Powershell 中编写脚本。提前致谢。
使用 telnet
与 HTTP
交谈在过去可能是 "cool"。但是现在没有人应该这样做。特别是当需要的不仅仅是一个微不足道的 GET
时。
您应该为此使用真正的库,例如 libcurl
或您的开发环境中可用的任何库。
备注:
- HTTP/1.0 现在被很多网站屏蔽了。您可能应该使用 HTTP/1.1.
- HTTP/2 是二进制协议。使用此协议无法使用
telnet
或您可能已经阅读过的任何 "text" 方法。
I am interested in scripting a HTTP Request to a listening web service I wrote (for testing purposes). I want to do this in Powershell.
那就别管 telnet :)
PowerShell(v3+) 具有内置 cmdlet:
或者您可以使用 System.Net.Sockets.TcpClient
或System.Net.WebClient
PS:
我有兴趣将 HTTP 请求脚本编写到我编写的监听 Web 服务(用于测试目的)。我想在 Powershell 中执行此操作。通过 telnet 发起 HTTP 请求非常简单。
telnet google.com 80
然后,建立套接字后,我可以输入以下 HTTP 动词和文件:
GET /search?q=test
这相当于执行 google 搜索词 "test"。伟大的!但是,如果我想做一些更有趣的事情,我需要提供更详细的 HTTP 请求 Header。我正在尝试做一些与此处找到的示例非常相似的事情:http://blog.tonycode.com/tech-stuff/http-notes/making-http-requests-via-telnet
按照作者在上一个站点的示例,我创建了一个包含以下内容的本地文件:
echo "open "
sleep 2
echo "GET HTTP/1.0"
echo "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4"
echo "Host: "
echo
echo
sleep 2
(这类似于自定义 HTTP 请求 Header 我想用它来测试我自己的网络服务)
然后我将此文件保存为 "getpage"(我也尝试将其保存为 "getpage.sh")。我继续按照作者的示例并尝试将之前的文件通过管道传输到 Powershell:
的 telnet./getpage tonycode.com 80 tonycode.com /| telnet
但是,Powershell 返回以下错误:
Cannot run a document in the middle of a pipeline: ~\Desktop\getpage.
At line:1 char:1
+ ./getpage tonycode.com 80 tonycode.com /| telnet
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (~....Desktop\getpage:String) [], RuntimeException
+ FullyQualifiedErrorId : CantActivateDocumentInPipeline
我在 Powershell 中输入 $PSVersionTable 并确认我使用的是 Powershell 4.0 版。我开始 运行 没主意了。我浏览了有关通过 telnet 的 http 请求的 Whosebug 论坛,但我还没有找到通过 telnet 传入 pre-formated http header 来发送自定义 HTTP 请求 Header 的好方法shell 管道。我不能真正在 telnet 中输入整个 Http 请求,因为 1) 这违背了编写此类脚本的目的,以及 2) 在我完成输入完整的 Http Header.有没有人对我如何在 PowerShell 中完成此操作有任何建议?我已经可以在 Firefox 中编写和发送自定义 Http Headers,这让生活变得更轻松。如果可能的话,我只想在 Powershell 中编写脚本。提前致谢。
使用 telnet
与 HTTP
交谈在过去可能是 "cool"。但是现在没有人应该这样做。特别是当需要的不仅仅是一个微不足道的 GET
时。
您应该为此使用真正的库,例如 libcurl
或您的开发环境中可用的任何库。
备注:
- HTTP/1.0 现在被很多网站屏蔽了。您可能应该使用 HTTP/1.1.
- HTTP/2 是二进制协议。使用此协议无法使用
telnet
或您可能已经阅读过的任何 "text" 方法。
I am interested in scripting a HTTP Request to a listening web service I wrote (for testing purposes). I want to do this in Powershell.
那就别管 telnet :)
PowerShell(v3+) 具有内置 cmdlet:
或者您可以使用 System.Net.Sockets.TcpClient
或System.Net.WebClient
PS: