Cum se configurează smartphone-uri și PC-uri. Portal informativ

utilitar curl linie de comandă. Introducere în cURL

Acest articol presupune că sunteți familiarizat cu elementele de bază ale rețelei și limbajul HTML.

Abilitatea de a scrie scenarii este esențială în construirea unui bun sistem informatic. Extensibilitatea sistemelor Unix folosind scripturi shell și diverse programe performant comenzi automate este unul dintre motivele pentru care au atât de mult succes.

Numărul tot mai mare de aplicații care se mută pe web a dus la faptul că subiectul scripturilor HTTP devine din ce în ce mai solicitat. Sarcinile importante în acest domeniu sunt extracție automată informații de pe Internet, trimiterea sau descărcarea de date către servere web etc.

Curl - instrument Linie de comanda, care vă permite să faceți manipularea adreselor URL și diferite tipuri de transferuri. Acest articol se concentrează pe realizarea de solicitări HTTP simple. Se presupune că știți deja unde să apelați

# curl --ajutor

# curl --manual

pentru informații despre curl.

Curl nu este un instrument care va face totul pentru tine. Acesta creează cereri, primește date și trimite date. Este posibil să aveți nevoie de niște „clei” pentru a ține totul împreună, poate un limbaj de scripting (cum ar fi bash) sau câteva apeluri manuale.

1. Protocolul HTTP

HTTP este protocolul folosit la primirea datelor de la serverele web. Este un protocol foarte simplu care este construit pe TCP/IP. Protocolul permite, de asemenea, să fie trimise informații către server de la client folosind mai multe metode, așa cum va fi arătat în continuare.

HTTP sunt șiruri de text ASCII trimise de la un client la un server pentru a solicita o acțiune. La primirea unei cereri, serverul răspunde clientului cu mai multe servicii linii de text, iar apoi conținutul real.

Folosind opțiunea curl -v, puteți vedea ce comenzi le trimite curl către server, precum și alt text informațional. Comutatorul -v este poate singura modalitate de a depana sau chiar de a înțelege interacțiunea dintre curl și serverul web.

2.URL

Formatul URL (Uniform Resource Locator - adresa universală a resursei) specifică adresa unei anumite resurse de pe Internet. Probabil știți acest lucru, exemple de adrese URL sunt http://curl.haxx.se sau https://yourbank.com.

3. Obțineți pagina (GET).

Cea mai simplă și mai comună solicitare HTTP este obținerea conținutului unei adrese URL. URL-ul se poate referi la o pagină web, o imagine sau un fișier. Clientul trimite o cerere GET către server și primește documentul solicitat. Dacă executați comanda

# curl http://curl.haxx.se

veți primi o pagină web afișată în fereastra terminalului dvs. Documentul HTML complet conținut la această adresă URL.

Toate răspunsurile HTTP conțin un set de anteturi care sunt de obicei ascunse. Pentru a le vedea împreună cu documentul în sine, utilizați opțiunea curl -i. De asemenea, puteți solicita numai anteturi cu comutatorul -I (care va forța curl să facă o solicitare HEAD).

4. Forme

Formularele sunt modalitatea principală de a prezenta un site web ca o pagină HTML cu câmpuri în care utilizatorul introduce date și apoi dă clic pe un buton „OK” sau „Trimite”, după care datele sunt trimise către server. Serverul utilizează apoi datele primite și decide cum să procedeze: caută informațiile din baza de date, arată adresa introdusă pe hartă, adaugă un mesaj de eroare sau folosește informațiile pentru autentificarea utilizatorului. Desigur, există un program pe partea de server care vă acceptă datele.

4.1 GET

Formul GET utilizează metoda GET, de exemplu, după cum urmează:

Dacă deschideți acest cod în browser, veți vedea un formular cu câmp de textși un buton etichetat „OK”. Dacă introduceți „1905” și faceți clic pe OK, browserul va genera o nouă adresă URL de urmat. Adresa URL va fi un șir format din calea adresei URL anterioare și un șir precum „junk.cgi?birthyear=1905&press=OK”.

De exemplu, dacă formularul a fost localizat la „www.hotmail.com/when/birth.html”, atunci făcând clic pe butonul OK veți ajunge la adresa URL „www.hotmail.com/when/junk.cgi?birthyear= 1905&press=OK" .

Majoritate motoare de căutare lucrează în acest fel.

Pentru ca curl să genereze o solicitare GET, introduceți pur și simplu ceea ce vă așteptați de la formular:

# curl „www.hotmail.com/when/junk.cgi?birthyear=1905&press=OK”

4.2 POST

Metoda GET face ca toate informațiile introduse să fie afișate în bara de adresa browser-ul dvs. Poate că acest lucru este bun atunci când trebuie să marcați o pagină, dar este un dezavantaj evident când introduceți în câmpuri de formular. informatie clasificata, sau când cantitatea de informații introduse în câmpuri este prea mare (rezultând o adresă URL care nu poate fi citită).

Protocolul HTTP oferă metoda POST. Cu el, clientul trimite date separat de URL și, prin urmare, nu le vei vedea în bara de adrese.

Formularul care generează cererea POST este similar cu cel precedent:

Curl poate forma o solicitare POST cu aceleași date, după cum urmează:

