2011-01-31 2 views
6

У меня есть java-код как новый (с использованием Apache commons http-библиотек), так и старый (строго с использованием API Java 1.4), и я пытаюсь переписать старый код с использованием новых библиотек apache commons. Однако он не работает, и я изо всех сил пытаюсь выяснить, почему. Запросы отправляются, но мой более поздний код отключается на принимающем сервере, к которому у меня нет доступа. Поскольку старый код работает, я должен был отключить HTTP-запрос. Было бы очень полезно использовать какой-то сниффер трафика HTTP для проверки того, что отправляется, чтобы я мог видеть, какие отличия есть.Лучший способ анализа http-трафика, отправленного моим Java-кодом?

Я загрузил несколько http sniffers из Интернета (this one и that one), но не захватил ни один из HTTP-данных, отправляемых моим java-кодом (но они работают, когда я отправляю случайные запросы из браузера). Какие-нибудь идеи о том, как я могу получить эти данные?

ответ

8

Использование wireshark.

Это отличный, бесплатный, с открытым исходным кодом, кросс-платформенный и может выделять различные сетевые уровни, и он не работает с какого-то сомнительного веб-сайта, который выглядит как спам SEO.

Snort - еще одна хорошая, но она больше ориентирована на обнаружение вторжений и автоматические ответы на это. Тем не менее, у него отличный сниффер.

+2

Отличное спасибо. Чувствуется немного похоже на то, что у меня есть весь хозяйственный магазин, когда все, что мне нужно, это отвертка, но эй, работа! –

+0

Дружественный информационный совет, вам нужно будет совершить некоторое futzing, чтобы заставить wirehark захватить трафик [localhost] (http://wiki.wireshark.org/CaptureSetup/Loopback), и довольно сложно захватить локальный трафик Windows. – hooknc

0

Если вы попытаетесь обнюхать петлю (127.0.0.1) - это немного сложно, и для этого вам нужно установить специальный драйвер.
Я предлагаю вам отправить запрос на «поддельный» сервер и понюхать его.
u можете нюхать с помощью «WireShark» или «burpSuite» (если вы можете настроить программу ур, которая проходит через прокси-сервер).
gl.

3

Обычно я обнаружил, что обнюхивание пакетов слишком низкое для устранения неполадок HTTP. Попробуйте обратный прокси; лично мне нравится Charles, поскольку он работает так же в Windows, Mac OS X и Linux; Fiddler является популярным в Windows.

+0

Спасибо за предложение, но (и я, возможно, собираюсь проникнуть сюда) моя программа java не взаимодействует с сетью, она просто общается с локальным сервером через http и поэтому Fiddler не записывает мои запросы , –

+0

Чарльз отлично подходит для таких ситуаций. Чтобы настроить Commons HttpClient для использования локального прокси-сервера: 'client.getHostConfiguration(). SetProxy (" localhost ", 8888)'. –

0

вы можете указать SOCKS Proxy. Обычно Java использует SocksSocketImpl - то есть он автоматически поддерживает SOCKS-прокси.

Любой другой сниффер будет делать также

Смежные вопросы