Estoy tratando de hacer que Curl siga una redirección pero no puedo hacer que funcione correctamente. Tengo una cadena que quiero enviar como un parámetro GET a un servidor y obtengo la URL resultante.¿Cómo puedo saber dónde se me redirigirá utilizando cURL?
Ejemplo:
String = Kobold alimañas
url = www.wowhead.com/search?q=Kobold+Worker
Si usted va a ese URL se lo redirigirá a "www.wowhead.com/npc=257". Quiero que Curl devuelva esta URL a mi código PHP para que pueda extraer el "npc = 257" y usarlo.
código actual:
function npcID($name) {
$urltopost = "http://www.wowhead.com/search?q=" . $name;
$ch = curl_init();
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1");
curl_setopt($ch, CURLOPT_URL, $urltopost);
curl_setopt($ch, CURLOPT_REFERER, "http://www.wowhead.com");
curl_setopt($ch, CURLOPT_HTTPHEADER, Array("Content-Type:application/x-www-form-urlencoded"));
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
return curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);
}
Sin embargo, esto vuelve www.wowhead.com/search?q=Kobold+Worker y no www.wowhead.com/npc=257.
Sospecho que PHP está volviendo antes de que ocurra la redirección externa. ¿Cómo puedo arreglar esto?
Esta es una de las principales preguntas para "curl follow redirects". Para seguir automáticamente los redireccionamientos con el comando 'curl', pase el indicador' -L' o '--location'. P.ej. 'curl -L http: // example.com /' –