# curl -d "birthyear=1905&press=%20OK%20" www.hotmail.com/when/junk.cgi

Această solicitare POST utilizează „Content-Type application/x-www-form-urlencoded”, care este cea mai utilizată modalitate.

Datele pe care le trimiteți către server trebuie să fie codificate corect, curl nu o va face pentru dvs. De exemplu, dacă doriți ca datele să conțină un spațiu, trebuie să înlocuiți acel spațiu cu %20 și așa mai departe. Lipsa de atenție la această problemă greseala comuna, din cauza căreia datele nu sunt transmise așa cum ar trebui.

În 1995 a fost stabilit mod suplimentar transfera date prin HTTP. Este documentat în RFC 1867, motiv pentru care este uneori denumit RFC1867-posting.

Această metodă este concepută în principal pentru sprijin mai bunîncărcări de fișiere. Formularul care permite utilizatorului să încarce un fișier arată astfel în HTML:

Rețineți că Content-Type este setat la multipart/form-data.

Pentru a trimite date la un astfel de formular folosind curl, introduceți comanda:

# curl -F [email protected]-Fpress=OK

4.4 Câmpuri ascunse

O modalitate obișnuită de a comunica informațiile de stare în aplicațiile HTML este utilizarea câmpurilor ascunse în formulare. Câmpurile ascunse nu sunt completate, sunt invizibile pentru utilizator și sunt transmise în același mod ca și câmpurile obișnuite.

Un exemplu simplu de formular cu un câmp vizibil, un câmp ascuns și un buton OK:

Pentru a trimite o cerere POST cu curl, nu trebuie să vă gândiți dacă câmpul este ascuns sau nu. Pentru bucle sunt toate la fel:

# curl -d "birthyear=1905&press=OK&person=daniel"

4.5 Aflați cum arată o solicitare POST

Când doriți să completați un formular și să trimiteți date către server folosind curl, probabil că doriți ca solicitarea POST să arate exact ca cea făcută folosind browserul.

O modalitate simplă de a vedea solicitarea dvs. POST este să salvați pagina HTML a formularului pe disc, să schimbați metoda în GET și să apăsați butonul „Trimiteți” (puteți schimba și adresa URL la care vor fi trimise datele).

Veți vedea că datele au fost adăugate la adresa URL, separate prin caractere „?”, așa cum era de așteptat când utilizați formularele GET.

5. PUNE

Poate, Cel mai bun modÎncărcarea datelor pe serverul HTTP este să utilizați PUT. Din nou, acest lucru necesită un program (script) pe partea din spate care știe ce să facă și cum să accepte un flux HTTP PUT.

Trimiteți un fișier către server folosind curl:

# curl -T uploadfile www.uploadhttp.com/receive.cgi

6. Autentificare

Autentificare - transmiterea unui nume de utilizator și a unei parole către server, după care verifică dacă aveți dreptul de a efectua solicitarea solicitată. Autentificarea de bază (pe care curl o folosește în mod implicit) se bazează text clar, ceea ce înseamnă că numele de utilizator și parola nu vor fi criptate, ci doar ușor „obfucate” folosind algoritmul Base64, ceea ce lasă posibil ca atacatorii să afle aceste informații pe drumul dintre tine și serverul HTTP.

Spune-i lui curl să folosească numele de utilizator și parola:

# curl -u nume:parolă www.secrets.com

Site-ul poate necesita utilizarea unei alte metode de autentificare (vedeți ce scrie serverul în anteturi), în aceste cazuri, puteți utiliza cheile --ntlm, --digest, --negotiate sau chiar --anyauth. Uneori, accesul la serverele HTTP externe are loc prin intermediul unui proxy, așa cum se face adesea în companii și firme. Un proxy HTTP poate necesita propriul nume de utilizator și parolă pentru a accesa Internetul. Cheie de curl relevantă:

# curl -U proxyuser:proxypassword curl.haxx.se

Dacă proxy-ul necesită autentificare NTLM, specificați --proxy-ntlm, dacă metoda Digest, atunci --proxy-digest.

Dacă nu specificați o parolă în comutatoarele -u și -U, atunci curl vă va cere în modul interactiv.

Rețineți că atunci când curl rulează, șirul de rulare (și odată cu el cheile și parolele) pot fi vizibile pentru alți utilizatori din sistemul dvs. în lista de activități. Există modalități de a preveni acest lucru. Mai multe despre asta mai jos.

7. Referitor

Solicitarea HTTP poate include un câmp „referer” care indică de ce adresă URL provine utilizatorul această resursă. Unele programe/scripturi verifică câmpul „referer” și nu execută cererea dacă utilizatorul provine de pe o pagină necunoscută. Deși acesta este un mod prostesc de a verifica, multe scripturi îl folosesc totuși. Cu curl, puteți pune orice în câmpul „referer” și astfel îl puteți forța să facă ceea ce doriți.

Acest lucru se face în felul următor:

# curl -e http://curl.haxx.se daniel.haxx.se

8. Agent utilizator

Toate solicitările HTTP acceptă un câmp „User-Agent”, care specifică aplicație client utilizator. Multe aplicații web folosesc aceste informații pentru a afișa pagina într-un fel sau altul. Programatorii web creează mai multe versiuni ale unei pagini pentru utilizatori browsere diferite a îmbunătăți aspect, folosirea diverselor scripturi javascript, vbscript etc.

