Wenn Sie die Benutzer-Header-Zeichenfolge in der Curl-Anforderung festlegen müssen, können Sie die -H
Option verwenden, um den Benutzeragenten wie folgt festzulegen:
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://stackoverflow.com/questions/28760694/how-to-use-curl-to-get-a-get-request-exactly-same-as-using-chrome
Die Verwendung eines Proxy-Tools wie Charles Proxy hilft wirklich dabei, so etwas wie das, was Sie fragen, kurz zu machen. Folgendes mache ich am Beispiel dieser SO-Seite (Stand Juli 2015 mit Charles Version 3.10):
- Bringen Sie Charles Proxy zum Laufen
- Stellen Sie eine Webanforderung mit dem Browser
- Finden Sie die gewünschte Anfrage in Charles Proxy
- Klicken Sie mit der rechten Maustaste auf Anfrage in Charles Proxy
- Wählen Sie 'cURL-Anfrage kopieren'
Sie haben jetzt eine cURL-Anforderung, die Sie in einem Terminal ausführen können, das die von Ihrem Browser gestellte Anforderung widerspiegelt. So sah meine Anfrage auf dieser Seite aus (mit entferntem Cookie-Header):
curl -H "Host: stackoverflow.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://stackoverflow.com/questions/28760694/how-to-use-curl-to-get-a-get-request-exactly-same-as-using-chrome
Accept: text/html
Header, um die HTML-Ausgabe zu erzwingen.Öffnen Sie die Chrome Developer Tools, wechseln Sie zur Registerkarte "Netzwerk" und stellen Sie Ihre Anfrage (möglicherweise müssen Sie "Protokoll beibehalten" aktivieren, wenn die Seite aktualisiert wird). Suchen Sie die Anfrage links und klicken Sie mit der rechten Maustaste auf "Als cURL kopieren".
quelle
Überprüfen Sie die HTTP-Header, die Chrome mit der Anforderung sendet (mithilfe der Browsererweiterung oder des Proxys), und versuchen Sie dann, dieselben Header mit CURL zu senden - möglicherweise einzeln, bis Sie herausgefunden haben, mit welchen Headern die Anforderung funktioniert.
curl -A [Benutzeragent] -H [Header] " http://something.com/api "
quelle