perl - 使用 Perl 的 WWW::Mechanize 发送自定义 cookie(并查看自然设置的 cookie)
问题描述
我正在尝试抓取一个特别麻烦的网站。尽管所有参数都匹配并且引用者匹配,但是当 perl 运行它时,我看到的结果与我查看开发工具时不同。
当我从开发工具中复制卷曲时,我无法确认的唯一标题是-H 'Cookie:
它的内容。运行该 curl 命令会给我正确的结果,就像我在浏览器中收到的一样。
那么,我应该使用什么语法与 WWW::Mechanize 一起明确设置 cookie 的值,而不是让 Mechanize 根据过去的获取/帖子为我做这件事?
另外,我如何查看它想要将 cookie 的值设置为什么?
解决方案
要检查从 WWW::Mechanize 请求返回的 cookie,请使用以下命令:
my $cookie_jar = $mech->cookie_jar; # returns a HTTP::Cookies object
print $cookie_jar->as_string, "\n”;
要设置一个 cookie 供 WWW::Mechanize 在请求中使用,您可以执行以下操作:
$mech->cookie_jar->set_cookie(-name=>'YourCookieName',
-value=>'YourCookieValue',
-host=>'www.your website.com',
-expires=>'Sun, 31 Jan 2021 18:45:47 GMT',
-path=>'/'
-secure=>'false');
有关其他有用的方法,请参阅 HTTP::Cookies 文档。
推荐阅读
- node.js - 通过 Mongodb Nodejs 驱动程序和 Express 使用 find 获取结果
- r - 创建一个遍历页码的函数
- sql-server - I/O 在数据库 DBName 上被冻结。无需用户操作
- java - 检查正则表达式中是否有大于负数 -328 的整数
- c# - C# 错误“事务与当前连接没有关联或已完成”
- r - 返回不同大小数组列表中的最大元素数
- php - 如何在 WooCommerce 中在订单完成的电子邮件模板上添加新帐户信息
- c++ - 使用 C++ 将数据从我的 Qt 应用程序插入到 mySQL 数据库时出现问题
- c++ - 我怎样才能只允许在调用函数 B 之后才调用函数 A?
- c11 - 使用 wprintf 打印 UTF-32 字符串