Uneori este posibil să descoperiți că curl returnează o pagină care nu este ceea ce ați văzut în browser. În acest caz, este potrivit să folosiți câmpul „User Agent” pentru a înșela din nou serverul.

Deghize curl ca Internet Explorer pe o mașină cu Windows 2000:

# curl -A „Mozilla/4.0 (compatibil; MSIE 5.01; Windows NT 5.0)”

De ce să nu deveniți Netscape 4.73 pe o mașină Linux (PIII):

# curl -A „Mozilla/4.73 (X11; U; Linux 2.2.15 i686)”

9. Redirecționări

Ca răspuns la solicitarea dvs., serverul, în loc de pagina în sine, poate returna o indicație despre unde ar trebui să meargă browserul pentru a ajunge la pagina dorită. Antetul care spune browserului această redirecționare este „Locație:”.

În mod implicit, curl nu merge la adresa specificată în „Locație:”, ci pur și simplu afișează pagina ca de obicei. Dar îl poți trimite așa:

# curl -L www.sitethatredirects.com

Dacă utilizați cereri curl pentru POST către un site care redirecționează imediat către o altă pagină, puteți utiliza în siguranță -L și -d/-F. Curl va face o cerere POST pentru prima pagină și apoi o solicitare GET pentru următoarea.

10. Cookie-uri

Cookie-urile permit browserelor web să controleze starea din partea clientului. Cookie este un nume cu conținut atașat. Serverul, prin trimiterea cookie-urilor, spune clientului calea și numele gazdei unde vor fi trimise cookie-urile data viitoare, spune durata de viață a cookie-urilor și alți parametri.

Când un client se conectează la server la adresa specificată în cookie-ul primit, clientul trimite acel cookie către server (dacă durata de viață nu a expirat).

Multe aplicații și servere folosesc această metodă pentru a combina cereri multiple într-o singură sesiune logică. Pentru ca curl să îndeplinească și această funcție, trebuie să putem salva și trimite cookie-uri, la fel cum fac browserele.

Cea mai ușoară modalitate de a trimite un cookie la server atunci când preluați o pagină cu curl este să adăugați opțiunea corespunzătoare pe linia de comandă:

# curl -b „nume=Daniel” www.cookiesite.com

Cookie-urile sunt trimise ca antete HTTP obișnuite. Acest lucru permite curl să stocheze cookie-uri prin stocarea antetelor. Salvarea cookie-urilor cu curl se face cu comanda:

# curl -D headers_and_cookies www.cookiesite.com

(apropo, este mai bine să folosiți comutatorul -c pentru a salva cookie-urile, mai multe despre asta mai jos).

curl are un handler de cookie-uri complet funcțional, care este util atunci când doriți să vă conectați din nou la server și să utilizați cookie-urile pe care le-ați salvat data trecută (sau realizate manual). Pentru a utiliza module cookie stocate într-un fișier, apelați curl astfel:

# curl -b cookie-uri stocate_în_fișier www.cookiesite.com

Motorul cookie curl este activat când specificați comutatorul -b. Dacă doriți ca curl să accepte numai cookie-uri, utilizați -b cu un fișier care nu există. De exemplu, dacă doriți ca curl să accepte cookie-uri dintr-o pagină și apoi să urmeze o redirecționare (poate să returneze cookie-ul care tocmai a fost acceptat), puteți apela curl astfel:

# curl -b nada -L www.cookiesite.com

Curl poate citi și scrie cookie-uri în format Netscape și Mozilla. Acest mod convenabil schimbă cookie-uri între browsere și script-uri automate. Comutatorul -b determină automat dacă fisierul dat prăjitură browsere specificateși gestionați-l în consecință și folosind opțiunea -c/--cookie-jar, puteți forța curl să scrie un cookie nou când operațiunea se termină:

# curl -b cookies.txt -c newcookies.txt www.cookiesite.com

11. HTTPS

Există mai multe moduri de a vă securiza transmisiile HTTP. Cel mai protocol cunoscut rezolvarea acestei probleme este HTTPS sau HTTP peste SSL. SSL criptează toate datele trimise și primite prin rețea, ceea ce crește probabilitatea ca informațiile dvs. să rămână secrete.

Curl acceptă solicitări către serverele HTTPS datorită bibliotecii gratuite OpenSSL. Solicitări apar în mod obişnuit:

# curl https://that.secure.server.com

11.1 Certificate

În lumea HTTPS, utilizați certificate pentru autentificare în plus față de numele de utilizator și parolă. Curl acceptă certificate pe partea clientului. Toate certificatele sunt blocate cu o expresie de acces pe care trebuie să o introduceți înainte ca Curl să poată începe să lucreze cu ele. Fraza cheie poate fi specificat fie pe linia de comandă, fie introdus interactiv. Certificatele în curl sunt folosite astfel:

# curl -E mycert.pem https://that.secure.server.com

Curl autentifică, de asemenea, serverul prin verificarea certificatului serverului față de unul stocat local. O nepotrivire va duce la refuzul buclei de a se conecta. Pentru a ignora autentificarea, utilizați comutatorul -k.

