【问题标题】:Mojo::CookieJar - how to load cookies from fileMojo::CookieJar - 如何从文件中加载 cookie
【发布时间】:2013-01-12 15:19:42
【问题描述】:

如何从 Mojo 中的文件加载 cookie,如下代码:

my $mech = WWW::Mechanize->new();
$mech->cookie_jar(HTTP::Cookies->new());

if (-e "cookie.txt") {
    print q[Cookie file: cookie.txt found!\n];

    $mech->cookie_jar(HTTP::Cookies->new(
        file => q[cookie.txt],
    ));

    $mech->get(qq[$cfg->{'url'}/login]) or die qq[invalid request\n];
} else {
    print q[Cookie file: cookie.txt NOT found!\n];

    $mech->get(qq[$cfg->{'url'}/login]) or die qq[invalid request\n];

    $mech->submit_form(
        form_name => 'login',
        fields => {
            'email'     => $cfg->{'email'},
            'password'  => $cfg->{'password'},
        },
    );
    die qq[ERROR: Failed to login!\n] unless ($mech->success);

    $mech->cookie_jar->save("cookie.txt");
}

除非有cookie.txt,否则脚本会使用用户名和密码,并将生成的cookie保存在cookie.txt文件中并下次使用这个文件。

我正在尝试在不使用 Mechanize 的情况下重写此代码,但我在保存和加载 cookie 文件时遇到了问题。

my $ua = Mojo::UserAgent->new;
$ua->cookie_jar(Mojo::CookieJar->new);
and then I do not know how to continue :)

附:对不起我的英语和 perl :)

【问题讨论】:

    标签: perl cookies mechanize mojolicious mojo


    【解决方案1】:

    据我所知,Mojolicious 不支持此功能,但您可以通过这种方式使用 Storable 模块的存储和检索功能:

    use Mojo::Base -strict;
    
    # uncomment to be sure
    #BEGIN { $ENV{MOJO_USERAGENT_DEBUG} = 1; }
    
    use Mojo::UserAgent;
    use Storable;
    
    my $cookie_path = 'my.cookie';
    my $req_str     = 'http://www.google.com/';
    
    
    SAVE: {
      my $ua1 = Mojo::UserAgent->new;
      $ua1->get($req_str);
      store $ua1->cookie_jar, $cookie_path;
    }
    
    my $ua2 = Mojo::UserAgent->new;
    
    # load
    $ua2->cookie_jar(retrieve($cookie_path));
    
    # make a request with loaded cookie
    $ua2->get($req_str);
    

    【讨论】:

    • 谢谢!成功了!另一个问题,是否可以将 cookie 保存为 txt 格式?
    • say $ua1->cookie_jar->all。或者你可以问这个功能here
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-08
    • 1970-01-01
    • 2013-06-17
    • 1970-01-01
    • 1970-01-01
    • 2011-08-23
    相关资源
    最近更新 更多