gpt4 book ai didi

regex - 等待 CloudFlare DDOS 保护 LWP Perl

转载 作者:行者123 更新时间:2023-12-04 02:03:22 28 4
gpt4 key购买 nike

编辑:最终使用 WWW::Mechanize::Firefox。我在下面回答了我自己的问题。

我正在尝试访问一个网站并下载它的页面。站点上的cloudflare DDOS保护偶尔会亮起,我无法让LWP通过。我可以成功检测到页面 带有正则表达式 /Ray ID: [a-f0-9]*/ 的 cloudflare 启动页面,但每当我尝试再次连接时,我只需使用新的 Ray ID 获得相同的启动画面。这是一个(精简的)代码示例:

use LWP::UserAgent;
$ua = LWP::UserAgent->new;
$ua->agent('Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Firefox/31.0 Iceweasel/31.3.0');
$signin_url = 'my url';
$signin_page = $ua->get($signin_url);
if($signin_page->content =~ /Ray ID: ([a-f0-9]*)/i) {
print "DDOS protection page here\n";
#more code to retry, but just gets back into this part of the IF
} else {
print "Not the DDOS page\n";
#now I would save to file
}

既然那行不通,我需要能够以另一种方式进行。

最佳答案

DDOS 保护拦截请求,设置 cookie,然后将您重定向到目标页面。您必须在下一次请求时提交从拦截中获得的 cookie 才能通过 DDOS 保护。 LWP如果您创建一个 cookie jar ,将为您执行此操作。

LWP::UserAgent->new( cookie_jar => {} )

WWW::Mechanize ,LWP::UserAgent 的子类,为您将该参数传递给 LWP::UserAgent,因此您也可以使用

 use WWW::Mechanize;
my $ua = WWW::Mechanize->new;

LWP::UserAgentWWW::Mechanize UA有cookie jar时,get会自动接受cookie,按照重定向,并在后续请求中提交cookie。

关于regex - 等待 CloudFlare DDOS 保护 LWP Perl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29057331/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com