Lưu cơ thể HTTP với netcat


0

Tôi có thể lưu toàn bộ phản hồi HTTP từ máy chủ bằng netcat> output.txt, tuy nhiên điều này cũng lưu các tiêu đề phản hồi HTTP, nếu phần thân là văn bản thì đây không phải là vấn đề vì tôi chỉ có thể bỏ qua các tiêu đề khi tôi đọc đầu ra. txt.

Tuy nhiên, nếu đó là một tệp nhị phân như một hình ảnh, thì tôi sẽ không thể xem hình ảnh, làm thế nào tôi có thể lưu phần thân của một phản hồi bằng cách sử dụng netcat hoặc một số lệnh khác với đầu ra của netcat được truyền vào nó?


Bạn có biết wgetkhông? Điều đó có làm những gì bạn muốn?
Paul

vâng, tôi hiện đang bị hạn chế sử dụng netcat
Jonathan.

Câu trả lời:


0

Như được gợi ý ở trên wget (và lynx ... và curl) có thể thực hiện công việc tốt hơn nhiều so với netcat nhưng nếu bạn nhấn mạnh vào nó, bạn có thể lọc tiêu đề bằng ngôn ngữ kịch bản yêu thích của mình. Vì tiêu đề http bị chấm dứt bởi \ r \ n \ r \ n, trong các hệ thống giống như unix (tôi đoán đó là bạn đang ở đâu) thực sự có nghĩa là "tất cả các dòng tiêu đề cộng với một dòng chỉ chứa \ r", điều này không khó khăn lắm như có vẻ thoạt nhìn

Sử dụng gawk (vâng, GNU awk!, Vì RT không được biết bởi các phiên bản awk khác, AFAIK), đây có thể là lệnh của bạn:

netcat ... | gawk 'NR==1,/^\r$/ {next} {printf "%s%s",$0,RT}' > something.out

Nếu câu hỏi "tại sao không chỉ sử dụng in thay vì phương pháp xấu xí này?" sẽ bật lên, câu trả lời là: chúng tôi không biết liệu bản ghi cuối cùng (cái mà gawk nghĩ là bản ghi) có bị chấm dứt với dòng mới hay không, và chúng tôi cũng không biết liệu sự tồn tại của dòng mới này có ý nghĩa hay không hay không. Chúng tôi có thể chắc chắn nếu chúng tôi viết nó ở đó chỉ khi nó ở đó trong đầu vào. RT sẽ trống nếu không như vậy, đầu ra sẽ là những gì đã được gửi và không nhiều hơn.

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.