Perl 强制http代理与已使用LWP::UserAgent的模块一起使用?
我希望将代理服务器与第三方SDK结合使用,但SDK在内部使用LWP::UserAgent,并且在其API中不公开任何代理设置。我试图设置一个合适的环境变量,但模块似乎无法识别它。有没有办法解决这个问题(不修改模块本身) [john0839@478261-apps~]$./netapp_命令_proxy.pl文件RIP myuser mypassPerl 强制http代理与已使用LWP::UserAgent的模块一起使用?,perl,Perl,我希望将代理服务器与第三方SDK结合使用,但SDK在内部使用LWP::UserAgent,并且在其API中不公开任何代理设置。我试图设置一个合适的环境变量,但模块似乎无法识别它。有没有办法解决这个问题(不修改模块本身) [john0839@478261-apps~]$./netapp_命令_proxy.pl文件RIP myuser mypass 在netapp-manageability-sdk-9.4/lib/perl/netapp/OntapClusterAPI.pm行109445中找不到A
在netapp-manageability-sdk-9.4/lib/perl/netapp/OntapClusterAPI.pm行109445中找不到API环境代理的定义。您已经确定需要在UserAgent对象上调用
env_proxy()
。但是,NaServer
似乎不是LWP::UserAgent
的子类,因此您不能像在示例代码中尝试的那样在该类上调用该方法
让我们看看这些线索。这本书有一些有趣的文本
如果未提供env_proxy
,则PERL_LWP_env_proxy
环境变量控制在初始化期间是否调用LWP::UserAgent中的“env_proxy”
在我看来,此功能正是针对这种情况提供的。如果您无权访问对象的构造函数,则可以使用此环境变量来控制代理的使用。构造函数中的代码如下所示:
my $env_proxy = exists $cnf{env_proxy} ? delete $cnf{env_proxy} : $ENV{PERL_LWP_ENV_PROXY};
后来呢,
$self->env_proxy if $env_proxy;
因此,解决办法似乎是增加:
$ENV{PERL_LWP_ENV_PROXY} = 1;
到代码的顶部
(注意,我还没有时间来测试。)试着看看源代码中是否有像
$s->ua
这样的lwp ua对象,这可能是你唯一的机会,或者看看lwp::ua如何与此组件一起工作的文档。如果能工作,那就太棒了!我回到办公室后再做测试。大家第四节快乐@约翰霍姆斯:第四什么?对不起,七月四日。这里是美国人。嗯,我有一些坏消息要报告。设置该环境变量似乎不会强制使用代理。我在模拟防火墙配置,在端点上有一个ACL,在有代理变量和没有代理变量的情况下,我得到了相同的503错误:@JohnHelms:LWP::UserAgent的哪个版本?在6.03版中添加了自动运行env_proxy()
的代码。我是从警察局得到这个消息的。
$ENV{PERL_LWP_ENV_PROXY} = 1;