วิธีที่ง่ายที่สุดในการรับการตอบกลับ HTTPS แบบดิบและไม่ได้แยกวิเคราะห์


39

อะไรจะเป็นวิธีที่ตรงไปตรงมาที่สุดในการส่งคำขอ GET ไปยัง URL ผ่าน HTTPS และรับการตอบกลับแบบดิบๆ

สามารถทำได้ด้วยการม้วนงอ ถ้าเป็นเช่นนั้นคุณต้องใช้ตัวเลือกใด?

คำตอบ:


51

หากคุณต้องการใช้curlสิ่งนี้ควรใช้งานได้:

curl -D - https://www.google.com/

อย่างไรก็ตามโปรดทราบว่านี่ไม่ได้เป็นการตอบสนองที่แท้จริง ตัวอย่างเช่นการเข้ารหัสการถ่ายโอนแบบ chunkedจะไม่ปรากฏในการตอบสนอง การใช้วิธี--rawแก้ปัญหานี้โหมด verbose ( -v) ก็มีประโยชน์เช่นกันและ-iแสดงส่วนหัวก่อนเนื้อหาการตอบสนอง:

curl -iv --raw https://www.google.com/

หากคุณต้องการใช้เพจเจอร์ที่ไม่ค่อยมีผลก็จำเป็นต้องปิดการใช้งานแถบความคืบหน้า ( -s):

curl -ivs --raw https://www.google.com/ | less

ขึ้นอยู่กับสิ่งที่คุณต้องการทำสิ่งนี้อาจจะใช่หรือไม่ใช่ปัญหาก็ได้

สิ่งที่คุณจะได้รับคือส่วนหัวการตอบสนอง HTTP ทั้งหมดและเอกสารที่ URL ที่ร้องขอ


13

นี่คือวิธีง่ายๆที่มาพร้อมกับใจ

echo 'GET / HTTP/1.1
Host: google.com

' | openssl s_client -quiet -connect google.com:443 2>/dev/null

โปรดทราบว่าเซิร์ฟเวอร์บางตัว (เช่น github.com) ใช้งานได้กับเท่านั้นHTTP/1.0
Steven Penny

4

ไม่ใช่curlแต่ควรมีอยู่ใน Unices เกือบทั้งหมด:

wget -S --spider https://encrypted.site

หากข้อความสถานะรบกวนคุณ:

wget -S --spider https://encrypted.site 2>&1 | awk '/^  /'

หากคุณต้องการจุดสิ้นสุดของบรรทัด CRLF:

wget -S --spider https://encrypted.site 2>&1 | awk '/^  / { sub(/$/,"\r"); print }'

คุณรู้ไหมว่าสิ่งนี้จะรักษา\r\nตัวละครในการตอบสนอง?
โอ๊ก

@Acorn - อย่างแรกเลยไม่ใช่ webservers ทั้งหมดที่จะตอบกลับด้วย\r\nการลงท้ายบรรทัด ฉันไม่เชื่อว่าสิ่งนี้จะเก็บรักษาไว้ในกรณีใด ๆ แต่ถ้าสิ่งนั้นมีความสำคัญกับคุณฉันจะเพิ่มวิธีรับผลลัพธ์นั้นในคำตอบ
Chris Down

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