Mai mult informatii detaliate certificatele pot fi găsite la http://curl.haxx.se/docs/sslcerts.html.

12. Anteturile cererii arbitrare

Poate fi necesar să modificați sau să adăugați elemente cereri individuale răsuci.

De exemplu, puteți modifica solicitarea POST în PROPFIND și puteți trimite datele ca „Tip de conținut: text/xml” (în loc de tipul de conținut obișnuit):

# curl -d " " -H "Tip de conținut: text/xml" -X PROPFIND url.com

Puteți elimina orice antet specificându-l fără conținut. De exemplu, puteți elimina antetul „Gazdă:”, făcând astfel cererea „goală”:

# curl -H „Gazdă:” http://mysite.com

De asemenea, puteți adăuga anteturi. Serverul dvs. poate avea nevoie de un antet „Destinație:”:

# curl -H „Destinație: http://moo.com/nowhere” http://url.com

13. Depanare

Se întâmplă adesea ca un site să răspundă la solicitările curl diferit față de solicitările browserului. În acest caz, trebuie să asimilați curl la browser cât mai mult posibil:

  • Utilizați comutatorul --trace-ascii pentru a salva un raport detaliat al solicitărilor, astfel încât să le puteți examina în detaliu și să înțelegeți problema.
  • Asigurați-vă că verificați dacă există cookie-uri și le utilizați atunci când este necesar (citiți comutatorul -b și comutatorul de salvare -c)
  • Specificați unul dintre cele mai recente browsere populare în câmpul „user-agent”.
  • Completați câmpul „referer” așa cum o face browserul
  • Dacă utilizați solicitări POST, asigurați-vă că toate câmpurile sunt transmise în aceeași ordine ca browserul (vezi mai sus, punctul 4.5)

Un bun ajutor în această sarcină dificilă este pluginul Mozilla/Firefox LiveHTTPHeader, care vă permite să vizualizați toate anteturile pe care le trimite și le primește acest browser (chiar și atunci când utilizați HTTPS).

O abordare la nivel mai scăzut este de a capta traficul HTTP în rețea folosind programe precum ethereal sau tcpdump și apoi de a analiza ce antete au fost primite și trimise de browser (HTTPS face această abordare ineficientă).

RFC 2616 este citit obligatoriu pentru oricine dorește să înțeleagă protocolul HTTP.

RFC 2396 explică sintaxa URL.

RFC 2109 definește modul în care funcționează cookie-urile.

RFC 1867 definește formatul Post pentru încărcare fișier.

http://openssl.planetmirror.com - Pagina principala proiectul OpenSSL

http://curl.haxx.se - pagina principală a proiectului cURL

Viața unui dezvoltator web este afectată de dificultăți. Este deosebit de frustrant atunci când sursa acestor dificultăți este necunoscută. Este o problemă cu trimiterea unei solicitări, sau cu un răspuns, sau cu o bibliotecă terță parte sau API-ul extern are erori? Există multe instrumente diferite care ne pot face viața mai ușoară. Iată câteva instrumente de linie de comandă pe care personal le găsesc de neprețuit.

răsuci
cURL este un program pentru transferul de date prin diferite protocoale, similar cu wget. Principala diferență este că, implicit, wget salvează într-un fișier, în timp ce cURL iese în linia de comandă. Acest lucru face foarte ușor să vizualizați conținutul site-ului web. De exemplu, iată cum să obțineți rapid IP-ul extern curent:

$ curl ifconfig.me 93.96.141.93
Parametrii -i(arată titluri) și -Eu(afișați numai antetele) face din cURL un instrument excelent pentru depanarea răspunsurilor HTTP și pentru a analiza exact ce vă trimite serverul:

$ curl -I site HTTP/1.1 200 OK Server: nginx Data: joi, 18 aug 2011 14:15:36 GMT Tip de conținut: text/html; charset=utf-8 Conexiune: keep-alive Keep-alive: timeout=25
Parametru -L de asemenea, util, face ca cURL să urmărească automat redirecționările. cURL acceptă autentificare HTTP, cookie-uri, tunelare prin proxy HTTP, setări manuale titluri și multe, multe altele.

Asediu
- unealtă pentru testarea sarcinii. În plus, are o opțiune la îndemână -g, care este foarte asemănător cu curl -il, dar vă arată și antetele solicitării http. Iată un exemplu de pe google.com (unele titluri au fost eliminate pentru concizie):

$ siege -g www.google.com GET / HTTP/1.1 Gazdă: www.google.com User-Agent: JoeDog/1.00 (X11; I; Siege 2.70) Conexiune: închide HTTP/1.1 302 Locație găsită: http:// www.google.co.uk/ Tip de conținut: text/html; charset=UTF-8 Server: gws Lungimea conținutului: 221 Conexiune: închide GET / HTTP/1.1 Gazdă: www.google.co.uk Agent utilizator: JoeDog/1.00 (X11; I; Siege 2.70) Conexiune: închide HTTP/ 1.1 200 OK Tip de conținut: text/html; set de caractere=ISO-8859-1 X-XSS-Protecție: 1; mode=block Conexiune: close
Dar ceea ce este cu adevărat excelent pentru Siege este testarea încărcării. La fel ca benchmark-ul Apache ab, poate trimite multe solicitări simultane către site și poate vedea cum gestionează traficul. ÎN următorul exemplu arată cum testăm Google cu 20 de solicitări timp de 30 de secunde, după care este afișat rezultatul:

