Cách kết xuất toàn bộ yêu cầu HTTP bằng apache


27

Có thể kết xuất toàn bộ yêu cầu HTTP bằng apache không? Tôi cần theo dõi tất cả các tiêu đề HTTP của các yêu cầu không liên quan. Làm thế nào để làm điều đó?

Câu trả lời:


30

Tôi nghĩ những gì bạn muốn thay vì Apache có thể là một bộ phân tích gói , Còn được gọi là trình thám thính gói. Hai trong số những cái phổ biến nhất có lẽ là TCPDumpWireshark , cả hai đều miễn phí và có phiên bản cho hệ điều hành Windows và * nix. Những thứ này sẽ cho bạn thấy tất cả lưu lượng truy cập đến trên một giao diện, không chỉ những gì Apache nhìn thấy. Nhưng bạn có thể sử dụng các bộ lọc để giới hạn ở một cổng được chỉ định, chẳng hạn như 80 cho http.

tcpdump:
Lệnh sau chạy từ máy chủ sẽ hiển thị cho bạn tất cả các gói được dành cho cổng 80:

sudo tcpdump -s 0 -X 'tcp dst port 80'

Công tắc vốn X bỏ tải trọng trong hex và ASCII. Công tắc s với 0 có nghĩa là lấy toàn bộ gói. 'tcp dst port 80' có nghĩa là để lọc và chỉ hiển thị các gói được dành cho cổng 80 trong tiêu đề tcp.

Wireshark:
Đối với phiên bản thân thiện hơn với người dùng, nếu bạn có GUI đang chạy, hãy xem xét wireshark (chính thức được gọi là ethereal).


1
Cảm ơn Kyle, làm cách nào để trích xuất thông tin tiêu đề HTTP từ uoutput của tcpdump?
Alex

1
Alex: Bạn biết không, Wireshark sẽ làm điều đó dễ dàng hơn nhiều. Bạn có thể sử dụng tên tệp -r để lưu kết xuất vào một tệp và sau đó mở nó bằng wireshark trên máy tính để bàn của bạn.
Kyle Brandt

Ồ, và bỏ 'dst' nếu bạn cũng muốn trả lời.
Kyle Brandt

1
-Achỉ dành cho văn bản (không có kết xuất hex):sudo tcpdump -A -s 0 'tcp dst port 80'
Brent Faust

12

có thể bán phá giá bánh quy ? mặt khác - nhìn vào mod_dumpio .


1
mod_dumpio nghe hay đấy! Có lẽ là cách dễ dàng hơn để loại bỏ thông tin nếu sử dụng SSL (mặc dù dây điện cũng có thể làm điều đó). +1 :-)
Kyle Brandt

8

Việc đánh hơi gói cơ bản rất dễ dàng với ngrep một sự kết hợp giữa tcpdump và grep. Trong một số trường hợp nhất định nếu bạn muốn xem cách trình duyệt web giao tiếp với máy chủ web và kiểm tra các tiêu đề HTTP.
Trong ví dụ này, hãy chạy ngrep trên máy chủ web như thế này:

$ ngrep port 80

bạn cũng có thể chọn lọc yêu cầu http thành yêu cầu "GET /" tới cổng 80 bằng cách:

$ ngrep -q '^GET .* HTTP/1.[01]'

Phía máy khách, có một công cụ hữu ích có tên Tamper Data, đó là tiện ích mở rộng Firefox cung cấp cho bạn khả năng xem, ghi lại và thậm chí sửa đổi các yêu cầu HTTP gửi đi.
Bạn có thể tìm thêm thông tin ở đây


7

Thay vì sử dụng tcpdump hoặc wireshark, hãy sử dụng tcpflow. Đây là một sự thay thế cho tcpdump, nhưng tạo một tệp cho mỗi bên của mỗi kết nối, do đó bạn không phải tự mình giải mã luồng.


Cảm ơn vì điều đó. Tôi đang sử dụng mod_negotiate và curl () của tôi đã chọn các tệp .bak theo sở thích .php trong khi các trình duyệt tìm thấy .php. Một hạt cứng để nứt.
mckenzm

0

Apache có chức năng đó được tích hợp sẵn; chỉ cần tăng mức độ nhật ký lên trace7hoặc trace8:

LogLevel trace8

Lưu ý rằng điều này sẽ đổ rất nhiều dữ liệu. Bạn đa được cảnh bao.

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.