gpt4 book ai didi

perl - 无法使用 perl 模块 HTTP::Request::Generator 传递自定义 header

转载 作者:行者123 更新时间:2023-12-04 08:47:25 26 4
gpt4 key购买 nike

我正在使用 atom并测试HTTP::Request::Generator PERL 模块。下面的代码大部分都可以使用,但我无法发送 cookie 或 header ,即使我在代码中设置了它也只会显示默认 header 。

use strict;
use warnings;
use HTTP::Request::Generator 'generate_requests';
use LWP::UserAgent;

my $ua = 'LWP::UserAgent'->new;

my $gen = generate_requests(
method => 'GET',
host => [ 'https://abc.ai/' ],
pattern => 'https://abc.ai',

headers => {
"User-Agent" => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64',
"Cookie" => '_abc',
},
wrap => sub {
my ( $req ) = @_;
# Fix up some values
$req->{'headers'}{'Content-Length'} = 666;
},
wrap => \&HTTP::Request::Generator::as_http_request,
);

while ( my $req = $gen->() ) {
my $response = $ua->request( $req );
# print $response->protocol, ' ', $response->status_line, "\n";
print $req->headers->as_string, "\n";
print $req->as_string();
# Do something with $response here?

if ($response->is_success) {
# print $response->decoded_content;
print $response ->header('title');
}
else {
die $response->status_line;
}
}
输出 User-Agent: libwww-perl/6.31 Login title页面显示我没有登录这个 cookie 很好,我已经使用 curl 对其进行了测试我可以手动登录并检索所需的资源。为什么 perl 失败,如何在上面的代码中访问我的 header 选项。谢谢。
解决方案
body_params => {
comment => ['Some comment', 'Another comment, A++'],
},
解决了添加上面的代码。

最佳答案

您不能两次提供相同的选项( wrap ):

    wrap    => sub {
my ( $req ) = @_;
# Fix up some values
$req->{'headers'}{'Content-Length'} = 666;
},
wrap => \&HTTP::Request::Generator::as_http_request,
不过,这可能有效:
    wrap    => sub {
my ( $req ) = @_;
# Fix up some values
$req->{'headers'}{'Content-Length'} = 666;

return HTTP::Request::Generator::as_http_request( $req );
},
还有 headers选项似乎采用 hashrefs 的 arrayref,如下所示:
    headers => [
{
"User-Agent" => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)',
"Cookie" => '_abc',
},
],
我想这样做的原因是您可以提供替代的标题集:
    headers => [
{
"User-Agent" => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)',
"Cookie" => '_abc',
},
{
"User-Agent" => 'Mozilla/1.0 (Hoover Vacuum Cleaner)',
"Cookie" => '_def',
},
],
这样,您的请求生成器可以为每个页面生成两个请求,使用不同的 User-Agent字符串,或不同的 cookie(以不同的用户身份登录),或不同的 Accept标题,或其他任何东西。

关于perl - 无法使用 perl 模块 HTTP::Request::Generator 传递自定义 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64246115/

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