我有一个问题,是否可以使用telnet获取网站标题?网站看起来像这样domain.name.server.com/~USER
(只是示例)。我想通过 telnet 获取它的标头。
telnet domain.name.server.com/~USER 80
<-- 不起作用
telnet domain.name.server.com 80
有效,但我需要得到〜用户。有可能这样做吗?
答案1
telnet domain.name.server.com 80
然后使用
HEAD /~USER HTTP/1.1
Host: domain.name.server.com
(然后你必须再打Enter一次。)
现在它应该显示该页面的标题。
举一个现实生活中的例子:
$ telnet unix.stackexchange.com 80
Trying 198.252.206.16...
Connected to unix.stackexchange.com.
Escape character is '^]'.
HEAD /questions/237635/using-telnet-to-get-website-header HTTP/1.1
Host: unix.stackexchange.com
HTTP/1.1 200 OK
Cache-Control: public, no-cache="Set-Cookie", max-age=60
Content-Length: 70679
Content-Type: text/html; charset=utf-8
Expires: Wed, 21 Oct 2015 19:27:43 GMT
Last-Modified: Wed, 21 Oct 2015 19:26:43 GMT
Vary: *
X-Frame-Options: SAMEORIGIN
X-Request-Guid: dbf9d0f6-0ca4-423f-98f0-4cdf2bf51bf1
Set-Cookie: prov=08886524-c640-40ad-a0ee-246db3219228; domain=.stackexchange.com; expires=Fri, 01-Jan-2055 00:00:00 GMT; path=/; HttpOnly
Date: Wed, 21 Oct 2015 19:26:43 GMT
Connection closed by foreign host.
答案2
如果您可以使用wget
而不是 telnet,则可以通过一个命令获取所有标头:
wget -q -S -O - domain.name.server.com/~USER | : 2>&1
-q
关闭正常的日志消息传递-S
打开来自服务器的标头日志记录-O -
将下载文件的内容定向到 STDOUT| :
将下载文件的内容通过管道传递给 no-op 实用程序:
。这有效地防止了下载整个文件,如果文件很大,这将是有利的2>&1
(可选)将记录的标头重定向到 STDOUT
例如:
$ wget -q -S -O - unix.stackexchange.com/questions/237635/using-telnet-to-get-website-header | :
HTTP/1.1 200 OK
Cache-Control: public, no-cache="Set-Cookie", max-age=49
Content-Type: text/html; charset=utf-8
Expires: Wed, 21 Oct 2015 21:22:21 GMT
Last-Modified: Wed, 21 Oct 2015 21:21:21 GMT
Vary: *
X-Frame-Options: SAMEORIGIN
X-Request-Guid: 5ac03697-68fa-4be5-9f32-2905ec3eff38
Set-Cookie: prov=5d9866f4-9d98-4587-a7cc-f6ea5cd76075; domain=.stackexchange.com; expires=Fri, 01-Jan-2055 00:00:00 GMT; path=/; HttpOnly
Date: Wed, 21 Oct 2015 21:21:32 GMT
Content-Length: 76585
$
答案3
Curl 也是查看 HTTP 标头的一种简洁方法:
curl -v http://unix.stackexchange.com/questions/237635/using-telnet-to-get-website-header
答案4
您还可以使用 openssl 而不是 telnet 通过 https 执行此操作。有一个例子本教程我最近发布的:
openssl s_client -connect domain.name.server.com:443
HEAD /~USER HTTP/1.0
Host: domain.name.server