【问题标题】:LWP::UserAgent Object Proxy Attributes in CPAN ModulesCPAN 模块中的 LWP::UserAgent 对象代理属性
【发布时间】:2014-05-14 11:29:41
【问题描述】:

CPAN 上的某些模块使用 LWP::UserAgent 模块。其中一些模块提供了设置属性的能力,然后模块将这些属性与 UserAgent 对象一起使用。但是,其中一些不提供这种机制。在这种情况下,将属性传递给模块中的 UserAgent 对象的最佳方法是什么?具体来说,我对代理属性和代理字符串感兴趣。

我的第一个想法是参考 Mastering Perl 的第 10 章,但这似乎太过分了,我猜有一个更简单的解决方案。有没有更简单的解决方案?

不提供设置代理属性机制的模块示例:

WWW::WhoCallsMe

WWW::TV::Series

【问题讨论】:

  • WWW::TV::Series 的文档说 “还没有对代理服务器的支持。如果你真的需要,LWP 应该在你的环境中使用它......”所以我假设您可以使用LWP::UserAgent documentation 中描述的环境变量。从文档来看,这两个模块都没有通过方法调用公开LWP::UserAgent 对象,所以除非你想破解内部结构(可能会随着下一个模块发布而改变),你最好向维护者提交功能请求.
  • 即使从环境变量加载,我仍然需要访问 UserAgent 对象,不是吗?根据您在其余消息中所写的内容,我需要学习掌握 Perl 的第 10 章。
  • 查看 LWP::UserAgent 文档后,我注意到您可以将 PERL_LWP_ENV_PROXY 环境变量设置为 1,然后将 http_proxy 变量设置为您的代理地址,这将使所有 LWP::UserAgent 对象都使用代理在 http_proxy 中指定。从模块中访问未通过访问器等公开的属性的更普遍的问题似乎是子类化或修补,无论是通过发送给模块开发人员还是在本地进行。

标签: perl perl-module


【解决方案1】:

理想情况下,此类模块不仅允许您设置 UserAgent 属性,还允许您完全用您选择的一个对象替换该对象,例如 LWPx::ParanoidAgent 对象(在您的情况下不是一个好的选择)。

如果您能胜任增强攻击性模块的任务来做到这一点,那么感谢您。如果没有,提交错误报告将是完全合适的。

【讨论】:

  • 很遗憾,我不能胜任这项任务。
猜你喜欢
  • 1970-01-01
  • 2023-03-06
  • 2015-04-09
  • 1970-01-01
  • 2016-06-16
  • 1970-01-01
  • 1970-01-01
  • 2011-09-24
  • 1970-01-01
相关资源
最近更新 更多