2011-01-31 17 views
6

Tôi có một số mã java cả mới (sử dụng Apache commons http thư viện) và cũ (sử dụng java 1,4 API) và đang cố gắng để viết lại mã cũ bằng cách sử dụng các thư viện commons apache mới hơn. Tuy nhiên, nó không hoạt động và tôi đang đấu tranh để tìm hiểu lý do tại sao. Các yêu cầu đang được gửi, nhưng mã mới hơn của tôi hết thời gian trên máy chủ nhận mà tôi không có quyền truy cập. Vì mã cũ hoạt động, tôi phải bỏ qua yêu cầu http. Nó sẽ rất hữu ích để sử dụng một số loại sniffer giao thông HTTP để kiểm tra chính xác những gì đang được gửi để tôi có thể thấy những gì khác biệt có.Cách tốt nhất để phân tích lưu lượng truy cập http được gửi bởi mã java của tôi?

Tôi đã tải xuống một vài trình đánh số http từ web (this onethat one) nhưng không chụp bất kỳ dữ liệu http nào được gửi bởi mã java của tôi (nhưng chúng hoạt động khi tôi gửi yêu cầu ngẫu nhiên từ trình duyệt). Có ý tưởng nào về cách tôi có thể lấy tay trên dữ liệu này không?

Trả lời

8

Sử dụng wireshark.

Thật tuyệt vời, miễn phí, mã nguồn mở, đa nền tảng và có thể làm nổi bật các lớp mạng khác nhau và nó không chạy từ một số trang web đáng ngờ trông giống như spam SEO.

Snort là một thiết bị tốt khác, nhưng nó hướng đến phát hiện xâm nhập và phản hồi tự động hơn. Tuy nhiên, nó có một sniffer tuyệt vời.

+2

Lời cảm ơn hoàn hảo. Cảm thấy một chút giống như có một cửa hàng toàn bộ phần cứng tại dispoal của tôi khi tất cả tôi cần là một tuốc nơ vít, nhưng hey, công việc làm! –

+0

Mẹo thông tin thân thiện, bạn sẽ phải thực hiện một số thao tác xung quanh để có được wireshark để nắm bắt lưu lượng truy cập [localhost] (http://wiki.wireshark.org/CaptureSetup/Loopback) và rất khó nắm bắt được lưu lượng truy cập localhost. – hooknc

0

Nếu bạn cố gắng đánh hơi loopback của bạn (127.0.0.1) - thats bit phức tạp và bạn nên cài đặt trình điều khiển đặc biệt cho điều đó.
Tôi khuyên bạn nên gửi yêu cầu đến máy chủ "giả" và đánh lừa nó.
u có thể ngửi bằng "WireShark" hoặc "burpSuite" (nếu u có thể định cấu hình chương trình ur đi qua máy chủ proxy).
gl.

3

Thông thường tôi thấy rằng việc dò tìm gói quá thấp để khắc phục sự cố HTTP. Hãy thử một proxy ngược lại; cá nhân tôi thích Charles vì nó hoạt động giống nhau trong Windows, Mac OS X và Linux; Fiddler là phổ biến trên Windows.

+0

Cảm ơn gợi ý, nhưng (và tôi có thể sắp sửa vượt qua đầu của tôi ở đây) chương trình java của tôi không tương tác với web, nó chỉ đơn giản là giao tiếp với máy chủ cục bộ qua http và vì vậy Fiddler không nắm bắt được yêu cầu của tôi . –

+0

Charles hoạt động tốt cho các loại tình huống này. Để cấu hình Commons HttpClient sử dụng máy chủ proxy cục bộ: 'client.getHostConfiguration(). SetProxy (" localhost ", 8888)'. –

0

bạn có thể chỉ định SOCKS Proxy. bình thường Java sử dụng SocksSocketImpl - tức là nó hỗ trợ các proxy SOCKS tự động.

Bất kỳ trình thám thính nào khác cũng sẽ làm như vậy