cURL登录到HTTPS站点


cURL Login to HTTPS site

我一直在尝试使用cURL和PHP将登录凭据发布到https站点,但没有运气。对于不安全的网站,一切都很好,但我无法使用https。我知道我发布的标题细节是正确的(尽管我为了这个例子而模拟了它们)。请帮助。

    <?php
    // Initialize cURL
    $ch = curl_init('https://secured-example.com/auth.asp');
    // Enable HTTP POST
    curl_setopt($ch, CURLOPT_POST, 1);
    // Use SSL 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
    // Set POST parameters
    curl_setopt($ch, CURLOPT_POSTFIELDS, 'username=myUser&password=myPass');
    // Imitate classic browser's behavior - handle cookies
    curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    // Execute 1st request
    $store = curl_exec($ch);
    // Set file to download
    curl_setopt($ch, CURLOPT_URL, 'https://secured-example.com/file.pdf');
    // Execute 2nd request (file download)
    $content = curl_exec($ch);
    curl_close($ch);
    ?>
  1. 导出证书
  2. 上传到脚本可以看到的地方。
  3. 然后添加:

    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
    curl_setopt($ch, CURLOPT_CAINFO, getcwd() . "/path/to/certificateCA.crt");
    

我曾经用这个连接到一个银行账户,希望这对你有帮助:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, HSBC_LINK1);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header); 
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
$post_data = array('post1' => 'value');
$fields_string = '';
foreach($post_data as $key=>$value) { $fields_string .= $key.'='.$value.'&'; } 
$fields_string = rtrim($fields_string,'&');
curl_setopt($ch, CURLOPT_POST, count($post_data)); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
$data1 = curl_exec($ch);