WWW::机械化和 Cookie

发布于 2024-09-16 20:27:47 字数 192 浏览 3 评论 0原文

我使用 WWW::Mechanize::Shell 来测试东西。 由于我没有成功登录到我想要抓取的网站,我想我将通过 WWW::Mechanize::Shell 具有的“cookie”命令使用该特定网站的浏览器 cookie(chrome 或 firefox)。

问题是,Cookies通常存储在单个文件中,这不好,如何获取仅针对该特定站点的cookie?

I use WWW::Mechanize::Shell to test stuff.
Since I didn't managed to sign in on a web site I want to scrape, I thought I will use the browser cookie (chrome or firefox) for that specific website with the 'cookie' command WWW::Mechanize::Shell has.

The question is, Cookies usually stored in a single file, which is not good, how to get a cookie for only this specific site?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

云柯 2024-09-23 20:27:47

为什么将 cookie 存储在文件中不好?

由于 WWW::Mechanize 是建立在 LWP::UserAgent,您可以像在 LWP::UserAgent。您可以将 cookie jar 制作为文件或内存中的哈希值。

如果您不想将 cookie 保存在文件中,请在构造 mech 对象时使用空哈希引用:

 use WWW::Mechanize;

 my $mech = WWW::Mechanize->new( cookie_jar => {} );

如果您想使用新文件,请创建一个新的 HTTP::Cookies 对象:

 use WWW::Mechanize;

 my $mech = WWW::Mechanize->new( 
     cookie_jar => HTTP::Cookies->new( file => "$ENV{HOME}/.cookies.txt" ) 
     );

如果您想加载特定于浏览器的 cookie 文件,请使用正确的模块:

 use WWW::Mechanize;

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

如果您根本不需要 cookie ,显式使用 undef:

 use WWW::Mechanize;

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

所有这些都在文档中。

Why isn't storing cookies in a file good?

Since WWW::Mechanize is built on top of LWP::UserAgent, you handle cookies just like you do in LWP::UserAgent. You can make the cookie jar a file or an in-memory hash.

If you don't want to save the cookies in a file, use an empty hash reference when you construct the mech object:

 use WWW::Mechanize;

 my $mech = WWW::Mechanize->new( cookie_jar => {} );

If you want to use a new file, make a new HTTP::Cookies object:

 use WWW::Mechanize;

 my $mech = WWW::Mechanize->new( 
     cookie_jar => HTTP::Cookies->new( file => "$ENV{HOME}/.cookies.txt" ) 
     );

If you want to load a browser specific cookies file, use the right module for it:

 use WWW::Mechanize;

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

If you want no cookies at all, use undef explicitly:

 use WWW::Mechanize;

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

All of this is in the docs.

罪歌 2024-09-23 20:27:47

HTTP::Cookies::NetscapeHTTP::Cookies::Microsoft 加载您现有的浏览器 cookie。

HTTP::Cookies::Netscape, HTTP::Cookies::Microsoft load your existing browser cookies.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文