처음으로 cURL을 사용하고 있습니다. 사이트에 로그인해야합니다. 쿠키 파일 설정 및 검색에 문제가있어서 한 번만이 아니라 여러 번 액세스 할 수 있습니다. 사이트에 로그인하고 일부 세부 정보 페이지를 스크랩하여 많은 시간이 소요되는 페이지를 가져 오는 원인으로 웹에서 코드를 발견했습니다. 그래서 나는 그것이 단지 괜찮은지 알고 싶다! 당신이 게시하는 경우 코드 BELOVE (그것의 준비가되어 있지 긁어에 대한 코드에 바로 로그인을위한)웹 사이트에 로그인 cURL
<?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);
}
?>
'CURLOPT_URL'은 괜찮습니다. 그러나 ob을 사용하지 말고, 출력 자체를 반환하고'$ output = curl_exec ($ login); –