headers chrome curl user-agent

chrome - curl user agent php



¿Cómo usar curl para obtener una solicitud GET exactamente igual que usar Chrome? (3)

Abra las Herramientas para desarrolladores de Chrome, vaya a la pestaña Red, haga su solicitud (es posible que deba marcar "Conservar registro" si la página se actualiza). Busque la solicitud a la izquierda, haga clic con el botón derecho en "Copiar como cURL".

Tengo una API web http://something.com/api y quiero usar GET para obtener el cuerpo de respuesta.

Este es mi comando:

curl "http://something.com/api"

Por supuesto, falla y da un mensaje de error.

Cuando uso Chrome e ingreso la URL anterior, todo está correcto. Sin embargo, hago lo mismo con Firefox, la url me da el mismo mensaje de error. Intento repetir la acción con la extensión DHC de Chrome, la solicitud vuelve a responder correctamente. Después de algunas búsquedas, creo que la opción curl --user-agent hace la diferencia. ¿Cuál es la forma correcta de configurar el agente de usuario en Chrome? ¿O este no es el punto, el problema proviene de otros campos? Muchas gracias.


Si necesita establecer la cadena de encabezado de usuario en la solicitud de curl, puede usar la opción -H para configurar el agente de usuario como:

curl -H "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.89 Safari/537.36" http://.com/questions/28760694/how-to-use-curl-to-get-a-get-request-exactly-same-as-using-chrome

El uso de una herramienta proxy como Charles Proxy realmente ayuda a hacer un trabajo breve de algo como lo que está preguntando. Esto es lo que hago, usando esta página SO como ejemplo (a partir de julio de 2015 usando la versión 3.10 de Charles):

  1. Haz que Charles Proxy se ejecute
  2. Hacer solicitud web usando el navegador
  3. Encuentre la solicitud deseada en Charles Proxy
  4. Haga clic derecho sobre solicitud en Charles Proxy
  5. Seleccione ''Copiar solicitud de cURL''

Ahora tiene una solicitud cURL que puede ejecutar en una terminal que reflejará la solicitud que hizo su navegador. Así es como se veía mi solicitud a esta página (con el encabezado de la cookie eliminado):

curl -H "Host: .com" -H "Cache-Control: max-age=0" -H "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8" -H "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.89 Safari/537.36" -H "HTTPS: 1" -H "DNT: 1" -H "Referer: https://www.google.com/" -H "Accept-Language: en-US,en;q=0.8,en-GB;q=0.6,es;q=0.4" -H "If-Modified-Since: Thu, 23 Jul 2015 20:31:28 GMT" --compressed http://.com/questions/28760694/how-to-use-curl-to-get-a-get-request-exactly-same-as-using-chrome


Verifique los encabezados HTTP que Chrome está enviando con la solicitud (Usando la extensión del navegador o proxy) luego intente enviar los mismos encabezados con CURL - Posiblemente uno a la vez hasta que descubra qué encabezado (s) hace que la solicitud funcione.

curl -A [user-agent] -H [encabezados] " http://something.com/api "