Estoy usando curl para hacer que php envíe una solicitud http a algún sitio web en algún lugar y haya establecido CURLOPT_FOLLOWLOCATION en 1 para que siga los redireccionamientos. ¿Cómo puedo averiguar dónde se redirigió finalmente?Averiguar dónde se redirigió el curl
5
A
Respuesta
6
Usted puede hacer algo como:
curl_getinfo($ch, CURLINFO_EFFECTIVE_URL); // returns the last effective URL
-1
Si no necesita el cuerpo final puede hacerlo de esta manera:
Conjunto CURLOPT_HEADER
y CURLOPT_NOBODY
. Se debe devolver el encabezado "Ubicación" y contendrá la nueva url. A continuación, realice la solicitud con la nueva URL si es necesario.
2
$ch = curl_init("http://websitethatredirects.com");
$curlParams = array(
CURLOPT_FOLLOWLOCATION => true,
);
curl_setopt_array($ch, $curlParams);
$ret = curl_exec($ch);
$info = curl_getinfo($ch);
print $info['url'];
Esto le mostrará la dirección URL que fueron finalmente redirigido a.
0
prueba estos fragmentos de código. Funciona bien para mí:
$urls = array(
'http://www.apple.com/imac',
'http://www.google.com/'
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
foreach($urls as $url) {
curl_setopt($ch, CURLOPT_URL, $url);
$out = curl_exec($ch);
// line endings is the wonkiest piece of this whole thing
$out = str_replace("\r", "", $out);
// only look at the headers
$headers_end = strpos($out, "\n\n");
if($headers_end !== false) {
$out = substr($out, 0, $headers_end);
}
$headers = explode("\n", $out);
foreach($headers as $header) {
if(substr($header, 0, 10) == "Location: ") {
$target = substr($header, 10);
echo "[$url] redirects to [$target]<br>";
continue 2;
}
}
echo "[$url] does not redirect<br>";
}
Cuestiones relacionadas
- 1. Averiguar dónde se inicializa una variable
- 2. node.js Internals: ¿Cómo puedo averiguar dónde se define `process.binding ('eval')`?
- 3. Compilando php con curl, ¿dónde está curl instalado?
- 4. ¿Cómo puedo saber dónde se me redirigirá utilizando cURL?
- 5. ¿Cómo averiguar de dónde sbt resuelve dependencias?
- 6. GDB: cómo averiguar desde dónde salió el programa
- 7. ¿Puedo averiguar dónde se colgó una aplicación de Python utilizando el volcado de datos?
- 8. Averiguar si se usa el recurso
- 9. ¿hay alguna manera de averiguar de dónde viene una rama?
- 10. No puedo averiguar dónde está ocurriendo la condición de raza
- 11. ¿Hay alguna manera en un script de shell para averiguar dónde se redirige su resultado?
- 12. ¿Cómo puedo averiguar el valor de $ (ProjectDir)?
- 13. MS Access: ¿Cómo puedo averiguar dónde se usan las tablas, las consultas, las macros, etc.?
- 14. ¿Podemos decodificar un Guid para averiguar dónde y cuándo se generó?
- 15. Averiguar cuándo se agrega el archivo a la carpeta
- 16. averiguar si una función se ha llamado
- 17. ¿Dónde se ha ido Lucene.Net.Highlight?
- 18. Cómo rastrear dónde se estrelló el programa Xcode
- 19. Comprobar el progreso de cURL
- 20. Curl muestra automáticamente el resultado?
- 21. Obtener url después de curl se redirige
- 22. ¿Cómo saber dónde se define una función?
- 23. Averigüe dónde se redirige la solicitud de Jquery ajax al
- 24. El agente de usuario CURL
- 25. ¿Dónde y cómo se vincula el archivo de diseño _ViewStart.cshtml?
- 26. Params anidados con cURL?
- 27. ¿De dónde se importa el módulo?
- 28. ¿Dónde se guarda el paquete de onSaveInstanceState?
- 29. ¿Dónde se encuentra el repositorio local?
- 30. Mercurial: determine dónde se eliminó el archivo.
Nice. No sabía sobre este. Teniendo en cuenta la cantidad de opciones de curl, no siempre es fácil encontrarlas. Gracias. –