$ siege -c20 www.google.co.uk -b -t30s ... Ridicarea asediului serverului... gata. Tranzacții: 1400 de accesări Disponibilitate: 100,00 % Timp scurs: 29,22 secunde Date transferate: 13,32 MB Timp de răspuns: 0,41 secunde Rata tranzacției: 47,91 trans/sec Debit: 0,46 MB/sec Concurență: 19,53 tranzacții cu succes: 40 tranzacții cu succes: 19,53 tranzacții cu succes 4,08 Cea mai scurtă tranzacție: 0,08
Una dintre cele mai caracteristici utile Siege este că poate funcționa nu numai cu o singură adresă, ci și cu o listă de adrese URL dintr-un fișier. Acest lucru este grozav pentru testarea încărcării, deoarece puteți simula trafic real pe site, mai degrabă decât să atingeți aceeași adresă URL din nou și din nou. De exemplu, iată cum să utilizați Siege pentru a încărca un server folosind adrese din jurnalul dvs. Apache:

$ cut -d " " -f7 /var/log/apache2/access.log > urls.txt $ siege -c -b -f urls.txt
ngrep
Pentru o analiză serioasă a traficului, există Wireshark cu mii de setări, filtre și configurații. Există și o versiune de linie de comandă rechinul. Dar pentru sarcini simple, consider că funcționalitatea Wireshark este redundantă. Deci până am nevoie armă puternică, Eu folosesc . Îți permite să faci pachete de rețea la fel ca grep face cu fișierele.

Pentru traficul web, aproape întotdeauna veți dori să utilizați -W pentru a păstra formatarea șirurilor, precum și opțiunea -q, care ascunde informații redundante despre pachetele neadecvate. Iată un exemplu de comandă care interceptează toate pachetele cu o comandă GET sau POST:

ngrep -q -W byline "^(GET|POST).*"
Puteți adăuga un filtru de pachete suplimentar, de exemplu prin gazdă dată, adresa IP sau port. Iată un filtru pentru tot ce sosește și trafic de ieșire la google.com, portul 80, care conține cuvântul „căutare”.

ngrep -q -W byline „căutare” gazdă www.google.com și portul 80

De multe ori trebuie să încărcăm diverse fișiere de pe internet, de exemplu fișiere executabile programe, fișiere script, arhive sursă. Dar nu trebuie să se facă întotdeauna printr-un browser. În multe situații, este mult mai ușor să efectuați toate acțiunile prin intermediul terminalului. Pentru că astfel poți automatiza procesul. Pe de altă parte, webmasterii din când în când trebuie să testeze disponibilitatea site-urilor web, să verifice anteturile trimise și primite și multe altele.

Pentru a rezolva astfel de probleme și probleme ale unui cerc similar, puteți utiliza utilitarul curl. Vă permite să rezolvați o gamă mult mai largă de sarcini, inclusiv simularea acțiunilor utilizatorului pe site. În acest articol, vom analiza cum să utilizați curl, ce este și de ce este necesar acest program.

De fapt, curl este mai mult decât un utilitar de linie de comandă pentru Linux sau Windows. Acesta este un set de biblioteci care se implementează capabilități de bază lucreaza cu pagini URLși transfer de fișiere. Biblioteca acceptă protocoale: FTP, FTPS, HTTP, HTTPS, TFTP, SCP, SFTP, Telnet, DICT, LDAP, precum și POP3, IMAP și SMTP. Este excelent pentru a simula acțiunile utilizatorului pe pagini și alte operațiuni URL.

Suportul pentru biblioteca curl a fost adăugat la multe diverse limbi programare și platforme. Utilitarul curl este un înveliș independent pentru această bibliotecă. Pe acest utilitar ne vom concentra în acest articol.

comanda curl

Înainte de a trece la o descriere a modului în care poate fi utilizată comanda curl linux, să analizăm utilitarul în sine și principalele sale opțiuni de care vom avea nevoie. Sintaxa utilitarului este foarte simplă:

link pentru opțiuni curl $

