Comment utiliser curl pour obtenir une requête GET exactement comme utiliser Chrome?

j'ai une api web http://something.com/api et je veux utiliser GET pour obtenir le corps de réponse.

C'est mon ordre:

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

bien sûr, il échoue et donne un message d'erreur.

lorsque J'utilise Chrome et que j'entre l'url ci-dessus, tout est correct. Cependant je fais les mêmes choses avec Firefox, l'url me donne le même message d'erreur. J'essaie de répéter L'action avec Chrome extension DHC, la requête donne une réponse correcte encore. Après quelques recherches, je crois que l'option curl --user-agent fait une différence. Quelle est la bonne façon de configurer GoogleChrome? Ou ce n'est pas la question, le problème vient des autres domaines? Je vous remercie beaucoup.

38
demandé sur wdetac 2015-02-27 11:39:49

3 réponses

si vous avez besoin de définir la chaîne d'en-tête utilisateur dans la requête curl, vous pouvez utiliser l'option -H pour définir l'agent utilisateur comme:

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" /q/how-to-use-curl-to-get-a-get-request-exactly-same-as-using-chrome-62326/"http://www.charlesproxy.com/">Charles Proxy really helps make short work of something like what you are asking. Here is what I do, using this SO page as an example (as of July 2015 using Charles version 3.10):

  1. Get Charles Proxy running
  2. Make web request using browser
  3. Find desired request in Charles Proxy
  4. Right click on request in Charles Proxy
  5. Select 'Copy cURL Request'

Copy cURL Request example in Charles 3.10.2

You now have a cURL request you can run in a terminal that will mirror the request your browser made. Here is what my request to this page looked like (with the cookie header removed):

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
56
répondu Mike Grace 2016-08-17 19:52:07

ouvrez les outils de développement Chrome, allez à l'onglet Réseau, faites votre demande (vous pouvez avoir besoin de vérifier "préserver le journal" si la page se rafraîchit). Trouvez la requête sur la gauche, droit-cliquez, "Copier comme cURL".

7
répondu hoodslide 2018-03-05 21:28:12

vérifiez les en-têtes HTTP que chrome envoie avec la requête(en utilisant l'extension du navigateur ou le proxy) puis essayez d'envoyer les mêmes en - têtes avec CURL-éventuellement un à la fois jusqu'à ce que vous compreniez quel (s) en-tête fait fonctionner la requête.

curl- [user-agent] -H [en-têtes] " http://something.com/api "

2
répondu MegaAppBear 2015-02-27 08:51:35