Situatie
cURL(Client URL) este un instrument clasic de linie de comandă *nix pentru lucrul cu cererile URL. Acesta permite trimiterea de cereri HTTP/HTTP, descărcarea sau trimiterea unui fișier către server, accesarea API, autentificarea la un serviciu web etc.
Este frecvent ca utilizatorii Windows să confunde comanda cURL cu cmdlet-ul Invoke-WebRequest. Problema este că, înainte de PowerShell Core 6.x, comanda cURL din PowerShell era un alias pentru cmdlet-ul Invoke-WebRequest.
În PowerShell Core 6.x și 7.x, comanda cURL rulează instrumentul C:\Windows\system32\curl.exe. Începând cu Windows 10 1803 și Windows Server 2019, comanda curl.exe este disponibilă implicit(pentru versiunile anterioare de Windows, puteți descărca manual cURL de la următorul link https://curl.se/windows/).
Pentru a verifica daca curl este instalat si pentru a verifica versiunea:
curl -V
Dacă nu funcționeaza sau vi se solicită parametrii suplimentari, folositi următoarea comandă în Powershell:
Remove-Item Alias:\curl
Sintaxa cmdletului Invoke-WebRequest și a utilitarului cURL.exe sunt foarte diferite. Dacă sunteți obișnuit să utilizați comanda cURL într-un mediu Linux, s-ar putea să vi se pară dificil să traduceți comenzile familiare în sintaxa PowerShell.
Solutie
Să aruncăm o privire la câteva exemple (vom lua site-ul startechteam.ro ca și exemplu) de comenzi cURL tipice și echivalentele lor în PowerShell:
1. Verificarea disponibilității site-ului (HTTP Status):
curl -Uri “https://www.startechteam.ro”
Sau doar conținutul HTML brut al unei pagini web și starea răspunsului HTTP:
curl https://startechteam.ro
PS: Invoke-WebRequest -Uri “https://startechteam.ro”
Dacă codul de stare este 200, site-ul funcționează.
Dacă codul este 403, 404 sau 500, este posibil să existe probleme cu accesul.
2. Ca să obțineți doar starea paginii și header (antetul):
curl -I https://startechteam.ro
PS: Invoke-WebRequest -Uri “https://startechteam.ro” -Method Head
3. Accesați o pagină web utilizând un anumit User-Agent(versiune de browser):
curl -A “Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:135.0) Gecko/20100101 Firefox/135” https://startechteam.ro
$response = Invoke-WebRequest -Uri “https://startechteam.ro” -UserAgent “Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:135.0) Gecko/20100101 Firefox/135”
4. Pentru a descărca o întreagă pagină html:
curl -Uri “https://www.startechteam.ro” -OutFile “C:\Users\Public\homepage.html”
5. Pentru a descărca un anumit fișier(de exemplu, PDF, ZIP, EXE,etc.; în exemplu vom in)
curl -Uri “https://www.startechteam.ro/FișierulDorit.pdf” -OutFile “C:\FișierulDorit.pdf”
6. Pentru a extrage toate link-urile de pe site:
(Invoke-WebRequest “https://www.startechteam.ro”).Links.Href
Este util pentru web scraping sau verificarea structurii site-ului
7. Efectuați un simplu Web Scrape(extrageți conținutul paginii)
(Invoke-WebRequest “https://www.startechteam.ro”).Content
Utilizați această funcție pentru a analiza conținutul site-ului, cum ar fi descrierile produselor sau detaliile companiei.
8. Dacă o comandă curl nu funcționează, utilizați -v (modul verbose) pentru a vedea mai multe detalii:
curl -v https://www.startechteam.ro
Pentru funcționare va returna conform imaginii:
Conform imaginii arată:
– Cererea completă trimisă.
– Antetele de răspuns HTTP.
– Orice erori de conectare.
Pentru și mai multe detalii, utilizați –trace:
curl –trace C:\curl.log https://www.startechteam.ro
Principala diferență dintre cmdlet-ul WebRequest și comanda cURL este că PowerShell lucrează și returnează obiecte, nu doar text simplu. Comanda cURL returnează text brut. Acest text trebuie analizat separat. Cu toate acestea, cURL este mai convenabilă dacă trebuie să trimiteți o cerere HTTP complexă sau să analizați automat un obiect JSON.
Leave A Comment?