Search code examples
perlhttpsperl-modulelwp

Perl LWP::Simple HTTPS error


I am trying to get the contents of a website and print. The code worked how I wanted it to work with a regular HTTP website, but it will not work with HTTPS.

I have looked up fixes for this issue, but they are not working in my program. This is the code I currently have:

#! usr/bin/perl
use strict;
use warnings;
use LWP::Simple;
use LWP::UserAgent;
use 5.014;

$ENV{PERL_LWP_SSL_VERIFY_HOSTNAME} = 0;

my $ua = LWP::UserAgent->new();
$ua->ssl_opts( verify_hostnames => 0 );

getprint('https://<website>')or die 'Unable to get page';

And this is the error I am getting:

500 Can't connect to <IP address>:443 (certificate verify failed) <URL:https://<website>>

Solution

  • Perhaps the following will be helpful:

    use strict;
    use warnings;
    use LWP::UserAgent;
    use open qw(:std :utf8);
    
    my $ua = LWP::UserAgent->new( ssl_opts => { verify_hostname => 0 } );
    my $response = $ua->get('https://<website>');
    
    if ( $response->is_success ) {
        print $response->decoded_content;
    }
    else {
        die $response->status_line;
    }
    

    See LWP::Protocol::https and LWP::UserAgent.