Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: разработка для Web > Как определить, на порту сидит прокси или апач


Автор: StealtH 16.9.2004, 11:03
Вообщем такая задачка, как определить программно, какой сервис запущен на указанном порту, а именно прокси это или апач. Всем известно, что прокси обитают на портах 80, 8080 и т.д., список большой, на этих же портах может сидет и апач, но вот как по http-заголовкам определить принадлежность именно к этому сервису, а не к веб. Есть скрипт, который сканирует определенные порты на наличие прокси, после сканирования он должен определить наличие на этом порту прокси, как это сделать программно, что нужно послать в порт, и как выловить ответ?
Хелп, плиз очень надо, если возможно, то примерчик не помешает smile.gif
Заранне благодарен.

Автор: ida 21.9.2004, 13:16
И как давно Апачи стали обитать на каких-либо портах, кроме 80-го?... Скорее всего по ответу определить, что это НЕ апач (значит, что-то другое), поскольку структура ответа http-сервера заранее известна, а прокси ИМХО ответит что-нибудь другое. В порт послать http-запрос, соответственно, как будто обращаясь к веб-серверу. И в строке ответа Host: будет адрес хоста, на котором находится запрашиваемый объект (страница index.html, к примеру). Нет объекта - нет Апача.

Автор: Akina 21.9.2004, 14:11
ida
Цитата
И как давно Апачи стали обитать на каких-либо портах, кроме 80-го?...

Ну, это зависит от настроек...

StealtH
Цитата
прокси это или апач

Да собсно послать ему 2 штуки GET-ов - на его адрес и на какой-нить другой адрес. И проанализировать ответ. Апача ответит на GET по своему адресу, но не отреагирует на другой адрес - или отреагирует ошибкой. Прокся должна наоборот, не ответить или ответить ошибкой на GET к своему адресу и нормально ответить на GET к чужому адресу. Собсно если хоть немного представляешь как работает прокси и как веб-сервер - должен понимать еще и какая будет разница при обращении по IP и по URI... т.е. формально различить можно.

Однако в общем случае задача неразрешима - представь себе что стоИт прокся, у которой этот порт смаппирован на Апачу на другой машине... можно придумать случаи и посложнее...

А вообще - зачем?

Автор: StealtH 22.9.2004, 07:43
Цитата
Да собсно послать ему 2 штуки GET-ов - на его адрес и на какой-нить другой адрес. И проанализировать ответ. Апача ответит на GET по своему адресу, но не отреагирует на другой адрес - или отреагирует ошибкой. Прокся должна наоборот, не ответить или ответить ошибкой на GET к своему адресу и нормально ответить на GET к чужому адресу.


Это понятно что он должен как-то реагировать, если порт вообще живой, он и реагирует, если апач то пишет document.html(к примеру) not found on this server, прокси на запрос выдает запрашиваемый документ, или ошибку как правило 500(connect: Unknown error), об этом в данный момент вопрос не стоит. Сейчас трабла в том, каким способом отловить ошибку и обработать ее


$req = HTTP::Request->new(GET => $host);
use HTTP::Status;
if ($req != RC_OK) {
print status_message($req), "\n"; }

как-то не особо действует, хелп по данному вопрос особенно краток, может я не так это все вызываю...

Подскажите по данному поводу

Цитата
А вообще - зачем?

Да вот есть идея одна, должна получиться замечательная утилита, доделаю подкину ссылку

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)