วิธีการตรวจสอบสถานะ HTTP โดยไม่ต้องดาวน์โหลดหน้าสมบูรณ์?


26

ฉันต้องการทราบสถานะ HTTP ของเว็บไซต์โดยใช้ Ubuntu ฉันใช้curlและwgetสั่งการเพื่อจุดประสงค์นั้น แต่ปัญหาคือคำสั่งเหล่านี้ดาวน์โหลดหน้าเว็บไซต์ที่สมบูรณ์แล้วค้นหาส่วนหัวและแสดงบนหน้าจอ ตัวอย่างเช่น:

$ 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

สิ่งเดียวกันนี้เกิดขึ้นกับWgetคำสั่งที่หน้ากำลังดาวน์โหลดเสร็จและใช้แบนด์วิดท์ของฉันโดยไม่จำเป็น

สิ่งที่ฉันกำลังมองหาคือ: วิธีรับรหัสสถานะ HTTP โดยไม่ต้องดาวน์โหลดหน้าจริง ๆ เพื่อที่ฉันจะได้ประหยัดแบนด์วิดท์ได้ ฉันลองใช้ curl แล้ว แต่ไม่แน่ใจว่าฉันกำลังดาวน์โหลดหน้าสมบูรณ์หรือเพียงแค่ส่วนหัวในระบบของฉันเพื่อรับรหัสสถานะ


"ลองใช้ curl แต่ไม่แน่ใจว่าฉันกำลังดาวน์โหลดหน้าสมบูรณ์หรือเพียงแค่ส่วนหัว" - curl -v( --verbose) ตัวเลือกเป็นวิธีที่สะดวกในการแก้ไขข้อผิดพลาดที่ curl กำลังส่งและรับ
Beni Cherniavsky-Paskin

ฉันเกรงว่าฉันกำลังลงคะแนนเพราะคุณมีทางออกอยู่แล้วในคำถาม
การแข่งขัน Lightness กับโมนิก้า

@LightnessRacesinOrbit ฉันไม่รู้ว่าคำถามนั้นเป็นคำตอบของฉันหรือเปล่า ฉันอยู่ที่นี่เพื่อช่วยแก้ไขความสับสน หากคุณยังพบว่าคำถามของฉันผิด .. ฉันยินดีต้อนรับการตัดสินใจลงคะแนนของคุณ .. ขอบคุณ
Jaffer Wilson


"คำสั่งเหล่านี้ดาวน์โหลดหน้าเว็บไซต์สมบูรณ์" - ไม่ไม่
หยุด

คำตอบ:


49

curl -Iดึงข้อมูลเฉพาะส่วนหัว HTTP; มันไม่ได้ดาวน์โหลดทั้งหน้า จาก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.

อีกตัวเลือกหนึ่งคือการติดตั้งและการใช้งานlynxlynx -head -dump

คำขอ HEAD ถูกระบุโดยโปรโตคอล 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
เป็นไปได้ (ภายในขอบเขตของมาตรฐาน .. เห็นได้ชัดว่าเป็นไปได้ ) สำหรับคำขอ HEAD เพื่อส่งคืนรหัสสถานะที่แตกต่างจาก GET
KutuluMike

1
@KutuluMike: แก้ไขคำตอบเพื่อให้ข้อมูลที่ร้องขอ ในคำพูดของ RFC มันควรให้ข้อมูลเดียวกัน
AlexP

@duskwuff: จากนั้นคำขอ HEAD ควรส่งคืน 405 เดียวกัน
AlexP

@AlexP ความผิดพลาดของฉัน ไม่เป็นไร!
duskwuff

18

ด้วยwget, คุณจำเป็นต้องใช้--spiderตัวเลือกเพื่อส่งคำร้องขอ HEAD เหมือนขด:

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

คุณไม่คิดว่าเพื่อนของฉันที่ wget จะดึงข้อมูลหน้าสมบูรณ์แล้วแสดงส่วนหัว
Jaffer Wilson

@JafferWilson อ่านสองสามบรรทัดสุดท้ายของเอาต์พุต
muru
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.