Acum să ne uităm la opțiunile principale:

  • -# - afișați o bară de progres simplă în timpul încărcării;
  • -0 - utilizare protocol http 1.0;
  • -1 - utilizați protocolul de criptare tlsv1;
  • -2 - utilizați sslv2;
  • -3 - utilizați sslv3;
  • -4 - utilizați ipv4;
  • -6 - utilizați ipv6;
  • -A- specificați USER_AGENT;
  • -b- salvați cookie într-un fișier;
  • -c- trimite un Cookie către server dintr-un fișier;
  • -C- continua descărcarea fișierului de la punctul de întrerupere sau offset-ul specificat;
  • -m - timp maxim așteptarea unui răspuns de la server;
  • -d- trimite date Metoda POST;
  • -D- salvați anteturile returnate de server într-un fișier;
  • -e- setați câmpul Referer-uri, de unde provine utilizatorul;
  • -E- utilizați un certificat SSL extern;
  • -f- nu afisati mesaje de eroare;
  • -F- trimite datele sub forma unui formular;
  • -G- daca aceasta optiune este activata, atunci toate datele specificate in optiunea -d vor fi transmise folosind metoda GET;
  • -H- trimite anteturi către server;
  • -Eu- primiți doar antetul HTTP și ignorați întregul conținut al paginii;
  • -j- citește și trimite un cookie dintr-un fișier;
  • -J- eliminați antetul din cerere;
  • -L- acceptă și procesează redirecționări;
  • -s - suma maxima redirecționează folosind Locație;
  • -o- scoaterea conținutului paginii într-un fișier;
  • -O- salvarea conținutului într-un fișier cu numele paginii sau al fișierului de pe server;
  • -p- utilizați un proxy;
  • --proto- specificați protocolul care urmează să fie utilizat;
  • -R- economisi timp ultima schimbare fișier la distanță;
  • -s- afiseaza un minim de informatii despre erori;
  • -S- afișarea mesajelor de eroare;
  • -T- încărcați fișierul pe server;
  • -v- rezultatul cel mai detaliat;
  • -y - viteza minima descărcări;
  • -Y - viteza maxima descărcări;
  • -z- descărcați fișierul numai dacă acesta a fost modificat mai târziu decât ora specificată;
  • -V- afișați versiunea.

Acestea nu sunt în niciun caz toate opțiunile curl Linux, dar listează toate elementele de bază pe care va trebui să le utilizați.

Cum se folosește curl?

Am acoperit tot ce ține de teoria lucrului cu utilitarul curl, acum este timpul să trecem la practică și să luăm în considerare exemple ale comenzii curl.

Cel mai sarcină frecventă- acest . Descărcarea fișierului este foarte ușoară. Pentru a face acest lucru, este suficient să treceți numele fișierului sau paginii html utilitarului în parametri:

curl https://raw.githubusercontent.com/curl/curl/master/README.md

Dar aici vă așteaptă o surpriză, întregul conținut al fișierului va fi trimis la ieșire standard. Pentru a-l scrie într-un fișier, utilizați:

curl -o readme.txt https://raw.githubusercontent.com/curl/curl/master/README.md

Și dacă doriți ca fișierul rezultat să fie numit la fel ca fișierul de pe server, utilizați opțiunea -O:

curl -O https://raw.githubusercontent.com/curl/curl/master/README.md

curl -# -C - -O https://cdn.kernel.org/pub/linux/kernel/v4.x/testing/linux-4.11-rc7.tar.xz

Dacă este necesar, puteți descărca mai multe fișiere cu o singură comandă:

curl -O https://raw.githubusercontent.com/curl/curl/master/README.md -O https://raw.githubusercontent.com/curl/curl/master/README

Un alt lucru care poate fi util pentru un administrator este să încarce un fișier numai dacă acesta a fost modificat:

curl -z 21-Dec-17 https://raw.githubusercontent.com/curl/curl/master/README.md -O https://raw.githubusercontent.com/curl/curl/master/README

Limita de viteza

Puteți limita viteza de descărcare la limita necesară pentru a nu supraîncărca rețeaua folosind opțiunea -Y:

curl --limit-rate 50K -O https://cdn.kernel.org/pub/linux/kernel/v4.x/testing/linux-4.11-rc7.tar.xz

Aici trebuie să specificați numărul de kiloocteți pe secundă care pot fi descărcați. De asemenea, puteți întrerupe conexiunea dacă viteza nu este suficientă, pentru aceasta utilizați opțiunea -Y:

curl -Y 100 -O https://raw.githubusercontent.com/curl/curl/master/README.md

Transfer de fișier

curl -T login.txt ftp://speedtest.tele2.net/upload/

Sau verificați trimiterea fișierului prin HTTP, există un serviciu special pentru asta:

curl -T ~/login.txt http://posttestserver.com/post.php

Ca răspuns, utilitarul vă va spune unde puteți găsi fișierul descărcat.

Se trimit date POST

Puteți trimite nu numai fișiere, ci și orice date folosind metoda POST. Permiteți-mi să vă reamintesc că această metodă este folosită pentru a trimite date de diferite forme. Pentru a trimite o astfel de solicitare, utilizați opțiunea -d. Pentru testare, vom folosi același serviciu:

curl -d "field1=val&fileld2=val1"http://posttestserver.com/post.php

Dacă nu vă place această opțiune de trimitere, puteți pretinde că trimiteți un formular. Există o opțiune -F pentru aceasta:

curl -F" [email protected];type=text/plain" http://posttestserver.com/post.php

Aici trecem câmpul de parolă în formular, cu tipul text simplu, puteți trece mai mulți parametri în același mod.

Trimiterea și primirea cookie-urilor

Cookie-urile sau Cookie-urile sunt folosite de site-uri web pentru a stoca anumite informații din partea utilizatorului. Acest lucru poate fi necesar, de exemplu, pentru autentificare. Puteți trimite și primi cookie-uri cu curl. Pentru a salva cookie-urile primite într-un fișier, utilizați opțiunea -c:

curl -c cookie.txt http://posttestserver.com/post.php

Apoi puteți trimite cookie-ul curl înapoi:

curl -b cookie.txt http://posttestserver.com/post.php

Trecerea și analizarea antetelor

