Sử dụng telnet để có được tiêu đề trang web


7

Tôi có câu hỏi, có thể có được tiêu đề của trang web bằng cách sử dụng telnet? Trang web trông như thế này domain.name.server.com/~USER(chỉ ví dụ). Và tôi muốn có được tiêu đề của nó bằng telnet.

telnet domain.name.server.com/~USER 80 <- không hoạt động

telnet domain.name.server.com 80hoạt động nhưng tôi cần để có được ~ người dùng. Có khả năng để làm điều này?

Câu trả lời:


19

Sử dụng telnet domain.name.server.com 80sau đó

HEAD /~USER HTTP/1.1
Host: domain.name.server.com

(Sau đó, bạn phải đánh Entermột lần nữa.)

Bây giờ nó sẽ cho bạn thấy tiêu đề của trang này.

Ví dụ trong cuộc sống thực:

$ 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.

3
Nếu bạn không có telnet, bạn có thể nhận được cùng một thứ bằng cách sử dụng nchoặc netcat(các bản phân phối khác nhau trong cách họ gọi nó và có phiên bản gốc và GNU được sử dụng).
Bruce Ediger

6
Bạn cũng nên bao gồm Host: unix.stackexchange.comđể máy chủ biết trang web nào bạn muốn, khi nó phục vụ nhiều trang web dưới dạng máy chủ ảo .
deltab

2
Tại sao oh tại sao bạn sử dụng HTTP / 1.0 ở đây? Hiện tại (và điều làm cho bất kỳ việc sử dụng hợp lý nào của Host:tiêu đề) là HTTP / 1.1, tính năng chính trong đó là các máy chủ ảo dựa trên tên.
một CVn

Nếu bạn quan tâm để giúp đỡ thế giới chỉ một chút, bạn cũng có thể sử dụng TLS. gnutls-cli $host -p $porthoặc openssl s_client -connect $host:$port, sau đó gõ các tiêu đề HTTP như bình thường.
Blacklight Shining

2

Nếu bạn có thể sử dụng wgetthay vì telnet, bạn có thể nhận tất cả các tiêu đề bằng một lệnh:

wget -q -S -O - domain.name.server.com/~USER | : 2>&1
  • -q tắt tin nhắn nhật ký bình thường
  • -S bật đăng nhập các tiêu đề từ máy chủ
  • -O - chỉ đạo nội dung của tệp đã tải xuống STDOUT
  • | :chuyển nội dung của tệp đã tải xuống tiện ích no-op :. Điều này ngăn chặn hiệu quả việc tải xuống toàn bộ tệp, đó là lợi thế nếu đó là một tệp lớn
  • 2>&1 (tùy chọn) chuyển hướng các tiêu đề đã đăng nhập sang STDOUT

Ví dụ:

$ 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
$ 

1

Curl là một cách ngắn gọn để xem các tiêu đề HTTP:

curl -v http://unix.stackexchange.com/questions/237635/using-telnet-to-get-website-header

3
Chào mừng bạn (?) Đến Unix & Linux! Bạn đã gửi bài ở trên như một câu trả lời, nhưng nó không thực sự trả lời câu hỏi ( “là nó có thể để có được những tiêu đề của một trang web bằng cách sử dụng telnet? ”). Gợi ý hữu ích nên được thực hiện trong các ý kiến, mà bạn cần danh tiếng hơn một chút .
G-Man nói 'Phục hồi Monica'

-1

Bạn cũng có thể thực hiện việc này qua https, sử dụng openssl thay vì telnet. Có một ví dụ trong hướng dẫn này mà tôi đã xuất bản gần đây:

openssl s_client -connect domain.name.server.com:443
HEAD /~USER HTTP/1.0
Host: domain.name.server

Mặc dù liên kết này có thể trả lời câu hỏi, tốt hơn là bao gồm các phần thiết yếu của câu trả lời ở đây và cung cấp liên kết để tham khảo. Câu trả lời chỉ liên kết có thể trở nên không hợp lệ nếu trang được liên kết thay đổi. - Từ đánh giá
Satō Katsura

1
@ SatōKatsura Vâng, về mặt kỹ thuật, Bạn cũng có thể thực hiện việc này qua https, sử dụng openssh thay vì telnet. Trông giống như một nỗ lực trả lời. Nhưng điều đó hoàn toàn sai: ssh không liên quan gì đến https và dù sao thì một trang web http sẽ không phản hồi qua https.
Gilles 'SO- ngừng trở nên xấu xa'

Có, nhưng câu trả lời trở nên chính xác opensslthay vì openssh, đó là những gì hướng dẫn được liên kết nói (tất nhiên, với điều kiện, trang web cũng hỗ trợ https). Nó có thể là một lỗi đánh máy trung thực ...
Satō Katsura

Nhận xét (gần đây nhất) của Blacklight Shining về câu trả lời unix.stackexchange.com/a/237648/100394 cung cấp giải pháp sử dụng OpenSSL.- openssl s_client -connect $host:$port. Tôi đã thêm rằng ở đây, vì nó giống như những gì video YouTube làm, nhưng được vẽ nhiều hơn - không phải thế.
roaima
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.