这是我的代码
#!/path/to/perl
use strict;
use LWP::UserAgent;
use HTTP::Request::Common;
use Crypt::SSLeay;
$ENV{HTTPS_PROXY} = 'http://proxy:8080/';
$ENV{HTTPS_DEBUG} = 1;
my $myurl = "https://www.redhat.com";
my $ua = new LWP::UserAgent;
$ua->cookie_jar( {} );
$ua->protocols_allowed( [ 'http','https'] );
$ua->proxy(['http', 'https'], 'http://proxy:8080/');
my $page = $ua->get($myurl);
die "Error $myurl\n ", $page->status_line, "\n Aborting"
unless $page->is_success;
print "Success", $page1->content_type, " document!\n";
返回
Error at https://www.redhat.com
400 Bad Request
Aborting at test.pl line 30.
出了什么问题?
编辑:
显然,它是bug。但是解决方法对我不起作用。
答案 0 :(得分:1)
哈!我得到了答案!
1)删除ENV {HTTPS_PROXY}
端口后的'/'2)显然,LWP的代理系统发送'GET'请求而不是CONNECT请求,因此只需设置环境变量并删除代理命令即可使用Crypt :: SSLeay的代理系统。
答案 1 :(得分:1)
在某些系统上,例如Debian,你需要安装适当的SSL库才能使用。这些系统上的错误消息有时会有点误导。我认为Debian软件包将是libnet-ssleay-perl。
答案 2 :(得分:1)
我刚刚将LWP :: Protocol :: connect模块上传到CPAN。此模块将缺少的HTTP / CONNECT方法支持添加到LWP。
use LWP::UserAgent;
$ua = LWP::UserAgent->new();
$ua->proxy('https', 'connect://proxyhost.domain:3128/');
$ua->get('https://www.somesslsite.com');
使用此模块,您可以使用常规IO :: Socket :: SSL实现LWP> = 6.00。
答案 3 :(得分:0)
您的代理服务器似乎不接受HTTPS连接。您是否尝试在自己喜欢的浏览器中进行设置并查看网址?