كيف يمكنني الاحتفاظ www :: ميكانيكية من retirects التالية؟
سؤال
لدي برنامج نصي بيرل يستخدم www :: ميكانيكية لقراءة من ملف وأداء بعض المهام الآلية على موقع ويب. ومع ذلك، يستخدم موقع الويب إعادة توجيه 302 بعد كل مرة أطلب فيها صفحة معينة. لا أريد إعادة توجيه (الصفحة التي تعيد توجيهها لتستغرق وقتا طويلا للاستجابة)؛ أريد فقط حلقة من خلال الملف واستدعاء الرابط الأول مرارا وتكرارا. لا أستطيع معرفة كيفية جعل www :: ميكانيكية لا اتبع إعادة التوجيه. أي اقتراحات؟
المحلول
WWW::Mechanize
هي فرعية من LWP::UserAgent
. وبعد حتى تتمكن من استخدام أي LWP::UserAgent
طرق.
my $mech = WWW::Mechanize->new();
$mech->requests_redirectable([]);
نصائح أخرى
www :: ميكانيكي هو فئة فرعية من LWP :: UserAgent؛ يمكنك تعيين خيارات MAX_REDIRET أو طلبات القابلة لإعادة المجهز في المنشئ كما تريد مع LWP :: UserAgent.
يمكنك استخدام $ وكيل-> Max_Redirect (0)؛، مثل في هذا المثال:
#!/usr/bin/perl -w
use strict;
use WWW::Mechanize;
my $agent = WWW::Mechanize->new( 'autocheck' => 1, 'onerror' => undef, );
$agent->max_redirect( 0 );
$agent->get('http://www.depesz.com/test/redirect');
printf("Got HTTP/%s from %s.\n", $agent->response->code, $agent->uri);
$agent->max_redirect( 1 );
$agent->get('http://www.depesz.com/test/redirect');
printf("Got HTTP/%s from %s.\n", $agent->response->code, $agent->uri);
عند تشغيل المطبوعات:
Got HTTP/302 from http://www.depesz.com/test/redirect.
Got HTTP/200 from http://www.depesz.com/.
لذلك، مع max_redirect (0) - من الواضح أنه لا يتبع إعادة التوجيه.