Nu avem întotdeauna nevoie de conținutul unei pagini. Uneori doar titlurile sunt interesante. Pentru a le afișa numai pe acestea există opțiunea -I:

curl -I https://site-ul web

Iar opțiunea -H permite sau mai multe serverului, de exemplu, puteți trece antetul If-Modified-Since astfel încât pagina să fie returnată numai dacă a fost schimbată:

autentificare curl

Dacă serverul necesită autentificarea unuia dintre tipurile obișnuite, cum ar fi HTTP Basic sau FTP, atunci curl poate gestiona cu ușurință această sarcină. Pentru a specifica datele de autentificare, pur și simplu specificați-le cu două puncte în opțiunea -u:

curl -u ftpuser:ftppass -T - ftp://ftp.testserver.com/myfile_1.txt

În mod similar, autentificarea va fi efectuată pe serverele HTTP.

Utilizarea proxy-ului

Dacă trebuie să utilizați un server proxy pentru a descărca fișiere, este, de asemenea, foarte ușor. Este suficient să specificați adresa serverului proxy în opțiunea -x:

curl -x proxysever.test.com:3128 http://google.co.in

concluzii

În acest articol, am analizat cum să folosiți curl, de ce este necesar acest utilitar și principalele sale caracteristici. În ciuda asemănării lor cu, ele sunt foarte diferite. Comanda curl linux este mai mult pentru analiza și simulare diverse activitati pe server, în timp ce wget este mai potrivit pentru descărcarea de fișiere și accesarea cu crawlere a site-urilor web.

c URL foarte unealtă folositoare linie de comandă pentru a transfera date de la sau către server. Curl acceptă diverse protocoale, cum ar fi FILE, HTTP, HTTPS, IMAP, IMAPS, LDAP, DICT, LDAPS, TELNET, FTPS, GOPHER, RTMP, RTSP, SCP, SFTP, POP3, POP3S, SMB, SMBS, SMTP, SMTPS și TFTP .

cURL poate fi folosit de o mare varietate de moduri interesante. Cu acest instrument puteți descărca, încărca și gestiona fișiere, vă puteți verifica adresa E-mail, sau chiar actualizați-vă starea pe unele site-uri web social media sau verifica vremea afara. În acest articol, vom analiza cinci dintre cele mai utile și de bază utilizări ale instrumentului cURL pe orice .

1. Verificați adresa URL

Una dintre cele mai comune și mai simple utilizări ale cURL este tipărirea comenzii în sine, urmată de adresa URL pe care doriți să o testați

Curl https://domain.ru

Această comandă va afișa conținutul adresei URL pe terminalul dvs

2. Salvați rezultatul URL într-un fișier

Site-ul Curl -o https://domain.ru % Total % Primit % Xferd Media viteza timpului Timp Timp Descărcare curent Încărcare Total cheltuit Viteză rămasă 100 41793 0 41793 0 0 275k 0 --:--:-- --:--:-- --:--:-- 2.9M

În acest exemplu, rezultatul va fi salvat într-un fișier numit „website” în directorul de lucru curent.

3. Descărcați fișiere cu Curl

Puteți descărca fișiere cu Curl adăugând opțiunea -o la comandă. Este folosit pentru a salva fișiere în server local cu aceleași nume ca pe serverul de la distanță

Curl -O https://domain.ru/file.zip

În acest exemplu, arhiva „file.zip” va fi descărcată în directorul de lucru curent.

De asemenea, puteți încărca un fișier cu un alt nume adăugând opțiunea -o la cURL.

Curl -o archive.zip https://domain.ru/file.zip

Deci arhiva „fișier.zip” va fi descărcată și salvată ca „Arhiva.zip”.

cURL poate fi folosit și pentru a descărca mai multe fișiere în același timp, așa cum se arată în exemplul de mai jos

Curl -O https://domain.ru/file.zip -O https://domain.com/file2.zip

Curl poate fi folosit și pentru a descărca fișiere în siguranță prin SSH cu următoarea comandă

Curl -u user sftp://server.domain.ru/path/to/file

Vă rugăm să rețineți că trebuie să utilizați calea completă către fișierul pe care doriți să îl încărcați.

4. Obțineți informații din antetul HTTP al site-ului web

Puteți obține cu ușurință informații despre antetul HTTP de pe orice site web, adăugând opțiunea -I („i”) la cURL.

Curl -I http://domain.ru HTTP/1.1 200 OK Data: Duminica, 16 Oct 2016 23:37:15 GMT Server: Apache/2.4.23 (Unix) X-Powered-By: PHP/5.6.24 Conexiune : close Content-Type: text/html; set de caractere=UTF-8

5. Acces server FTP

Pentru a accesa serverul FTP folosind Curl, trebuie să utilizați următoarea comandă

Curl ftp://ftp.domain.ru --user username:parola

Curl se va conecta la serverul FTP și va lista toate fișierele și directoarele din directorul principal al utilizatorului

Puteți descărca fișierul folosind FTP

Curl ftp://ftp.domain.ru/file.zip --user username:parola

și încărcați fișierul pe serverul FTP

Curl -T file.zip ftp://ftp.domain.ru/ --user username:parola

Puteți verifica manual pagina Curl pentru a vedea totul Optiuni Disponibile cURL și funcționalitatea acestuia

om-buclă

