Я использую cURL в первый раз. Мне нужно зайти на сайт. У меня проблема с настройкой файла cookie и извлечением, так что я могу получить доступ к этой странице не один раз, а несколько раз. Я нашел код в Интернете, для входа на сайт и «Ломать страницу» для некоторой подробной информации, чтобы получить эту страницу, потребуется много времени. поэтому я просто хочу знать, все ли в порядке! код belove (он просто для входа в код для Скребки его не готов)
<?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); } ?>
вам нужно проверить, публикуете ли вы все поля публикации. На некоторых сайтах используются маркеры безопасности или идентификаторы сеансов, чтобы запретить запуск ботов на своих сайтах. в любом случае вам нужно установить расширение HTTP-заголовков HTTP. откройте его и попробуйте войти в систему вручную, а затем посмотрите, что происходит, когда вы нажимаете кнопку входа. после получения значений. добавьте затем к первой функции и повторите тест.
Сначала используйте $strPostFields
для хранения имени пользователя и пароля, затем используйте
$this->m_strResourceCurl = curl_init();
и в вашем скрипте cURL добавьте это
curl_setopt( $this->m_strResourceCurl, CURLOPT_POSTFIELDS, $strPostFields );
Надеюсь, вы получите этот небольшой фрагмент кода.
почему бы вам не добавить параметр URL в
$login = curl_init($url);