วิธีการดัมพ์คำร้องขอ HTTP ทั้งหมดด้วย apache


27

เป็นไปได้ที่จะถ่ายโอนคำขอ HTTP ทั้งหมดโดย apache? ฉันต้องติดตามส่วนหัว HTTP ทั้งหมดของคำขอที่มาถึง ทำอย่างไร

คำตอบ:


30

ฉันคิดว่าสิ่งที่คุณต้องการแทน Apache อาจเป็นตัววิเคราะห์แพ็คเก็ตหรือที่เรียกว่าแพ็คเก็ตดมกลิ่น สองที่ได้รับความนิยมมากที่สุดน่าจะเป็นTCPDumpและWiresharkซึ่งทั้งสองอย่างนี้ฟรีและมีเวอร์ชั่นสำหรับระบบปฏิบัติการ Windows และ * nix สิ่งเหล่านี้จะแสดงปริมาณการใช้งานทั้งหมดที่เข้ามาในอินเทอร์เฟซไม่ใช่เฉพาะสิ่งที่ Apache เห็น แต่คุณสามารถใช้ตัวกรองเพื่อ จำกัด พอร์ตที่ระบุเช่น 80 สำหรับ http

tcpdump:
คำสั่งต่อไปนี้เรียกใช้จากเซิร์ฟเวอร์จะแสดงแพ็กเก็ตทั้งหมดที่คุณกำหนดสำหรับพอร์ต 80:

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

capital X switch ทิ้งส่วนของข้อมูลเป็น hex และ ASCII s สลับกับ 0 หมายถึงการรับแพ็คเก็ตทั้งหมด 'tcp dst port 80' หมายถึงการกรองและแสดงเฉพาะแพ็กเก็ตที่กำหนดไว้สำหรับพอร์ต 80 ในส่วนหัว tcp

Wireshark:
สำหรับผู้ใช้ที่เป็นมิตรมากขึ้นถ้าคุณมี GUI ที่ใช้งานให้พิจารณา wireshark (รู้จักกันอย่างเป็นทางการว่า ethereal)


1
ขอบคุณไคล์ฉันจะดึงข้อมูลส่วนหัว HTTP จาก uoutput ของ tcpdump ได้อย่างไร
อเล็กซ์

1
Alex: คุณรู้อะไรไหม Wireshark จะทำให้มันง่ายขึ้นมาก คุณสามารถใช้ชื่อไฟล์ -r เพื่อบันทึกดัมพ์ไปยังไฟล์จากนั้นเปิดด้วย wireshark บนเดสก์ท็อปของคุณ
Kyle Brandt

โอ้และปล่อย 'dst' หากคุณต้องการคำตอบด้วย
Kyle Brandt

1
-Aสำหรับข้อความเท่านั้น (ไม่มีการถ่ายโอนฐานสิบหก):sudo tcpdump -A -s 0 'tcp dst port 80'
Brent Faust

12

อาจจะทิ้งคุกกี้ ? มิฉะนั้น - ดูที่mod_dumpio


1
mod_dumpio ฟังดูยอดเยี่ยม! อาจเป็นวิธีที่ง่ายกว่าในการถ่ายโอนข้อมูลหากใช้ SSL (แม้ว่า wirehsark ก็สามารถทำได้เช่นกัน) +1 :-)
Kyle Brandt

8

การดักจับแพ็คเก็ตขั้นพื้นฐานเป็นเรื่องง่ายด้วย ngrep ไฮบริดของ tcpdump และ grep ในบางสถานการณ์หากคุณต้องการดูว่าเว็บเบราว์เซอร์สื่อสารกับเว็บเซิร์ฟเวอร์อย่างไรและตรวจสอบส่วนหัว HTTP
ในตัวอย่างนี้ให้เรียกใช้ ngrep บนเว็บเซิร์ฟเวอร์ดังนี้:

$ ngrep port 80

คุณสามารถเลือกที่จะกรองคำขอ http ไปยังคำขอ "GET /" ไปยังพอร์ต 80 ได้โดย:

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

ฝั่งไคลเอ็นต์มีเครื่องมือที่มีประโยชน์ชื่อ Tamper Data เป็นส่วนเสริมของ Firefox ซึ่งให้อำนาจในการดูบันทึกและปรับเปลี่ยนคำขอ HTTP ขาออก
คุณสามารถค้นหาข้อมูลเพิ่มเติมได้ที่นี่


7

แทนที่จะใช้ tcpdump หรือ wireshark ให้ใช้ tcpflow เป็นการแทนที่สำหรับ tcpdump แต่สร้างไฟล์สำหรับแต่ละด้านของการเชื่อมต่อดังนั้นคุณไม่ต้องพยายามถอดรหัสสตรีมด้วยตัวเอง


ขอบคุณสำหรับสิ่งนี้. ฉันกำลังใช้ mod_negotiate และ curl ของฉัน () เลือกไฟล์. bak เมื่อต้องการเป็น. php ในขณะที่เบราว์เซอร์พบ. php ถั่วเปลือกแข็งแตก
mckenzm

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