Правя заявка за публикуване на cURL със следния скрипт, който публикува към скрипт за обработка на формуляр:
$url = "http://www.example.com/process_script.php";
$referer = "http://www.example.com";
$agent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11";
$postdata = array('message' => 'Hello, World!', 'name' => 'Bob');
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
curl_setopt($ch, CURLOPT_REFERER, $referer);
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
curl_exec($ch);
Работи добре на някои URL адреси. Освен това, когато го публикувам в тестовия си скрипт (който само извежда референта, агента и постданните), той работи добре.
Някои сървъри обаче ми дават тази странна грешка „Сървърът не можа да разбере вашата заявка“. Това не е 403, защото когато премахна опцията за потребителски агент, получавам 403. Има ли нещо нередно с низа на потребителския агент? Изтеглено е директно от действителния ми браузър.
Има ли още опции, които трябва да настроя, за да емулирам истински браузър?