cURL Войти на сайт HTTPS

Я пытаюсь отправить учетные данные для входа на сайт https с использованием cURL и PHP без везения. Все работает отлично для незащищенных сайтов, но я не могу получить его с помощью 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); ?> 

Solutions Collecting From Web of "cURL Войти на сайт HTTPS"

  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);