<pre>
<?php
/**
* Basic browser emulation: sending custom headers, processing cookies and redirects, sending referrer
*/
//set local timezone
date_default_timezone_set('UTC');
//Include library
require_once('gCurl/gcurl.class.php');
//init variables
$url = 'google.com';
$max_redirects = 20;
$i=0;
//some request headers
$request_headers = array(
'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11',
'Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5',
'Accept-Language: en-us,en;q=0.5',
'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7',
);
$cookies = array();
try{
//initialize the class
$curl = new gCurl($url);
//emulate Firefox
$curl->Request->registerCustomHeadersArray($request_headers);
do {
$response = $curl->exec();
//check for the redirect
if ($new_url = $response->getHeaderByName('location')){
echo 'redirect to ',$new_url,"<br>\r\n";
//process cookies (skip domain, path and secure parameters for simplicity)
foreach ($response->cookies as $c){
if (isset($c['expires_ts']) && $c['expires_ts']>time()){
$cookies[$c['name']] = $c['value'];
}else{
unset($cookies[$c['name']]);
}
}
$curl->redirect($new_url);
$curl->Request->registerCustomHeadersArray($request_headers);
foreach ($cookies as $cookie_name=>$cookie_value){
$curl->Request->addCookieVar($cookie_name,$cookie_value);
}
//set referrer with a direct curl_setopt call
curl_setopt($curl->ch,CURLOPT_REFERER,$url);
$url = $new_url;
++$i;
}else{
break;
}
}while ($i<$max_redirects);
}catch (gksException $E){
echo $E->getHtmlMessage();
exit;
}
//show the content received
echo htmlspecialchars($response);
|