Làm cách nào để xác định trạng thái HTTP mà không cần tải xuống trang hoàn chỉnh?


26

Tôi muốn biết Trạng thái HTTP của các trang web bằng Ubuntu. Tôi đã sử dụng curlwgetchỉ huy cho mục đích đó. Nhưng vấn đề là các lệnh này tải xuống trang web hoàn chỉnh và sau đó tìm kiếm tiêu đề và hiển thị nó trên màn hình. Ví dụ:

$ curl -I trafficinviter.com
HTTP/1.1 200 OK
Date: Mon, 02 Jan 2017 14:13:14 GMT
Server: Apache
X-Pingback: http://trafficinviter.com/xmlrpc.php
Link: <http://trafficinviter.com/>; rel=shortlink
Set-Cookie: wpfront-notification-bar-landingpage=1
Content-Type: text/html; charset=UTF-8

Điều tương tự cũng xảy ra với Wgetlệnh trong đó trang hoàn chỉnh đang được tải xuống và tiêu thụ băng thông của tôi một cách không cần thiết.

Những gì tôi đang tìm kiếm là: làm thế nào để có được mã trạng thái HTTP mà không thực sự tải xuống bất kỳ trang nào để tôi có thể tiết kiệm mức tiêu thụ băng thông của mình. Tôi đã thử sử dụng curl nhưng không chắc là tôi đang tải xuống trang hoàn chỉnh hay chỉ là một tiêu đề cho hệ thống của tôi để lấy mã trạng thái.


"đã thử sử dụng curl nhưng không chắc là tôi đang tải xuống trang hoàn chỉnh hay chỉ là một tiêu đề" - curl -v( --verbose) là một cách thuận tiện để gỡ lỗi những gì curl thực sự đang gửi và nhận.
Beni Cherniavsky-Paskin

Tôi e rằng tôi đang từ chối vì bạn đã có giải pháp ngay trong câu hỏi.
Cuộc đua nhẹ nhàng với Monica

@LightnessRacesinOrbit Tôi không biết câu hỏi có phải là câu trả lời của tôi hay không. Tôi đã ở đây để được giúp đỡ để giải quyết sự nhầm lẫn của tôi. Nếu bạn vẫn thấy rằng câu hỏi của tôi là sai .. Tôi hoan nghênh quyết định của bạn về downvote .. cảm ơn bạn
Jaffer Wilson


"các lệnh này tải xuống trang web hoàn chỉnh" - không, chúng không
Ngừng làm hại Monica

Câu trả lời:


49

curl -Ichỉ tìm nạp các tiêu đề HTTP; nó không tải xuống toàn bộ trang. Từ man curl:

-I, --head
      (HTTP/FTP/FILE) Fetch the HTTP-header only! HTTP-servers feature
      the command HEAD which this uses to get nothing but  the  header
      of  a  document. When used on an FTP or FILE file, curl displays
      the file size and last modification time only.

Một lựa chọn khác là cài đặt lynxvà sử dụng lynx -head -dump.

Yêu cầu CHÍNH được chỉ định bởi giao thức HTTP 1.1 ( RFC 2616 ):

9.4 HEAD

   The HEAD method is identical to GET except that the server MUST NOT
   return a message-body in the response. The metainformation contained
   in the HTTP headers in response to a HEAD request SHOULD be identical
   to the information sent in response to a GET request. This method can
   be used for obtaining metainformation about the entity implied by the
   request without transferring the entity-body itself. This method is
   often used for testing hypertext links for validity, accessibility,
   and recent modification.

2
có thể không (trong giới hạn của tiêu chuẩn .. rõ ràng là có thể ) đối với yêu cầu CHÍNH để trả về mã trạng thái khác với GET?
KutuluMike

1
@KutuluMike: Đã chỉnh sửa câu trả lời để cung cấp thông tin được yêu cầu. Theo lời của RFC, nó NÊN cung cấp thông tin tương tự.
AlexP

@duskwuff: Sau đó, một yêu cầu CHÍNH NÊN trả lại cùng 405.
AlexP

@AlexP Sai lầm của tôi. Đừng bận tâm!
duskwuff

18

Với wget, bạn cần sử dụng --spidertùy chọn để gửi yêu cầu CHÍNH như curl:

$ wget -S --spider https://google.com
Spider mode enabled. Check if remote file exists.
--2017-01-03 00:08:38--  https://google.com/
Resolving google.com (google.com)... 216.58.197.174
Connecting to google.com (google.com)|216.58.197.174|:443... connected.
HTTP request sent, awaiting response... 
  HTTP/1.1 302 Found
  Cache-Control: private
  Content-Type: text/html; charset=UTF-8
  Location: https://www.google.co.jp/?gfe_rd=cr&ei=...
  Content-Length: 262
  Date: Mon, 02 Jan 2017 15:08:38 GMT
  Alt-Svc: quic=":443"; ma=2592000; v="35,34"
Location: https://www.google.co.jp/?gfe_rd=cr&ei=... [following]
Spider mode enabled. Check if remote file exists.
--2017-01-03 00:08:38--  https://www.google.co.jp/?gfe_rd=cr&ei=...
Resolving www.google.co.jp (www.google.co.jp)... 210.139.253.109, 210.139.253.93, 210.139.253.123, ...
Connecting to www.google.co.jp (www.google.co.jp)|210.139.253.109|:443... connected.
HTTP request sent, awaiting response... 
  HTTP/1.1 200 OK
  Date: Mon, 02 Jan 2017 15:08:38 GMT
  Expires: -1
  Cache-Control: private, max-age=0
  Content-Type: text/html; charset=Shift_JIS
  P3P: CP="This is not a P3P policy! See https://www.google.com/support/accounts/answer/151657?hl=en for more info."
  Server: gws
  X-XSS-Protection: 1; mode=block
  X-Frame-Options: SAMEORIGIN
  Set-Cookie: NID=...; expires=Tue, 04-Jul-2017 15:08:38 GMT; path=/; domain=.google.co.jp; HttpOnly
  Alt-Svc: quic=":443"; ma=2592000; v="35,34"
  Transfer-Encoding: chunked
  Accept-Ranges: none
  Vary: Accept-Encoding
Length: unspecified [text/html]
Remote file exists and could contain further links,
but recursion is disabled -- not retrieving.

Bạn không nghĩ rằng bạn của tôi rằng wget sẽ lấy trang hoàn chỉnh và sau đó hiển thị tiêu đề.
Jaffer Wilson

@JafferWilson đọc vài dòng cuối cùng của đầu ra.
muru
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.