gpt4 book ai didi

perl - 使用 perl 和 Firefox::Marionette 下载文件

转载 作者:行者123 更新时间:2023-12-04 10:13:44 27 4
gpt4 key购买 nike

尝试使用 perl 和 Firefox::Marionette 自动化一些站点爬行,尤其是文件下载.

这是简短的示例代码(用于文件下载)。

#!/usr/bin/env perl

use 5.014;
use warnings;

use Firefox::Marionette();
use Path::Tiny;

my $ff = Firefox::Marionette->new();
#my $ff = Firefox::Marionette->new(
# visible => 1
#);

#my $dwl = 'https://www.curseforge.com/wow/addons/dazaralor-totems/download/2610166/file'; # direct download link (not work correctly)
my $dwl = 'https://www.curseforge.com/wow/addons/dazaralor-totems/download/2610166'; # download link, leading to redirect page
$ff->go($dwl);

while(!$ff->downloads()) { sleep 1 }
while($ff->downloading()) { sleep 1 }
foreach my $p ($ff->downloads()) {
say $p;
path($p)->copy('./toto.zip');
}
$ff->quit;

运行脚本,它挂起。所以,尝试了 visible => 1获取真实窗口,脚本挂起,因为等待打开/保存对话框的确认,如下图所示:

enter image description here

单击“确定”后,将下载文件。

问题是,如何绕过确认对话框,才能在 headless 模式下运行脚本而无需手动单击。

此外,欢迎使用任何其他方法如何从上述站点下载文件,它在 cloudflare 后面,所以我没有使用一些基本的 LWP .

最佳答案

您可以通过设置 mime_types 绕过下载弹出窗口。文件(有关更多信息,请参阅 this 答案)。使用您提供的 MIME 类型 application/x-amz-json-1.0 ,以下在 Ubuntu 19.10 上对我有用:

use feature qw(say);
use strict;
use warnings;
use Path::Tiny;
use Firefox::Marionette ();
use Firefox::Marionette::Capabilities;

my $ff = Firefox::Marionette->new(
mime_types => ['application/x-amz-json-1.0'],
visible => 0,
capabilities => Firefox::Marionette::Capabilities->new(
page_load_strategy => 'none'
)
);
my $dwl = 'https://www.curseforge.com/wow/addons/dazaralor-totems/download/2610166/file';
$ff->go($dwl);
while(!$ff->downloads()) { say "No downloads yet.."; sleep 1 }
while($ff->downloading()) { say "Downloading.."; sleep 1 }
foreach my $p ($ff->downloads()) {
path($p)->copy('./toto.zip');
}
$ff->quit;

关于perl - 使用 perl 和 Firefox::Marionette 下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61184476/

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