cURL Вход на сайт HTTPS - PullRequest
       7

cURL Вход на сайт HTTPS

4 голосов
/ 30 ноября 2011

Я пытался опубликовать учетные данные для входа на сайт 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);

    ?>

Ответы [ 2 ]

4 голосов
/ 30 ноября 2011
  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");
    
1 голос
/ 30 ноября 2011

Я использовал это один раз для подключения к банковскому счету, надеюсь, это поможет:

$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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...