Автор Тема: Можно как-нибудь обмануть сервер?  (Прочитано 3589 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Loiso

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 22
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Можно как-нибудь обмануть сервер?
« : 07 Ноября 2001, 22:42:14 »
С помощью libwww, методом get (post, head) пытаюсь забрать содержимое сервера, но получаю страничку такого содержания:

Method Not Implemented
get to /xwww/proxy.htm not supported.
Invalid method in request get /xwww/proxy.htm HTTP/1.0
--------------------------------------------------------------------------------
Apache/1.3.19 Server at http://www.samair.ru Port 80

Я думал что CGI полностью эмулирует клиента. Т.е. любой сервер будет на 100% уверен,что к нему кто-то зашел через IE (NN). Какой метод использует IE при доступе к страничкам? Можно как-нибудь обмануть сервер?

Оффлайн lodevar

  • Сеньор-Помидор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 757
  • +0/-0
  • 2
    • Просмотр профиля
    • http://lodevar.hut.ru
Можно как-нибудь обмануть сервер?
« Ответ #1 : 08 Ноября 2001, 09:39:27 »
а скриптик покажешь?
С наилучшими пожеланиями. LODEVAR

Оффлайн Loiso

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 22
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Можно как-нибудь обмануть сервер?
« Ответ #2 : 08 Ноября 2001, 10:29:03 »
Вот:

#!c:/perl/bin/perl.exe
use CGI;
use LWP::UserAgent;
$ua=new LWP::UserAgent;
$ua->agent("AgentName/0.1 " . $ua->agent);

$req = HTTP::Request -> new (\'get\',\'http://www.samair.ru/xwww/proxy.htm\');
$req->content_type(\'application/x-www-form-urlencoded\');
$req->content(\'match=www&errors=0\');
$ua->request($req, "samara.htm");

print "Content-type: text/plain\\n\\n";

open (PROXY, "< samara.htm");

$i=0;
while ($prx=) {
   if ($prx=~/[0-9\\.:]{11,20}/) {
      $i++;
      $prx=~/([0-9\\.:]{11,20})/;
      print $i." ".$1."\\n";
   }
}

close (PROXY);

Кстати, у меня по этому скриптику есть еще один вопросик...
Когда я писал этот скрипт, мой броузер перестал определать файл как cgi-скрипт (спрашивает запустить файл или сохранить его на диске)! Другие скрипты работали нормально! Я решил выяснить причину, ей оказалась строка print $i." ".$1."\\n"; (которая в конце скрипта). Точнее только эта ее часть: $i." ".$1."\\n"; Когда ее убираешь, все начинает работать нормально. Но если ее убрать, запустить скрипт на выполнение, потом добавить строку обратно и нажать в броузере рефрешь - все будет работать! Почему может быть такая фигня? Может это просто какой-то глюк???

Оффлайн Wowik

  • The Warlock
  • Пользователь
  • **
  • Сообщений: 88
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Можно как-нибудь обмануть сервер?
« Ответ #3 : 08 Ноября 2001, 11:37:22 »
твой браузер воспринимает выводимую скриптом инфу как текстовый файл попробуй вместо print "Content-type: text/plain\\n\\n";
вставь print "Content-type: text/html\\n\\n";
должно заработать


Цитировать
Я думал что CGI полностью эмулирует клиента. Т.е. любой сервер будет на 100% уверен,что к нему кто-то зашел через IE (NN). Какой метод использует IE при доступе к страничкам?

Вот это я как понял, ты бездумно выдернул из хелпа :)
Цитировать
$ua->agent("AgentName/0.1 " . $ua->agent);

Эта строчка и указывает агента :)
Аааа вообще весь кусок из хелпа... дык метод get для твоего случая не проще использовать?
А ларчик просто открывался ...

Оффлайн lodevar

  • Сеньор-Помидор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 757
  • +0/-0
  • 2
    • Просмотр профиля
    • http://lodevar.hut.ru
Можно как-нибудь обмануть сервер?
« Ответ #4 : 08 Ноября 2001, 11:38:11 »
Во-первых: там get, http  и т.д. не поддерживается. Если написать, например, http://www.webscript.ru/ , то все будет ок. Всю страничку он тебевыплюнет.
Во-вторых: пропиши нормальный юзер-агент, наример, Mozilla/5.0.
В-третьих: какой контент тип пишешь? "application/x-www-form-urlencoded". Нельзя ли обойтись "text/html"?
С наилучшими пожеланиями. LODEVAR

Оффлайн Loiso

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 22
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Можно как-нибудь обмануть сервер?
« Ответ #5 : 08 Ноября 2001, 14:42:14 »
Цитировать
твой браузер воспринимает выводимую скриптом инфу как текстовый файл попробуй вместо print "Content-type: text/plain\\n\\n";
вставь print "Content-type: text/html\\n\\n";
должно заработать

Не... это не из-за этого... Мне и нужно чтобы он выводил не html, а текст. С другими серверами все работает отлично и с plain. Не работает только с этим сайтом!
Цитировать
Вот это я как понял, ты бездумно выдернул из хелпа  
$ua->agent("AgentName/0.1 " . $ua->agent);

Точно!!! Так дело и было... Не очень догнался чего там вообще писать можно...
 
Цитировать
Аааа вообще весь кусок из хелпа... дык метод get для твоего случая не проще использовать?

А я чего использовал???
Цитировать
Во-первых: там get, http и т.д. не поддерживается. Если написать, например, http://www.webscript.ru/ , то все будет ок. Всю страничку он тебевыплюнет.

Чего-то я не очень понял... Можно поподробнее?

Попробовал последовать вашим советам (насколько я их понял). У меня получилось что-то вроде:

#!c:/perl/bin/perl.exe
use CGI;
use LWP::UserAgent;
$ua=new LWP::UserAgent;
$ua->agent("Mozilla/5.0");

$req = HTTP::Request -> new (\'get\',\'http://www.samair.ru/\');
$req->content_type(\'text/html\');
$req->content(\'match=www&errors=0\');
$res=$ua->request($req);

open (SAMARA, "> samara.htm");
print SAMARA $res->content;
close SAMARA;

print "Content-type: text/plain\\n\\n";

open (PROXY, "< samara.htm");

$i=0;
while ($prx=) {
   if ($prx=~/[0-9\\.:]{11,20}/) {
      $i++;
      $prx=~/([0-9\\.:]{11,20})/;
      print $i." ".$1."\\n";
   }
}
close (PROXY);

Да, кстати, то что метод get не поддерживается он пишет не в результате выполнения программы, а в файле samara.htm

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28