Функция Curl php не возвращает содержимое защищенной страницы, а возвращает страницу входа - PullRequest
0 голосов
/ 15 февраля 2020

У меня проблема с функцией проверки скручиваемости. Функция, возможно, не может войти в защищенный сайт. Функция возвращает содержимое страницы входа. Спасибо за помощь. Функция возвращает содержимое, когда $ visit_url не является защищенной страницей.

Моя функция:

    function test( $login_user, $login_pass, $login_url, $visit_url, $http_agent, $cookie_file ) {




$ch = curl_init($login_url);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
    curl_setopt($ch, CURLOPT_CAINFO, getcwd() . "/CAcerts/sni238399cloudflaresslcom.crt");
    curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
    curl_setopt( $ch, CURLOPT_COOKIEJAR, realpath($cookie_file) );



      $responseget = curl_exec($ch);

    $dom = new \DOMDocument;
    $dom->loadHTML($responseget);

    $tags = $dom->getElementsByTagName('input');
    for($i = 0;$i <$tags->length;$i++) {
      $grab = $tags->item($i);
      if($grab->getAttribute('name') === '_csrf_token') {
        $token = $grab->getAttribute('value');
      }
    };   

    $data = "login=". $login_user ."&password=" . $login_pass . "&_csrf_token=" . $token;

// $data = array(
//         "login"=> "user",
//         "password"=> "password",
//         "_csrf_token"=> $token
//     );


    curl_setopt( $ch, CURLOPT_URL, $login_url );
    curl_setopt( $ch, CURLOPT_POST, true);
    curl_setopt( $ch, CURLOPT_POSTFIELDS, $data );
    curl_setopt( $ch, CURLOPT_COOKIEJAR, realpath($cookie_file) );
    curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, true );



    $responseget = curl_exec($ch);

    curl_setopt( $ch, CURLOPT_URL, $visit_url );
    curl_setopt( $ch, CURLOPT_COOKIEJAR, realpath($cookie_file) );
    $responseget = curl_exec($ch);

    $content = $responseget;
    return $content;

}
...