كيف يمكنني الاحتفاظ www :: ميكانيكية من retirects التالية؟

StackOverflow https://stackoverflow.com/questions/894672

  •  23-08-2019
  •  | 
  •  

سؤال

لدي برنامج نصي بيرل يستخدم 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) - من الواضح أنه لا يتبع إعادة التوجيه.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top