如何从命令行生成无效的 HTTPS 请求?

如何从命令行生成无效的 HTTPS 请求?

所以,我很感兴趣,是否可以在 Linux 中通过命令行发送无效的 HTTPS 请求,以接收服务器的“错误 400”页面?
通过告诉“telnet”连接到端口 80 上的某个服务器并输入无效的 HTTP 请求(例如,声称您支持 HTTP/1.1 但不提供 Host 标头),可以使用“telnet”生成无效的 HTTP 请求。
但是可以用 HTTPS 做同样的事情吗?据我所知,你不能通过“wget”来做到这一点,因为“wget”应该总是生成语法上有效的 HTTP 或 HTTPS 请求。您无法通过“ssh”执行此操作,因为 SSH 协议与 HTTPS 不同,它将通过“连接重置”错误而不是“400 错误请求”被拒绝。那么,有办法做到这一点吗?

答案1

您可以用来curl发送 HTTP(S) 请求。

要删除或拥有自定义标头,-H可以使用该选项。

要发送空标头,您可以执行以下操作:

curl URL -H 'Host:'

例子:

$ curl https://fedoramagazine.org/ -H 'Host:'

<html>
<head><title>400 Bad Request</title></head>
<body>
<center><h1>400 Bad Request</h1></center>
<hr><center>nginx</center>
</body>
</html>

仅获取响应头:

$ curl -s -o /dev/null -D - https://www.imdb.com/ -H 'Host:' 

HTTP/2 400 
server: CloudFront
date: Fri, 24 Apr 2020 15:52:42 GMT
content-type: text/html
content-length: 915
x-cache: Error from cloudfront

答案2

无论如何,我自己已经弄清楚了。以下是生成对 github.com 无效请求的命令(例如):
op​​enssl s_client -servername github.com -connect github.com:443
如果您在那里输入语法无效的 HTTP 请求,您会得到:

<html>
  <head>
    <meta content="origin" name="referrer">
    <title>Bad request &middot; GitHub</title>
    <meta name="viewport" content="width=device-width">
    <style type="text/css" media="screen">
      body {
        background-color: #f6f8fa;
        color: rgba(0, 0, 0, 0.5);
        font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;
        font-size: 14px;
        line-height: 1.5;
      }
      .c { margin: 50px auto; max-width: 600px; text-align: center; padding: 0 24px; }
      a { text-decoration: none; }
      a:hover { text-decoration: underline; }
      h1 { color: #24292e; line-height: 60px; font-size: 48px; font-weight: 300; margin: 0px; }
      p { margin: 20px 0 40px; }
      #s { margin-top: 35px; }
      #s a {
        color: #666666;
        font-weight: 200;
        font-size: 14px;
        margin: 0 10px;
      }
    </style>
  </head>
  <body>
    <div class="c">
      <h1>Whoa there!</h1>
      <p>You have sent an invalid request. <br><br>
        Please do not send this request again.
      </p>
      <div id="s">
        <a href="https://support.github.com">Contact Support</a> &mdash;
        <a href="https://githubstatus.com">GitHub Status</a> &mdash;
        <a href="https://twitter.com/githubstatus">@githubstatus</a>
      </div>
    </div>
  </body>
</html>

相关内容