2011
08.15
08.15
Nevím jak vy, ale často píšu skript, který se musí prokousat nějakou sajtou, i přes přihlášení (třeba do administrace) a stáhnout nějakou stránku. Je to celkem zajímavý, rád zkoumám, jak se stránky chovají. Například co si ukládají nebo jaký AJAX musím poslat, aby stránka můj požadavek přijala.
Následující kód využívá knihovnu CURL v PHP. Není na ní nic složitého, jediné navíc je ukládání/načítání cookies. Funkce vrací výsledek v objektu, který nese dvě vlastnosti. Jedna content (samotný obsah stažené stránky) a response (hlavičky stránky). Pokud vás čistě zajímá jen obsah, nevracejte objekt, stačí pouze return $response
function getPage($url, $postData = array())
{
$cookie = "./cookies";
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_USERAGENT,
"Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3)".
" Gecko/20041001 Firefox/0.10.1" );
curl_setopt($ch, CURLOPT_URL, $url );
curl_setopt($ch, CURLOPT_COOKIEFILE,
str_replace('\\','/',dirname(__FILE__)).'/cookies.txt');
curl_setopt($ch, CURLOPT_COOKIEJAR,
str_replace('\\','/',dirname(__FILE__)).'/cookies.txt' );
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true );
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt($ch, CURLOPT_POST, !empty($postData) ? 1 : 0);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
$content = curl_exec($ch);
$response = curl_getinfo($ch);
$obj = new stdClass();
$obj->response = $response;
$obj->content = $content;
return $obj;
}
Žádný komentář
Přidat komentář