Czy korzystasz z Curl? Jeżeli tak, to w jakim celu?

1

Jak dla mnie jest to fajne narzędzie do podglądania nagłówków HTTP oraz wysłania czegoś POSTem bez konieczności użycia przeglądarki.

0

raz na jakiś czas do debugu jak nie mam dostępu do insomnii

1

próbowałem zaprzyjaźnić się z postmanem i nie wyszło. Próbowałem z indomią. Ale jak potrzebuje tokenu do autoryzacji w dziwnym systemie to wywołuje skrypt w bashu używający curla

Chociaż jak miałem pisać cis bardziej skomplikowanego to wolałem Scalę i jej klienta do HTTP

47

Ja tam lubię postmana :P

9

Jak coś testuję głównie. Prawie nic w webie nie robię, nie znam innych narzędzi, curl mi wystarcza.

A, no i pogodę nim sprawdzam: curl wttr.in/Miasto:

Weather report: Katowice

     \  /       Partly cloudy
   _ /"".-.     +5(2) °C       
     \_(   ).   ↑ 17 km/h      
     /(___(__)  10 km
                0.0 mm
                                                       ┌─────────────┐
┌──────────────────────────────┬───────────────────────┤  Fri 23 Dec ├───────────────────────┬──────────────────────────────┐
│            Morning           │             Noon      └──────┬──────┘     Evening           │             Night            │
├──────────────────────────────┼──────────────────────────────┼──────────────────────────────┼──────────────────────────────┤
│      .-.      Light drizzle  │      .-.      Light drizzle  │               Overcast       │               Overcast       │
│     (   ).    +3(0) °C       │     (   ).    +5(1) °C       │      .--.     +4(1) °C       │      .--.     +4(1) °C       │
│    (___(__)   ↑ 12-23 km/h   │    (___(__)   ↗ 15-27 km/h   │   .-(    ).   ↗ 13-21 km/h   │   .-(    ).   ↗ 13-23 km/h   │
│     ‘ ‘ ‘ ‘   2 km           │     ‘ ‘ ‘ ‘   2 km           │  (___.__)__)  10 km          │  (___.__)__)  10 km          │
│    ‘ ‘ ‘ ‘    0.5 mm | 97%   │    ‘ ‘ ‘ ‘    0.5 mm | 89%   │               0.0 mm | 0%    │               0.0 mm | 0%    │
└──────────────────────────────┴──────────────────────────────┴──────────────────────────────┴──────────────────────────────┘
                                                       ┌─────────────┐
┌──────────────────────────────┬───────────────────────┤  Sat 24 Dec ├───────────────────────┬──────────────────────────────┐
│            Morning           │             Noon      └──────┬──────┘     Evening           │             Night            │
├──────────────────────────────┼──────────────────────────────┼──────────────────────────────┼──────────────────────────────┤
│      .-.      Light drizzle  │  _`/"".-.     Patchy rain po…│  _`/"".-.     Patchy rain po…│               Cloudy         │
│     (   ).    +6(2) °C       │   ,\_(   ).   +7(4) °C       │   ,\_(   ).   +7(3) °C       │      .--.     +4(2) °C       │
│    (___(__)   ↗ 19-31 km/h   │    /(___(__)  → 17-26 km/h   │    /(___(__)  ↗ 17-24 km/h   │   .-(    ).   ↗ 12-21 km/h   │
│     ‘ ‘ ‘ ‘   2 km           │      ‘ ‘ ‘ ‘  10 km          │      ‘ ‘ ‘ ‘  10 km          │  (___.__)__)  10 km          │
│    ‘ ‘ ‘ ‘    0.3 mm | 62%   │     ‘ ‘ ‘ ‘   0.1 mm | 68%   │     ‘ ‘ ‘ ‘   0.1 mm | 79%   │               0.0 mm | 0%    │
└──────────────────────────────┴──────────────────────────────┴──────────────────────────────┴──────────────────────────────┘
                                                       ┌─────────────┐
┌──────────────────────────────┬───────────────────────┤  Sun 25 Dec ├───────────────────────┬──────────────────────────────┐
│            Morning           │             Noon      └──────┬──────┘     Evening           │             Night            │
├──────────────────────────────┼──────────────────────────────┼──────────────────────────────┼──────────────────────────────┤
│               Mist           │     \   /     Sunny          │    \  /       Partly cloudy  │               Overcast       │
│  _ - _ - _ -  +3(1) °C       │      .-.      +6(4) °C       │  _ /"".-.     +4(2) °C       │      .--.     +4(2) °C       │
│   _ - _ - _   ↗ 8-15 km/h    │   ― (   ) ―   ↗ 7-10 km/h    │    \_(   ).   ↑ 7-13 km/h    │   .-(    ).   ↖ 8-15 km/h    │
│  _ - _ - _ -  2 km           │      `-’      10 km          │    /(___(__)  10 km          │  (___.__)__)  10 km          │
│               0.0 mm | 0%    │     /   \     0.0 mm | 0%    │               0.0 mm | 0%    │               0.0 mm | 0%    │
└──────────────────────────────┴──────────────────────────────┴──────────────────────────────┴──────────────────────────────┘
Location: Katowice, śląskie, Polska [50.2598987,19.0215852]
2

Curl jest przydatny w web scrappingu. Po wejściu do developer tools na FF mogę sobie klilknąć PPM na request i wybrać, aby zapisało jako curl. Następnie wklejam to w konsolę i stopniowo odzieram ze zbędnych nagłówków, ciastek i tokenów, aż zostaje minimalna ilość parametrów potrzebnych, by uzyskać dostęp do zasobu, po czym dopiero przerabiam to na request z biblioteki. Jest to na tyle powszechny pattern, że framework Scrapy udostępnia nawet funkcję pomocniczą scrapy.utils.curl.curl_to_request_kwargs, które przerabiają takie polecenie na parametry konstruktora obiektu scrapy.http.Request:

>>> from scrapy.utils.curl import curl_to_request_kwargs
>>> from pprint import pprint
>>> 
>>> curl_to_request_kwargs("""curl 'http://bash.org.pl/latest/' -H 'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0' -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8' -H 'Accept-Language: en-US,en;q=0.5' -H 'Accept-Encoding: gzip, deflate' -H 'Referer: http://bash.org.pl/' -H 'Connection: keep-alive' -H 'Cookie: st=; lastid=4863595' -H 'Upgrade-Insecure-Requests: 1' -H 'DNT: 1' -H 'Sec-GPC: 1'""")
{'method': 'GET', 'url': 'http://bash.org.pl/latest/', 'headers': [('User-Agent', 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0'), ('Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8'), ('Accept-Language', 'en-US,en;q=0.5'), ('Accept-Encoding', 'gzip, deflate'), ('Referer', 'http://bash.org.pl/'), ('Connection', 'keep-alive'), ('Upgrade-Insecure-Requests', '1'), ('DNT', '1'), ('Sec-GPC', '1')], 'cookies': {'st': '', 'lastid': '4863595'}}
>>> pprint(_)
{'cookies': {'lastid': '4863595', 'st': ''},
 'headers': [('User-Agent',
              'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) '
              'Gecko/20100101 Firefox/108.0'),
             ('Accept',
              'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8'),
             ('Accept-Language', 'en-US,en;q=0.5'),
             ('Accept-Encoding', 'gzip, deflate'),
             ('Referer', 'http://bash.org.pl/'),
             ('Connection', 'keep-alive'),
             ('Upgrade-Insecure-Requests', '1'),
             ('DNT', '1'),
             ('Sec-GPC', '1')],
 'method': 'GET',
 'url': 'http://bash.org.pl/latest/'}
>>> 
1

W sumie to zależy o jakim CURL piszesz czy takim z command line czy np. CURL z PHP?
Bo z PHP to regularnie z command line mniej ale jakieś skrypty monitorujące usługi itp. to jak najbardziej.

4
  • do zapytania prostych endpointów np. jakieś testowe zapytanie jakiegoś serwisu albo specjalne strony takie jak cheat.sh
  • jak chcę napisać jakiś prosty skrypt w bashu
  • Copy as a cURL, curl to pewnego rodzaju standard w przesylaniu instrukcji na temat tego jak wykonać dane zapytanie
  • jak zapytanie idzie wolno to mogę to jakoś zdiagnozować przy użyciu https://stackoverflow.com/a/22625150/4638604
0

Korzystam przeważnie po to, żeby komuś pokazać przykład wywołania, albo jak chcę na szybko coś wykonać np zmieniając parametry, a w Postmanie nie chce mi się klikać. Sam poleceń raczej nie piszę tylko generuję z Postmana

0

Raczej nie korzystam z curla tj. bardzo sporadycznie gdy chce podeslac komuc cli komende itp itd - GUIowe narzedzia do API mi nie pasuja (postman/insomnia itp itd) w sensie jestem anty GUI - wiekszosc rzeczy robie w terminalu.

Na codzien do API cali po CLI uzywam httpie/curlie jest wygodniejsze i duzo latwiejsze w uzyciu.

0

Wolę już wget ale obu nie polecam.

Osobiście sam sobie napisałem narzedzia do webscrapa i nie musze się stresować jakimiś dziwnymi udogodnieniami i innymi problemami.

0

Mi się najfajniej używa klienta http bardziej tekstowego z autocomplete, do developmentu.

Postman dla pojedyńczych requestów jest taki no 3/10; ale fajnie można w nim budować kolekcje requestów do używania wielu calli na raz.

0

Skrypty - rzecz oczywista. Jako format zapisu requesta dość często. Na co dzień wolę klienta wbudowanego w IntelliJ

0

Jak jestem podpięty przez ssh do zdalnego hosta w chmurze i akurat muszę wykonać jakieś zapytanie testowe do API z poziomu basha.

1 użytkowników online, w tym zalogowanych: 0, gości: 1