Forum Webscript.Ru
Общие => Веб-технологии => Тема начата: vlaman от 15 Декабря 2002, 16:26:59
-
короче написал скрипт запрашивающий данные с сайта с помощью LWP на перле. он нормально работает и всё такое. испытывался на yahoo.com - делал поиск слова perl (почти как в примерах из документации HTTP::Request::Form). но как только я сделал useragent такой как у microsoft explorer - yahoo перестал воспринимать параметры которые я ему передаю. я пробовал разные useragent строки от разных explorer-ов - но тщетно - yahoo их отбривает. когда написал useragent например "Windows IE 5.0" он воспринимает нормально и всё работает. как можно обмануть такой сайт???нужен модуль для перла или совет. буду благодарен за советы!
-
Попробуй с другими сайтами, тоже есть разница?
А зачем тебе нужно быть именно MSIE, конечная цель какая?
В общем случае нужно сопоставлять все заголовки передаваемые твоим скриптом и MSIE.
-
мне нужно сделать робота, который будет получать с сайта определённую информацию, и чтобы никто не обращал на это внимание (в смысле сисадмин). на yahoo стоит какая-то фильтрация непонятная по user-agent-у. придется ставить проксю какую-нить для отладки видимо :(
-
Если делаешь что-то незаконное или просто некорректное по отношению к yahoo, то нормальный админ все равно это отследит кем бы ты не прикидывался - вычислить робота можно.
Кстати, с куками твой скрипт корректно работает?
Я так понял, что по Perl у тебя вопросов нет.
Уехали в Веб-технологии.
-
vlaman попробуй с другими сайтами, скорее всего на Яху проверка по кукам или яве. И если работает Windows IE 5.0 то что тебе мешает использовать этот ЮзерАгент?
-
нет всё дело не в yahoo - просто я на нём начал эксперименты с libwww-perl и столкнулся с такой ерундой что ничего не работает (в смысле поиск со скрипта). стал разбиратся и понял что дело в user-agente.
---- test.pl -------------
use URI::Heuristic;
use HTTP::Request;
use HTTP::Request::Form;
use HTTP::Request::Common;
use HTTP::Cookies;
use HTML::TreeBuilder;
use LWP::UserAgent;
use HTML::Form;
my $ua = LWP::UserAgent->new ( keep_alive => 1,
timeout => 60,
agent => "Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt) ");
$ua -> cookie_jar ( HTTP::Cookies->new(file => "cookies.tmp", autosave => 1) );
my $url="http://www.yahoo.com";
my $url = URI::Heuristic::uf_urlstr ( $url );
print "Getting $url...\\n";
my $response = $ua->request(GET $url);
if ( $response -> is_error () )
{
printf "Fatal error: %s\\n", $response -> status_line;
}
printf "Got \\"%s\\"!\\n", $response -> title();
my $tb = HTML::TreeBuilder->new;
$tb->parse ($response->content);
my @forms = @{$tb->extract_links(qw(FORM))};
my $form = HTTP::Request::Form->new($forms[0][1], $url);
my $name="p";
my $value="perl";
print "Setting $name = $value\\n";
$form->field($name, $value);
my $response = $ua->request($form->press);
print $response->title;
-------- test.pl кончается
этот листинг получает страничку результатов поиска без никаких аргументов. Если же в user-agente слово mozilla заменить хотя бы на mazilla то всё работает на ура. может дело и в куках - но я их вроде как обрабатываю. помогите плиз!!!!