Jeśli potrzebujesz ustawić ciąg nagłówka użytkownika w żądaniu curl, możesz użyć -H
opcji ustawienia klienta użytkownika, na przykład:
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
Korzystanie z narzędzia proxy, takiego jak Charles Proxy, naprawdę pomaga w krótkiej pracy nad czymś, o co prosisz. Oto, co robię, używając tej strony SO jako przykładu (od lipca 2015 przy użyciu wersji Charles 3.10):
- Uruchom Charles Proxy
- Wyślij żądanie sieciowe za pomocą przeglądarki
- Znajdź żądane żądanie w Charles Proxy
- Kliknij prawym przyciskiem myszy żądanie w Charles Proxy
- Wybierz „Kopiuj żądanie cURL”
Masz teraz żądanie cURL, które możesz uruchomić w terminalu, które będzie odzwierciedlać żądanie wysłane przez Twoją przeglądarkę. Oto jak wyglądało moje żądanie do tej strony (z usuniętym nagłówkiem pliku cookie):
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
nagłówek tylko w celu wymuszenia wyjścia HTML.Otwórz narzędzia Chrome Developer Tools, przejdź do zakładki Network, wyślij żądanie (może być konieczne sprawdzenie „Preserve Log”, jeśli strona odświeża się). Znajdź żądanie po lewej stronie, kliknij prawym przyciskiem myszy „Kopiuj jako cURL”.
źródło
Sprawdź nagłówki HTTP, które Chrome wysyła z żądaniem (używając rozszerzenia przeglądarki lub serwera proxy), a następnie spróbuj wysłać te same nagłówki z CURL - prawdopodobnie pojedynczo, dopóki nie zorientujesz się, które nagłówki powodują, że żądanie działa.
curl -A [agent-użytkownika] -H [nagłówki] " http://something.com/api "
źródło