【问题标题】:How to maintain cookies during redirects using perl's LWP::UserAgent?如何使用 perl 的 LWP::UserAgent 在重定向期间维护 cookie?
【发布时间】:2016-08-30 08:00:39
【问题描述】:

我用来发送到特定网站的 HTTP 请求现在被重定向,这最终破坏了我的代码。我意识到 cookie 不再适用于重定向的域(当然)。我阅读了 LWP 的文档,但没有找到任何自动保存/维护 cookie 的相关选项。有什么简单的方法吗?

只是附带说明:此行为使用 Python 的 Requests 类开箱即用。

【问题讨论】:

  • 让自己的生活更轻松,WWW::Mechanize 是 LWP::UserAgent 的子类,为您处理所有低级的东西,让您只需“浏览”即可
  • 虽然 WWW::Mechanize 不错,但它可能有点矫枉过正,因为它比 LWP::UserAgent 重得多。这真的取决于用例。
  • 如果您在浏览器中执行此操作,效果如何?我建议您检查从初始请求和响应到重定向到最后一页的所有请求和响应的标头,并仔细查看 cookie。如果没有看到这一点,我相信在这里很难提供帮助。解决方案可能很简单,只需进入 cookie 罐并稍微更改 cookie 的域。
  • 如果我也手动设置重定向域的 cookie,我的代码将照常工作。然而,重定向的域似乎是一个随机的 CDN 服务器,它一直在变化。正如您所说,我需要通过每个重定向更改 cookie 的域。我同意 WWW::Mechanize 对我的问题来说太过分了。
  • LWP(和任何浏览器)应该检查原始域的 cookie 并将它们作为标头添加到 HTTP 消息中。之后,可以根据需要重定向消息,并且不会更改标头。如果您看到的行为与此不同,则说明您有错误,但我们需要更多详细信息才能为您提供帮助。

标签: perl redirect cookies lwp lwp-useragent


【解决方案1】:

以下添加了对 LWP::UserAgent 的 cookie 支持。

my $ua = LWP::UserAgent->new( cookie_jar => {} );

它会导致响应中返回的 cookie 与后续匹配请求一起发送,就像浏览器一样。

【讨论】:

  • @papaiatis,为什么不呢?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-02-02
  • 1970-01-01
  • 1970-01-01
  • 2011-06-27
  • 1970-01-01
  • 2011-09-24
  • 2021-12-01
相关资源
最近更新 更多