Tôi đang cố tạo một tập lệnh đơn giản chỉ cần kết nối với một trang web. Tuy nhiên, vì lý do nào đó, nó sẽ không kết nối với bất kỳ thứ gì đang sử dụng HTTPS.Tôi không thể Kết nối với bất kỳ trang web HTTPS nào bằng LWP :: UserAgent
Chúng tôi đã bật proxy ở đây. Tuy nhiên, tôi tin rằng proxy không phải là vấn đề, bởi vì nếu tôi đã kết nối với một HTTPS bên trong mạng mà không đường hầm thông qua một proxy nó vẫn không thành công.
Nếu tôi chạy chương trình này trên bất kỳ trang web nào không sử dụng HTTPS, tôi có thể hoàn thành và tập lệnh hoạt động như dự định.
Điều tôi đang tự hỏi là điều gì có thể thực hiện bằng cách chặn tập lệnh kết nối với bất kỳ trang web bảo mật SSL nào.
Dưới đây là đoạn code mà tôi đã viết:
$ENV{HTTPS_DEBUG} = 1;
my $ua = LWP::UserAgent->new(keep_alive => 1);
$ua->agent('Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36');
my $pac = HTTP::ProxyPAC->new(URI->new("http://pacfilelocation:8080/pac_file.pac"));
my $res = $pac->find_proxy("https://www.google.com");
if ($res->direct) {
print "No Proxy Needed\n";
} elsif ($res->proxy) {
print "Proxy: " . $res->proxy . "\n";
$ENV{HTTPS_PROXY} = $res->proxy;
$ENV{HTTP_PROXY} = $res->proxy;
$ua->env_proxy;
}
my $req = new HTTP::Request('GET', 'https://www.google.com/');
$req->header('Accept' => 'text/html');
$req->header('Host', 'www.google.com');
my $res2 = $ua->request($req);
if ($res2->is_success) {
print $res2->decoded_content;
} else {
print "Error: " . $res2->status_line . "\n";
}
Tính năng HTTPS_DEBUG vì một lý do không ra gỡ lỗi, mà làm này tất cả các khó khăn hơn để giải quyết.
Khi chạy kịch bản tôi nhận được một lỗi chung chung:
Error: 500 Can't connect to www.google.com:443
Bất kỳ trợ giúp sẽ là tuyệt vời!
Nâng cấp LWP :: Giao thức :: https đến 6.06 đã hoạt động. Cám ơn rất nhiều! Lưu ý: Tôi đã phải tự cài đặt 6.06, như cpan sử dụng 6.04 – theEli