| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: разработка для Web > Как определить, на порту сидит прокси или апач |
| Автор: StealtH 16.9.2004, 11:03 |
| Вообщем такая задачка, как определить программно, какой сервис запущен на указанном порту, а именно прокси это или апач. Всем известно, что прокси обитают на портах 80, 8080 и т.д., список большой, на этих же портах может сидет и апач, но вот как по http-заголовкам определить принадлежность именно к этому сервису, а не к веб. Есть скрипт, который сканирует определенные порты на наличие прокси, после сканирования он должен определить наличие на этом порту прокси, как это сделать программно, что нужно послать в порт, и как выловить ответ? Хелп, плиз очень надо, если возможно, то примерчик не помешает Заранне благодарен. |
| Автор: ida 21.9.2004, 13:16 |
| И как давно Апачи стали обитать на каких-либо портах, кроме 80-го?... Скорее всего по ответу определить, что это НЕ апач (значит, что-то другое), поскольку структура ответа http-сервера заранее известна, а прокси ИМХО ответит что-нибудь другое. В порт послать http-запрос, соответственно, как будто обращаясь к веб-серверу. И в строке ответа Host: будет адрес хоста, на котором находится запрашиваемый объект (страница index.html, к примеру). Нет объекта - нет Апача. |
| Автор: Akina 21.9.2004, 14:11 | ||||
ida
Ну, это зависит от настроек... StealtH
Да собсно послать ему 2 штуки GET-ов - на его адрес и на какой-нить другой адрес. И проанализировать ответ. Апача ответит на GET по своему адресу, но не отреагирует на другой адрес - или отреагирует ошибкой. Прокся должна наоборот, не ответить или ответить ошибкой на GET к своему адресу и нормально ответить на GET к чужому адресу. Собсно если хоть немного представляешь как работает прокси и как веб-сервер - должен понимать еще и какая будет разница при обращении по IP и по URI... т.е. формально различить можно. Однако в общем случае задача неразрешима - представь себе что стоИт прокся, у которой этот порт смаппирован на Апачу на другой машине... можно придумать случаи и посложнее... А вообще - зачем? |
| Автор: StealtH 22.9.2004, 07:43 | ||||
Это понятно что он должен как-то реагировать, если порт вообще живой, он и реагирует, если апач то пишет 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"; } как-то не особо действует, хелп по данному вопрос особенно краток, может я не так это все вызываю... Подскажите по данному поводу
Да вот есть идея одна, должна получиться замечательная утилита, доделаю подкину ссылку |