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

Вход на сайт cURL

3 голосов
/ 14 апреля 2010

Я впервые использую cURL. Мне нужно войти на сайт. У меня проблема с настройкой файла cookie и получением файла, чтобы я мог получить доступ к этой странице не один раз, а несколько раз. Я нашел код в Интернете, для входа на сайт и скрап страницы для получения подробной информации, потому что для получения этой страницы требуется много времени. так что я просто хочу знать, все ли в порядке! любимый код (это просто для входа в код для очистки его не готов)

<?php

curl_login('http://mywantedsite.com/login.php','user=******&pass=******','','off');

echo curl_grab_page('http://mywantedsite.com/somepage.php','','off');

function curl_login($url,$data,$proxy,$proxystatus){
    $fp = fopen("cookie.txt", "w");
    fclose($fp);
    $login = curl_init();
    curl_setopt($login, CURLOPT_COOKIEJAR, "cookie.txt");
    curl_setopt($login, CURLOPT_COOKIEFILE, "cookie.txt");
    curl_setopt($login, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
    curl_setopt($login, CURLOPT_TIMEOUT, 40);
    curl_setopt($login, CURLOPT_RETURNTRANSFER, TRUE);
    if ($proxystatus == 'on') {
        curl_setopt($login, CURLOPT_SSL_VERIFYHOST, FALSE);
        curl_setopt($login, CURLOPT_HTTPPROXYTUNNEL, TRUE);
        curl_setopt($login, CURLOPT_PROXY, $proxy);
    }
    curl_setopt($login, CURLOPT_URL, $url);
    curl_setopt($login, CURLOPT_HEADER, TRUE);
    curl_setopt($login, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
    curl_setopt($login, CURLOPT_FOLLOWLOCATION, TRUE);
    curl_setopt($login, CURLOPT_POST, TRUE);
    curl_setopt($login, CURLOPT_POSTFIELDS, $data);
    ob_start();      // prevent any output
    return curl_exec ($login); // execute the curl command
    ob_end_clean();  // stop preventing output
    curl_close ($login);
    unset($login);    
}                  

function curl_grab_page($site,$proxy,$proxystatus){
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    if ($proxystatus == 'on') {
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
        curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, TRUE);
        curl_setopt($ch, CURLOPT_PROXY, $proxy);
    }
    curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt");
    curl_setopt($ch, CURLOPT_URL, $site);
    ob_start();      // prevent any output
    return curl_exec ($ch); // execute the curl command
    ob_end_clean();  // stop preventing output
    curl_close ($ch);
}  
?>

Ответы [ 3 ]

2 голосов
/ 28 апреля 2010

вам нужно проверить, публикуете ли вы все «поля для публикации» .. некоторые сайты используют токены безопасности или идентификаторы сеансов для предотвращения входа ботов на свои сайты. в любом случае, вам нужно установить расширение HTTP заголовки Live Firefox. откройте его и попробуйте войти в систему вручную, а затем посмотрите, что публикуется на самом деле, когда вы нажимаете кнопку входа. после того, как вы получите значения. затем добавьте к первой функции и протестируйте снова.

1 голос
/ 10 февраля 2012

Сначала используйте $strPostFields для хранения логина и пароля, затем используйте

$this->m_strResourceCurl = curl_init();

и в вашем сценарии cURL добавьте это

curl_setopt( $this->m_strResourceCurl, CURLOPT_POSTFIELDS, $strPostFields );

Надеюсь, вы получите этот небольшой фрагмент кода.

0 голосов
/ 15 апреля 2010

почему бы вам не добавить параметр URL на

$login = curl_init($url);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...