Many web servers want to block HTTP requests forged by something else than a browser, to prevent bots abuses.
If you want to simulate/pretend your request from a browser, you at least have to:
-
Pass the exact same headers than your browsers (use ie Firebug to get them)
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
-
Change the user agent (name of the browser)
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
-
Enable cookies (for eg redirection and session handling)
curl_setopt ($ch, CURLOPT_COOKIEJAR, $file); curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
-
Add referers
curl_setopt($curl, CURLOPT_REFERER, 'http://www.google.com'); curl_setopt($curl, CURLOPT_AUTOREFERER, true);
And pray you haven’t missed anything!