PS. Dacă ți-a plăcut această postare, te rog să o distribui prietenilor tăi în rețelele sociale folosind butoanele de mai jos sau doar lăsați un comentariu. Mulțumită.

Viața unui dezvoltator web este afectată de dificultăți. Este deosebit de frustrant atunci când sursa acestor dificultăți este necunoscută. Este o problemă cu trimiterea unei solicitări, sau cu un răspuns, sau cu o bibliotecă terță parte sau API-ul extern are erori? Există multe instrumente diferite care ne pot face viața mai ușoară. Iată câteva instrumente de linie de comandă pe care personal le găsesc de neprețuit.

răsuci
cURL este un program pentru transferul de date prin diferite protocoale, similar cu wget. Principala diferență este că, implicit, wget salvează într-un fișier, în timp ce cURL iese în linia de comandă. Acest lucru face foarte ușor să vizualizați conținutul site-ului web. De exemplu, iată cum să obțineți rapid IP-ul extern curent:

$ curl ifconfig.me 93.96.141.93
Parametrii -i(arată titluri) și -Eu(afișați numai antetele) face din cURL un instrument excelent pentru depanarea răspunsurilor HTTP și pentru a analiza exact ce vă trimite serverul:

$ curl -I habrahabr.ru HTTP/1.1 200 OK Server: nginx Data: Thu, 18 Aug 2011 14:15:36 GMT Content-Type: text/html; charset=utf-8 Conexiune: keep-alive Keep-alive: timeout=25
Parametru -L de asemenea, util, face ca cURL să urmărească automat redirecționările. cURL acceptă autentificare HTTP, cookie-uri, tunelare prin proxy HTTP, setări manuale pentru antet și multe, multe altele.

Asediu
Siege este un instrument de testare a sarcinii. În plus, are o opțiune la îndemână -g, care este foarte asemănător cu curl -il, dar vă arată și antetele solicitării http. Iată un exemplu de pe google.com (unele titluri au fost eliminate pentru concizie):

$ siege -g www.google.com GET / HTTP/1.1 Gazdă: www.google.com User-Agent: JoeDog/1.00 (X11; I; Siege 2.70) Conexiune: închide HTTP/1.1 302 Locație găsită: http:// www.google.co.uk/ Tip de conținut: text/html; charset=UTF-8 Server: gws Lungimea conținutului: 221 Conexiune: închide GET / HTTP/1.1 Gazdă: www.google.co.uk Agent utilizator: JoeDog/1.00 (X11; I; Siege 2.70) Conexiune: închide HTTP/ 1.1 200 OK Tip de conținut: text/html; set de caractere=ISO-8859-1 X-XSS-Protecție: 1; mode=block Conexiune: close
Dar ceea ce este cu adevărat excelent pentru Siege este testarea încărcării. La fel ca benchmark-ul Apache ab, poate trimite multe solicitări simultane către site și poate vedea cum gestionează traficul. Următorul exemplu arată cum testăm Google cu 20 de solicitări timp de 30 de secunde, după care este afișat rezultatul:

$ siege -c20 www.google.co.uk -b -t30s ... Ridicarea asediului serverului... gata. Tranzacții: 1400 de accesări Disponibilitate: 100,00 % Timp scurs: 29,22 secunde Date transferate: 13,32 MB Timp de răspuns: 0,41 secunde Rata tranzacției: 47,91 trans/sec Debit: 0,46 MB/sec Concurență: 19,53 tranzacții cu succes: 40 tranzacții cu succes: 19,53 tranzacții cu succes 4,08 Cea mai scurtă tranzacție: 0,08
Una dintre cele mai utile caracteristici ale Siege este că poate funcționa nu numai cu o singură adresă, ci și cu o listă de adrese URL dintr-un fișier. Acest lucru este grozav pentru testarea de încărcare, deoarece puteți simula traficul real pe site-ul dvs. în loc să atingeți aceeași adresă URL din nou și din nou. De exemplu, iată cum să utilizați Siege pentru a încărca un server folosind adrese din jurnalul dvs. Apache:

$ cut -d " " -f7 /var/log/apache2/access.log > urls.txt $ siege -c -b -f urls.txt
ngrep
Pentru o analiză serioasă a traficului, există Wireshark cu mii de setări, filtre și configurații. Există și o versiune de linie de comandă rechinul. Dar pentru sarcini simple, consider că funcționalitatea Wireshark este redundantă. Deci, atâta timp cât nu am nevoie de o armă puternică, folosesc . Vă permite să faceți același lucru cu pachetele de rețea ca grep face cu fișierele.

Pentru traficul web, aproape întotdeauna veți dori să utilizați -W pentru a păstra formatarea șirurilor, precum și opțiunea -q, care ascunde informații redundante despre pachetele neadecvate. Iată un exemplu de comandă care interceptează toate pachetele cu o comandă GET sau POST:

ngrep -q -W byline "^(GET|POST).*"
Puteți adăuga un filtru suplimentar pentru pachete, de exemplu, după o anumită gazdă, adresă IP sau port. Iată un filtru pentru tot traficul de intrare și de ieșire de pe google.com, portul 80, care conține cuvântul „căutare”.

ngrep -q -W byline „căutare” gazdă www.google.com și portul 80

Top articole similare