cURL to projekt oprogramowania składający się z biblioteki (libcurl) i muszlę (curl) zorientowany na przesyłanie plików. Obsługuje między innymi protokoły FTP, FTPS, HTTP, HTTPS, TFTP, SCP, SFTP, Telnet, DICT, FILE i LDAP.
cURL obsługuje certyfikaty HTTPS, HTTP POST, HTTP PUT, Przesyłanie FTP, Kerberos, przesyłanie formularzy HTTP, proxy, cookies, uwierzytelnianie nazwy użytkownika i hasła (Basic, DIgest, NTLM i Negotiate dla HTTP i kerberos 4 dla FTP), kontynuacja transferu plików, tunelowanie proxy HTTP, IMAP, POP3, LDAP, RTSP, RTMP i inne korzyści.
Głównym celem i zastosowaniem cURL jest automatyzacja przesyłania plików lub nienadzorowane sekwencje operacji. Jest to na przykład ważne narzędzie do symulacji działań użytkowników w przeglądarce internetowej.
W zasadzie jest to narzędzie do odbierania i wysyłania danych przez sieć, który zapewnia możliwość elastycznego tworzenia żądania poprzez ustawienie parametrów takich jak cookie, user_agent, referer i każdy inny nagłówek.
Poza tym biblioteka libcurl zapewnia API do używania wszystkich funkcji curl w programach w językach takich jak C, Perl, PHP, Python.
cURL jest otwartym, bezpłatnym oprogramowaniem rozpowszechnianym na licencji MIT.
Informacje o nowej wersji cURL 7.66.0
Ostatnio została wydana nowa wersja cURL lktóry osiąga z poprawką 77 błędów i wdraża kilka innowacji, wśród których zaznaczono dodanie wstępnej obsługi protokołu HTTP / 3, który nie został jeszcze doprowadzony do w pełni funkcjonalnej postaci i jest domyślnie wyłączony (na przykład, dopóki program obsługi zakończenia połączenia nie będzie gotowy, zrównoleglenie i przetwarzanie dużych żądań nie działają).
Aby włączyć HTTP 3, wymagana jest przebudowa za pomocą quiche lub ngtcp2 + nghttp3. Proponuje się użycie parametru «–http3» i opcji libcurl «CURLOPT_HTTP_VERSION»;
Inną ważną zmianą w tej nowej wersji cURL jest to dodano parametry „-Z” („–parallel”) i „–parallel-max”, która umożliwia organizowanie jednoczesnego ładowania listy adresów URL w wiele sekwencji.
Dodano możliwość ustawienia innego identyfikatora autoryzacji w SASL, określonego przez parametr „–sasl-authzid” lub opcję CURLOPT_SASL_AUTHZID (identyfikator uwierzytelniania jest przekazywany przez CURLOPT_USERPWD).
Przetwarzanie Retry-After HTTP i 429 kodu powrotnego zostało zaimplementowane przy użyciu parametru „–retry” lub opcji CURLINFO_RETRY_AFTER.
Nagłówek Retry-After określa opóźnienie przed wysłaniem kolejnych żądań w przypadku otrzymania kodów odpowiedzi 429 (zbyt wiele żądań), 503 (usługa niedostępna) lub 301 (trwale przeniesiona).
Spośród innych zmian, które wyróżniają się w nowej wersji:
- Dodano funkcję curl_multi_poll (), identyczną jak curl_multi_wait (), z wyjątkiem sytuacji, gdy nie ma deskryptorów plików do oczekiwania (curl_multi_wait kończy działanie natychmiast, a curl_multi_poll wprowadza krótkie opóźnienie przed zakończeniem, aby uniknąć fałszywych sytuacji ładowania z powodu cyklicznego wywołania)
- Począwszy od tej wersji, curl będzie domyślnie uznawać te odpowiedzi HTTP za nieważne
- Naprawione luki w zabezpieczeniach: CVE-2019-5481: podwójna blokada wolnej pamięci w FTP-KRB (kerberos przez FTP); CVE-2019-5482: przepełnienie bufora w sterowniku TFTP.
- Naprawiono regresję, która powodowała, że curl nie używał poprawnie danych logowania adresu URL podczas przeprowadzania uwierzytelniania wielostopniowego (takiego jak HTTP Digest) za pomocą serwera proxy.
Jak zainstalować cURL w systemie Linux?
Dla tych, którzy są zainteresowani możliwością zainstalowania nowej wersji cURL Mogą to zrobić, pobierając kod źródłowy i kompilując go.
W tym celu pierwszą rzeczą, którą zamierzamy zrobić, jest pobranie ostatniego pakietu cURL za pomocą terminala, w tym wpiszmy:
wget https://curl.haxx.se/download/curl-7.66.0.tar.xz
Następnie rozpakujemy pobrany pakiet za pomocą:
tar -xzvf curl-7.66.0.tar.xz
Do nowo utworzonego folderu wchodzimy za pomocą:
cd curl-7.66.0
Wchodzimy jako root z:
sudo su
I wpisujemy:
./configure --prefix=/usr \ --disable-static \ --enable-threaded-resolver \ --with-ca-path=/etc/ssl/certs &&
make make install && rm -rf docs/examples/.deps &&
find docs \( -name Makefile\* -o -name \*.1 -o -name \*.3 \) -exec rm {} \; &&
install -v -d -m755 /usr/share/doc/curl-7.66.0 && cp -v -R docs/* /usr/share/doc/curl-7.66.0
Wreszcie możemy sprawdzić wersję za pomocą:
curl --version