Kako podesiti pametne telefone i računare. Informativni portal

Uslužni program komandne linije curl. Uvod u cURL

Ovaj članak pretpostavlja da poznajete osnove umrežavanja i HTML-a.

Sposobnost pisanja skripti je od suštinskog značaja kada se pravi dobro kompjuterski sistem. Proširivost Unix sistema koristeći shell skripte i razni programi izvođenje automatizovane komande- to je jedan od razloga zašto su tako uspješni.

Sve veći broj aplikacija koje se sele na web doveo je do toga da tema HTTP skripti postaje sve popularnija. Važni zadaci u ovoj oblasti su automatsko izvlačenje informacije sa Interneta, slanje ili učitavanje podataka na web servere, itd.

Curl - alat komandna linija, koji vam omogućava da radite URL manipulacije i prijenose različitih vrsta. Ovaj članak se fokusira na kreiranje jednostavnih HTTP zahtjeva. Pretpostavlja se da već znate gdje kucati

# curl --pomoć

# curl --ručno

za informacije o curl.

Curl nije alat koji će učiniti sve umjesto vas. Kreira zahtjeve, prima podatke i šalje podatke. Možda će vam trebati neka vrsta "ljepka" da sve držite zajedno, možda neki skriptni jezik (poput bash) ili neki ručni pozivi.

1. HTTP protokol

HTTP je protokol koji se koristi za primanje podataka sa web servera. Ovo je vrlo jednostavan protokol koji je izgrađen na TCP/IP. Protokol takođe omogućava slanje informacija serveru od klijenta na nekoliko metoda, kao što će biti pokazano kasnije.

HTTP su nizovi ASCII teksta koji se šalju od klijenta do servera kako bi zatražili neku akciju. Kada se primi zahtjev, server odgovara klijentu s nekoliko usluga tekstualni nizovi, a zatim i sam sadržaj.

Koristeći curl -v prekidač, možete vidjeti koje komande curl šalje serveru, kao i drugi informativni tekst. Prekidač -v je možda jedini način za otklanjanje grešaka ili čak razumijevanje interakcije između curl-a i web servera.

2. URL

URL format (Uniform Resource Locator) specificira adresu određenog resursa na Internetu. Vjerovatno znate ovo, primjer URL-ova: http://curl.haxx.se ili https://yourbank.com.

3. Preuzmite (GET) stranicu

Najjednostavniji i najčešći HTTP zahtjev je da dobijete sadržaj URL-a. URL može povezivati ​​na web stranicu, sliku ili datoteku. Klijent šalje GET zahtjev serveru i prima traženi dokument. Ako pokrenete naredbu

# curl http://curl.haxx.se

dobićete izlaz web stranice u prozor vašeg terminala. Kompletan HTML dokument koji se nalazi na ovom URL-u.

Svi HTTP odgovori sadrže skup zaglavlja koja su obično skrivena. Da biste ih vidjeli zajedno sa samim dokumentom, koristite opciju curl -i. Također možete zatražiti samo zaglavlja koristeći -I prekidač (koji će natjerati curl da napravi HEAD zahtjev).

4. Oblici

Obrasci su osnovni način predstavljanja web stranice kao HTML stranice sa poljima u koja korisnik unosi podatke, a zatim klikne na dugme "OK" ili "Submit", nakon čega se podaci šalju na server. Server tada koristi primljene podatke i odlučuje šta dalje: potražiti informacije u bazi podataka, pokazati unesenu adresu na karti, dodati poruku o grešci ili koristiti informacije za autentifikaciju korisnika. Naravno, postoji neki program na strani servera koji prima vaše podatke.

4.1 GET

GET formular koristi GET metoda, na primjer kako slijedi:

Ako otvorite ovaj kod u svom pretraživaču, vidjet ćete obrazac sa tekstualno polje i dugme sa oznakom "OK". Ako unesete "1905" i kliknete OK, pretraživač će kreirati novi URL koji će pratiti. URL će biti predstavljen kao string koji se sastoji od putanje prethodnog URL-a i niza poput "junk.cgi?birthyear=1905&press=OK".

Na primjer, ako se obrazac nalazi na "www.hotmail.com/when/birth.html", tada će vas kliknuti na OK odvesti na URL "www.hotmail.com/when/junk.cgi?birthyear=1905&press=OK " .

Većina tražilice raditi na ovaj način.

Da bi curl generirao GET zahtjev, jednostavno unesite ono što ste očekivali od obrasca:

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

4.2 POST

Metoda GET uzrokuje da se sve unesene informacije prikažu adresna traka vaš pretraživač. Ovo može biti dobro kada trebate označiti stranicu, ali je očigledan nedostatak kada kucate u polja obrasca tajne informacije, ili kada je količina informacija unesenih u polja prevelika (što rezultira nečitljivim URL-om).

HTTP protokol pruža metodu POST. Uz to, klijent šalje podatke odvojeno od URL-a i stoga ih nećete vidjeti u adresnoj traci.

Obrazac koji generiše POST zahtjev sličan je prethodnom:

Curl može generirati POST zahtjev sa istim podacima na sljedeći način:

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

Ovaj POST zahtjev koristi "Content-Type application/x-www-form-urlencoded", što je najčešće korištena metoda.

Podaci koje šaljete serveru moraju biti ispravno kodirani, curl to neće učiniti umjesto vas. Na primjer, ako želite da podaci sadrže razmak, trebate zamijeniti razmak sa %20, itd. Nedostatak pažnje ovom pitanju - uobičajena greška, što uzrokuje neispravan prijenos podataka.

Još 1995. godine utvrđeno je dodatna metoda prijenos podataka putem HTTP-a. Dokumentovano je u RFC 1867, pa se ovaj metod ponekad naziva RFC1867-objavljivanje.

Ova metoda je uglavnom razvijena za bolja podrška preuzimanje datoteka. Obrazac koji omogućava korisniku da učita fajl izgleda otprilike ovako u HTML-u:

Imajte na umu da je Content-Type postavljen na multipart/form-data.

Za slanje podataka u ovaj obrazac koristeći curl, unesite naredbu:

# curl -F upload=@localfilename -F pritisnite=OK

4.4 Skrivena polja

Uobičajeni način prenošenja informacija o stanju u HTML aplikacijama je korištenje skrivenih polja u obrascima. Skrivena polja se ne popunjavaju, nevidljiva su korisniku i prenose se na isti način kao i obična polja.

Jednostavan primjer obrasca sa jednim vidljivim poljem, jednim skrivenim poljem i dugmetom OK:

Da biste poslali POST zahtjev koristeći curl, ne morate razmišljati o tome da li je polje skriveno ili ne. Za curl su svi isti:

# curl -d "godina rođenja=1905&press=OK&person=danijel"

4.5 Saznajte kako izgleda POST zahtjev

Kada želite da popunite formular i pošaljete podatke serveru koristeći curl, verovatno želite da POST zahtev izgleda potpuno isto kao onaj napravljen korišćenjem pretraživača.

Jednostavan način da vidite svoj POST zahtjev je da spremite HTML stranicu sa formom na disk, promijenite metodu u GET i kliknete na dugme "Pošalji" (također možete promijeniti URL na koji će se podaci slati).

Vidjet ćete podatke priložene URL-u, odvojene znakovima "?", kao što se očekuje kada koristite GET forme.

5. PUT

možda, Najbolji način učitavanje podataka na HTTP server koristi se PUT. Opet, ovo zahtijeva program (skriptu) na backendu koji zna šta da radi i kako da prihvati HTTP PUT tok.

Pošaljite fajl na server koristeći curl:

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

6. Autentifikacija

Autentifikacija - prosljeđivanje korisničkog imena i lozinke serveru, nakon čega on provjerava da li imate pravo ispuniti traženi zahtjev. Osnovna provjera autentičnosti (koju curl koristi po defaultu) temelji se na običan tekst, što znači da korisničko ime i lozinka neće biti šifrovani, već samo malo „zamagljeni“ korišćenjem Base64 algoritma, ostavljajući napadačima mogućnost da saznaju ove informacije na putu između vas i HTTP servera.

Reći curl-u da koristi korisničko ime i lozinku:

# curl -u ime:lozinka www.secrets.com

Stranica može zahtijevati korištenje drugačije metode provjere autentičnosti (pogledajte šta server piše u zaglavljima), u tim slučajevima možete koristiti prekidače --ntlm, --digest, --negotiate ili čak --anyauth. Ponekad se pristup vanjskim HTTP serverima odvija preko proxyja, što se često radi u kompanijama i firmama. HTTP proxy može zahtijevati vaše korisničko ime i lozinku za pristup Internetu. Odgovarajući ključ za uvijanje:

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

Ako proxy zahtijeva autentifikaciju pomoću NTLM metode, navedite --proxy-ntlm, ako je Digest metod, onda --proxy-digest.

Ako ne navedete lozinku u opcijama -u i -U, curl će od vas tražiti da je unesete interaktivni način rada.

Imajte na umu da kada je curl pokrenut, niz za pokretanje (i sa njim ključevi i lozinke) mogu biti vidljivi drugim korisnicima na vašem sistemu na listi zadataka. Postoje načini da se to spriječi. Više o tome u nastavku.

7. Referrer

HTTP zahtjev može uključivati ​​polje "referer", koje pokazuje s koje URL adrese dolazi korisnik ovaj resurs. Neki programi/skripte provjeravaju polje "referer" i ne izvršavaju zahtjev ako je korisnik došao s nepoznate stranice. Iako je ovo glup način za provjeru, mnoge skripte ga i dalje koriste. Sa curl-om možete staviti bilo šta u polje "referer" i tako ga natjerati da radi ono što želite.

To se radi na sljedeći način:

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

8. Korisnički agent

Svi HTTP zahtjevi podržavaju polje "User-Agent" koje specificira klijentska aplikacija korisnik. Mnoge web aplikacije koriste ove informacije za prikazivanje stranice na ovaj ili onaj način. Web programeri kreiraju više verzija stranice za korisnike različitim pretraživačima u cilju poboljšanja izgled, upotreba raznih javascript skripte, vbscript, itd.

Ponekad možete otkriti da curl vraća stranicu koja nije ista kao što ste vidjeli u svom pretraživaču. U ovom slučaju, prikladno je koristiti polje "Korisnički agent" da još jednom obmane server.

Prikrij kovrdžavu kao Internet Explorer na Windows 2000 mašini:

# curl -A "Mozilla/4.0 (kompatibilan; MSIE 5.01; Windows NT 5.0)"

Zašto ne postati Netscape 4.73 na Linux mašini (PIII):

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

9. Preusmjeravanja

Kada odgovori na vaš zahtjev, server može vratiti indikaciju gdje pretraživač treba da ide dalje da bi došao do stranice umjesto same stranice. željenu stranicu. Zaglavlje koje ukazuje na takvo preusmjeravanje na pretraživač je "Lokacija:".

Podrazumevano, curl ne ide na adresu navedenu u "Location:", već jednostavno prikazuje stranicu kao i obično. Ali možete ga režirati ovako:

# curl -L www.sitethatredirects.com

Ako koristite curl za slanje POST zahtjeva za web lokaciju koja odmah preusmjerava na drugu stranicu, možete bezbedno koristiti kombinaciju -L i -d/-F. Curl će generirati POST zahtjev za prvu stranicu, a zatim GET zahtjev za sljedeću.

10. Kolačići

Sa kolačićima, web pretraživači kontrolišu stanje na strani klijenta. Kolačić je ime sa priloženim sadržajem. Slanjem kolačića, server govori klijentu putanju i naziv hosta na koji bi kolačići trebali biti poslati sljedeći put, vijek trajanja kolačića i neke druge parametre.

Kada se klijent poveže sa serverom na adresi navedenoj u prihvaćenom kolačiću, klijent šalje taj kolačić serveru (ako životni vek nije istekao).

Mnoge aplikacije i serveri koriste ovu metodu za kombinovanje više zahteva u jednu logičku sesiju. Da bi curl također obavljao ovu funkciju, moramo biti u mogućnosti pohranjivati ​​i slati kolačiće, baš kao što to rade pretraživači.

Najjednostavniji način da pošaljete kolačić serveru kada primate stranicu koristeći curl je dodavanje odgovarajućeg prekidača u komandnu liniju:

# curl -b "name=Daniel" www.cookiesite.com

Kolačići se šalju kao normalna HTTP zaglavlja. Ovo omogućava curl-u da sačuva kolačiće čuvajući zaglavlja. Čuvanje kolačića koristeći curl vrši se naredbom:

# curl -D zaglavlja_i_kolačići www.cookiesite.com

(usput, za spremanje kolačića bolje je koristiti -c prekidač, više o tome u nastavku).

curl ima potpuno opremljeni rukovalac kolačićima, koji je koristan kada se želite ponovo povezati na server i koristiti kolačiće sačuvane zadnji put (ili ručno izmijenjene). Da biste koristili kolačiće pohranjene u datoteci, pozovite curl ovako:

# curl -b pohranjeni_kolačići_u_datoteci www.cookiesite.com

Curl-ov "kolačić" je omogućen kada navedete -b prekidač. Ako želite samo da curl prihvati kolačiće, koristite -b da navedete datoteku koja ne postoji. Na primjer, ako želite da curl prihvati kolačiće sa stranice, a zatim slijedi preusmjeravanje (možda daje kolačić koji je upravo prihvatio), možete pozvati curl ovako:

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

Curl može čitati i pisati kolačiće u Netscape i Mozilla formatu. Ovo zgodan način razmjenjuju kolačiće između pretraživača i automatskih skripti. Prekidač -b automatski određuje da li ovaj fajl kolačić specificirani pretraživači i postupa s tim u skladu s tim, a pomoću prekidača -c/--cookie-jar možete prisiliti curl da napiše novi kolačić kada se operacija završi:

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

11. HTTPS

Postoji nekoliko načina da osigurate svoje HTTP transfere. Većina dobro poznati protokol rješavanje ovog problema je HTTPS, ili HTTP preko SSL-a. SSL šifrira sve podatke poslane i primljene preko mreže, povećavajući vjerovatnoću da će vaše informacije ostati povjerljive.

Curl podržava zahtjeve prema HTTPS serverima koristeći besplatnu OpenSSL biblioteku. Zahtjevi se dešavaju na uobičajen način:

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

11.1 Sertifikati

U HTTPS svijetu koristite certifikate pored korisničkog imena i lozinke za autentifikaciju. Curl podržava certifikate na strani klijenta. Svi certifikati su zaključani pristupnom frazom koju morate unijeti prije nego curl počne raditi s njima. Ključna fraza može se navesti ili na komandnoj liniji ili uneti interaktivno. Certifikati u curl se koriste na sljedeći način:

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

Curl također provjerava autentičnost servera tako što provjerava certifikat servera u odnosu na lokalno pohranjeni. Ako postoji neslaganje, curl će odbiti da se poveže. Da zanemarite provjere autentifikacije, koristite prekidač -k.

Više detaljne informacije o certifikatima možete pronaći na http://curl.haxx.se/docs/sslcerts.html.

12. Prilagođena zaglavlja zahtjeva

Možda ćete morati promijeniti ili dodati stavke individualni zahtjevi curl.

Na primjer, možete promijeniti POST zahtjev u PROPFIND i poslati podatke kao "Content-Type: text/xml" (umjesto normalnog Content-Type):

# curl -d " " -H "Tip sadržaja: tekst/xml" -X PROPFIND url.com

Možete ukloniti naslov tako što ćete ga navesti bez sadržaja. Na primjer, možete ukloniti zaglavlje "Host:" i time učiniti zahtjev "prazan":

# curl -H "Host:" http://mysite.com

Možete dodati i naslove. Vašem serveru će možda trebati zaglavlje "Destination:":

# curl -H "Odredište: http://moo.com/nowhere" http://url.com

13. Otklanjanje grešaka

Često se dešava da web lokacija na zahtjeve za curl odgovara drugačije nego na zahtjeve pretraživača. U ovom slučaju, morate učiniti curl što sličnijim pretraživaču:

  • Koristite prekidač --trace-ascii da sačuvate detaljan zapis o upitima tako da ih možete detaljno ispitati i razumeti problem.
  • Provjerite jeste li provjerili ima li kolačića i koristite ih ako je potrebno (pročitajte -b i spremite -c)
  • Navedite jedan od najnovijih popularnih pretraživača u polju "user-agent".
  • Popunite polje "referer" kao što to čini pretraživač
  • Ako koristite POST zahtjeve, uvjerite se da su sva polja poslana istim redoslijedom kao i pretraživač (pogledajte tačku 4.5 iznad)

Dobar pomoćnik u ovom teškom zadatku je dodatak LiveHTTPHeader za Mozilla/Firefox, koji vam omogućava da vidite sva zaglavlja koja ovaj pretraživač šalje i prima (čak i kada koristite HTTPS).

Pristup nižeg nivoa je da se uhvati HTTP saobraćaj na mreži pomoću programa kao što su ethereal ili tcpdump, a zatim analizira koja su zaglavlja primljena i poslana od strane pretraživača (HTTPS čini ovaj pristup neefikasnim).

RFC 2616 je obavezno čitanje za svakoga ko želi razumjeti HTTP protokol.

RFC 2396 objašnjava sintaksu URL-a.

RFC 2109 definira kako kolačići rade.

RFC 1867 definira format objave za otpremanje datoteke.

http://openssl.planetmirror.com - Početna stranica OpenSSL projekat

http://curl.haxx.se - početna stranica cURL projekta

Život web programera zamagljen je poteškoćama. Posebno je neugodno kada je izvor ovih poteškoća nepoznat. Da li je ovo problem sa slanjem zahtjeva, ili sa odgovorom, ili sa bibliotekom treće strane, ili je vanjski API pogrešio? Postoji gomila različitih naprava koje nam mogu olakšati život. Evo nekih alata komandne linije koje ja lično smatram neprocjenjivim.

cURL
cURL je program za prijenos podataka preko različitih protokola, sličan wgetu. Glavna razlika je u tome što wget po defaultu sprema u datoteku, dok cURL izlazi na komandnu liniju. Ovo čini vrlo lakim pregled sadržaja web stranice. Na primjer, evo kako brzo dobiti svoju trenutnu eksternu IP adresu:

$ curl ifconfig.me 93.96.141.93
Opcije -i(naslovi emisije) i -Ja(prikaži samo zaglavlja) čine cURL odličnim alatom za otklanjanje grešaka u HTTP odgovorima i analizu šta vam server tačno šalje:

$ curl -I lokacija HTTP/1.1 200 OK Server: nginx Datum: Čet, 18. avgust 2011. 14:15:36 GMT Tip sadržaja: tekst/html; charset=utf-8 Veza: Keep-alive Keep-alive: timeout=25
Parametar -L Takođe korisno, prisiljava cURL da automatski prati preusmjeravanja. cURL podržava HTTP autentifikaciju, kolačiće, HTTP proxy tuneliranje, ručna podešavanja u naslovima i mnogo, mnogo više.

Opsada
- alat za testiranje opterećenja. Osim toga, ima zgodnu opciju -g, što je vrlo slično curl –iL, ali pored toga vam pokazuje i zaglavlja http zahtjeva. Evo primjera sa google.com (neki naslovi su uklonjeni radi sažetosti):

$ siege -g www.google.com GET / HTTP/1.1 Host: www.google.com Korisnički agent: JoeDog/1.00 (X11; I; Siege 2.70) Veza: zatvori HTTP/1.1 302 Pronađena lokacija: http:// www.google.co.uk/ Content-Type: text/html; charset=UTF-8 Server: gws Dužina sadržaja: 221 Veza: zatvori GET / HTTP/1.1 Host: www.google.co.uk Korisnički agent: JoeDog/1.00 (X11; I; Siege 2.70) Veza: zatvori HTTP/ 1.1 200 OK Content-Type: text/html; charset=ISO-8859-1 X-XSS-Protection: 1; mode=block Veza: zatvori
Ali ono za šta je Siege zaista odličan je testiranje opterećenja. Kao Apache benchmark ab, može poslati mnoge paralelne zahtjeve na stranicu i vidjeti kako upravlja prometom. IN sljedeći primjer Evo kako testiramo Google sa 20 upita u trajanju od 30 sekundi i rezultat je:

$ siege -c20 www.google.co.uk -b -t30s ... Ukidanje opsade servera... završeno. Transakcije: 1400 pogodaka Dostupnost: 100,00 % Proteklo vrijeme: 29,22 sekundi Preneseni podaci: 13,32 MB Vrijeme odgovora: 0,41 sek Brzina transakcije: 47,91 trans/sec Protok: 0,46 MB/sec. transakcija: 4.08 Najkraća transakcija: 0.08
Jedan od mnogih korisne funkcije Siege je u tome što može raditi ne samo sa jednom adresom, već i sa listom URL-ova iz datoteke. Ovo je odlično za testiranje opterećenja jer možete simulirati pravi saobraćaj na web-lokaciji, umjesto da samo iznova udarate isti URL. Na primjer, evo kako koristiti Siege za učitavanje servera koristeći adrese iz vašeg Apache dnevnika:

$ cut -d " " -f7 /var/log/apache2/access.log > urls.txt $ opsada -c -b -f urls.txt
Ngrep
Za ozbiljnu analizu saobraćaja postoji Wireshark sa hiljadama podešavanja, filtera i konfiguracija. Postoji i verzija komandne linije tshark. Ali za jednostavne zadatke, Wiresharkovu funkcionalnost smatram suvišnom. Pa sve dok ne moram moćno oružje, Ja koristim . Omogućava vam da radite sa mrežni paketi isto kao grep radi sa fajlovima.

Za web promet ćete gotovo uvijek htjeti koristiti parametar -W da sačuvate formatiranje stringova kao i opciju -q, koji skriva suvišne informacije o neusklađenim paketima. Evo primjera naredbe koja presreće sve pakete naredbom GET ili POST:

Ngrep -q -W od strane "^(GET|POST) .*"
Možete dodati dodatni filter za pakete, na primjer by određenom domaćinu, IP adresa ili port. Ovdje je filter za sve dolazne i odlaznog saobraćaja na google.com, port 80, koji sadrži riječ “traži”.

Ngrep -q -W byline "pretraži" host www.google.com i port 80

Često moramo da preuzimamo razne datoteke sa interneta, npr. izvršne datoteke programe, datoteke skripta, izvorne arhive. Ali to ne mora uvijek biti urađeno preko pretraživača. U mnogim situacijama je mnogo lakše izvršiti sve radnje preko terminala. Jer na ovaj način možete automatizirati proces. S druge strane, webmasteri s vremena na vrijeme moraju testirati pristupačnost web stranice, provjeravati poslana i primljena zaglavlja i još mnogo toga.

Da biste riješili takve probleme i probleme sličnog raspona, možete koristiti uslužni program curl. Omogućuje vam rješavanje mnogo šireg spektra problema, uključujući čak i simulaciju radnji korisnika na stranici. U ovom članku ćemo pogledati kako koristiti curl, šta je to i zašto je ovaj program potreban.

U stvari, curl je više od samo uslužnog programa komandne linije za Linux ili Windows. Ovo je skup biblioteka koje implementiraju osnovne sposobnosti rad sa URL stranice i prijenos datoteka. Biblioteka podržava rad sa protokolima: FTP, FTPS, HTTP, HTTPS, TFTP, SCP, SFTP, Telnet, DICT, LDAP, kao i POP3, IMAP i SMTP. Odličan je za simulaciju radnji korisnika na stranicama i drugih operacija s URL-ovima.

podrška za curl biblioteku je dodana mnogima raznim jezicima programiranje i platforme. Uslužni program curl je nezavisni omot za ovu biblioteku. Upravo na ovaj uslužni program ćemo se fokusirati u ovom članku.

naredba curl

Prije nego što pređemo na opis načina na koji se može koristiti naredba curl linux, pogledajmo sam uslužni program i njegove glavne opcije koje će nam trebati. Sintaksa uslužnog programa je vrlo jednostavna:

$ veza sa opcijama curl

Pogledajmo sada glavne opcije:

  • -# - prikaz jednostavne trake napretka tokom učitavanja;
  • -0 - koristiti http protokol 1.0;
  • -1 - koristiti tlsv1 protokol za šifriranje;
  • -2 - koristite sslv2;
  • -3 - koristite sslv3;
  • -4 - koristiti ipv4;
  • -6 - koristiti ipv6;
  • -A- navedite vašeg USER_AGENT;
  • -b- sačuvati Cookie u datoteku;
  • -c- poslati Cookie na server iz datoteke;
  • -C- nastaviti sa preuzimanjem datoteke od tačke prekida ili određenog odstupanja;
  • -m - maksimalno vrijemečekanje odgovora od servera;
  • -d- slanje podataka POST metoda;
  • -D- sačuvati zaglavlja koje je server vratio u datoteku;
  • -e- postavite polje Referer-uri, naznačujući s koje stranice je korisnik došao;
  • -E- koristiti eksterni SSL certifikat;
  • -f- ne prikazuju poruke o greškama;
  • -F- slanje podataka u obliku obrasca;
  • -G- ako je ova opcija omogućena, tada će se svi podaci navedeni u opciji -d prenijeti pomoću GET metode;
  • -H- transfer zaglavlja na server;
  • -Ja- primiti samo HTTP zaglavlje i zanemariti cijeli sadržaj stranice;
  • -j- čitanje i slanje kolačića iz datoteke;
  • -J- ukloniti zaglavlje iz zahtjeva;
  • -L- prihvataju i obrađuju preusmjeravanja;
  • -s - maksimalni iznos preusmjeravanja koristeći lokaciju;
  • -o- izlaz sadržaja stranice u datoteku;
  • -O- sačuvati sadržaj u datoteku sa imenom stranice ili datoteke na serveru;
  • -p- koristiti proxy;
  • --proto- naznačiti protokol koji će se koristiti;
  • -R- uštedjeti vrijeme poslednja promena udaljeni fajl;
  • -s- prikazati minimum informacija o greškama;
  • -S- prikaz poruka o greškama;
  • -T- uploadati datoteku na server;
  • -v- najdetaljniji rezultat;
  • -y - minimalna brzina preuzimanja;
  • -Y - maksimalna brzina preuzimanja;
  • -z- preuzmite datoteku samo ako je izmijenjena kasnije od navedenog vremena;
  • -V- prikaz verzije.

Ovo nikako nisu sve opcije za curl linux, ali navodi osnove koje ćete morati da koristite.

Kako koristiti curl?

Pokrili smo sve što se odnosi na teoriju rada sa uslužnim programom curl, sada je vrijeme da pređemo na praksu i pogledamo primjere komande curl.

Najviše zajednički zadatak- Ovo . Preuzimanje datoteke je vrlo jednostavno. Da biste to učinili, samo prenesite naziv datoteke ili html stranicu uslužnom programu u parametrima:

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

Ali ovdje vas čeka jedno iznenađenje: cijeli sadržaj datoteke će biti poslan na standardni izlaz. Za pisanje u bilo koji fajl koristite:

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

A ako želite da se rezultirajuća datoteka nazove isto kao datoteka na serveru, koristite opciju -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

Ako je potrebno, možete preuzeti nekoliko datoteka jednom komandom:

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

Još jedna stvar koja može biti korisna za administratora je preuzimanje datoteke samo ako je promijenjena:

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

Ograničenje brzine

Možete ograničiti brzinu preuzimanja na potrebnu granicu kako ne biste preopteretili mrežu koristeći opciju -Y:

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

Ovdje morate odrediti broj kilobajta u sekundi koji se može preuzeti. Također možete prekinuti vezu ako brzina nije dovoljna, koristite opciju -Y za ovo:

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

Prijenos fajlova

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

Ili provjerimo je li datoteka poslana putem HTTP-a; za to postoji posebna usluga:

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

U odgovoru će vam uslužni program reći gdje možete pronaći preuzetu datoteku.

Slanje POST podataka

POST metodom možete slati ne samo datoteke, već i sve podatke. Podsjećam da se ova metoda koristi za slanje podataka različitih oblika. Da biste poslali takav zahtjev, koristite opciju -d. Za testiranje ćemo koristiti istu uslugu:

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

Ako niste zadovoljni ovom opcijom podnošenja, možete se pretvarati da šaljete obrazac. Postoji opcija za ovo -F:

curl -F "password=@pass;type=text/plain" http://posttestserver.com/post.php

Ovdje prosljeđujemo polje lozinke u obrazac, sa tipom običan tekst, na isti način možete proslijediti više parametara.

Slanje i primanje kolačića

Kolačiće koriste web stranice za pohranu određenih informacija na strani korisnika. Ovo može biti potrebno, na primjer, za autentifikaciju. Možete slati i primati kolačiće koristeći curl. Za spremanje primljenih kolačića u datoteku, koristite opciju -c:

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

Zatim možete poslati curl kolačić natrag:

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

Prijenos i analiza zaglavlja

Sadržaj stranice nam nije uvijek potreban. Ponekad samo naslovi mogu biti zanimljivi. Za prikaz samo njih postoji opcija -I:

curl -I https://site

A -H opcija vam omogućava da pošaljete nekoliko ili više na server, na primjer, možete proslijediti zaglavlje If-Modified-Since tako da se stranica vrati samo ako je izmijenjena:

curl autentikacija

Ako server zahtijeva jednu od uobičajenih vrsta provjere autentičnosti, kao što je HTTP Basic ili FTP, onda curl može vrlo lako riješiti ovaj zadatak. Da biste naveli detalje o autentifikaciji, jednostavno ih navedite odvojene dvotočkom u opciji -u:

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

Provjera autentičnosti na HTTP serverima će se izvršiti na isti način.

Korištenje proxyja

Ako trebate koristiti proxy server za preuzimanje datoteka, onda je i to vrlo jednostavno. Dovoljno je navesti adresu proxy servera u opciji -x:

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

zaključci

U ovom članku pogledali smo kako koristiti curl, zašto je potreban ovaj uslužni program i njegove glavne mogućnosti. Uprkos njihovoj sličnosti sa njima, oni su veoma različiti. Naredba curl linux je više za analizu i simulaciju razne akcije na serveru, dok je wget pogodniji za preuzimanje datoteka i indeksiranje stranica.

c URL je vrlo koristan alat komandna linija za prijenos podataka sa ili na server. Curl podržava različite protokole kao što su FILE, HTTP, HTTPS, IMAP, IMAPS, LDAP, DICT, LDAPS, TELNET, FTPS, GOPHER, RTMP, RTSP, SCP, SFTP, POP3, POP3S, SMB, SMBS, SMTP, SMTPS i TFTP .

cURL se može koristiti na razne načine na zanimljive načine. Pomoću ovog alata možete preuzeti, otpremiti i upravljati datotekama, provjeriti svoju adresu Email, ili čak ažurirati svoj status na nekim web lokacijama društvenim medijima ili provjerite kakvo je vrijeme napolju. U ovom članku ćemo pogledati pet najkorisnijih i osnovnih upotreba alata cURL na bilo kojoj .

1. Provjerite URL

Jedna od najčešćih i najjednostavnijih upotreba cURL-a je ispisivanje same naredbe praćene URL-om koji želite testirati

Curl https://domain.ru

Ova komanda će prikazati sadržaj URL-a na vašem terminalu

2. Sačuvajte URL izlaz u datoteku

Curl -o web stranica https://domain.ru % Ukupno % primljenih % Xferd prosjeka Speed ​​Time Vrijeme Vrijeme Trenutno Učitavanje Učitavanje Ukupno utrošeno lijevo Brzina 100 41793 0 41793 0 0 275k 0 --:--:-- --:--:-- --:--:-- 2.9M

U ovom primjeru, izlaz će biti spremljen u datoteku pod nazivom 'website' u trenutnom radnom direktoriju.

3. Učitavanje datoteka koristeći Curl

Možete preuzeti datoteke koristeći Curl dodavanjem opcije -o naredbi. Koristi se za spremanje datoteka u lokalni server sa istim imenima kao na udaljenom serveru

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

U ovom primjeru, arhiva 'file.zip' će biti preuzeta u trenutni radni direktorij.

Također možete prenijeti datoteku s drugim imenom dodavanjem opcije -o u cURL.

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

Tako će arhiva 'file.zip' biti preuzeta i sačuvana kao 'Archive.zip'.

cURL se također može koristiti za preuzimanje više datoteka odjednom, kao što je prikazano u primjeru ispod

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

Curl se također može koristiti za siguran prijenos datoteka preko SSH-a pomoću sljedeće naredbe

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

Imajte na umu da morate koristiti punu putanju do datoteke koju želite preuzeti

4. Uzmite informacije iz HTTP zaglavlja web stranice

Informacije o HTTP zaglavlju možete lako dobiti sa bilo koje web stranice dodavanjem opcije -I ('i') u cURL.

Curl -I http://domain.ru HTTP/1.1 200 OK Datum: Ned, 16 Okt 2016 23:37:15 GMT Server: Apache/2.4.23 (Unix) X-Powered-By: PHP/5.6.24 Veza : zatvori Content-Type: text/html; charset=UTF-8

5. Pristup FTP serveru

Da biste pristupili FTP serveru koristeći Curl, trebate koristiti sljedeću naredbu

Curl ftp://ftp.domain.ru -- korisničko ime: lozinka

Curl će se povezati na FTP server i izlistati sve datoteke i direktorije u korisničkom kućnom direktoriju

Možete preuzeti fajl koristeći FTP

Curl ftp://ftp.domain.ru/file.zip -- korisničko ime: lozinka

i otpremite datoteku na FTP server

Curl -T file.zip ftp://ftp.domain.ru/ --korisničko ime: lozinka

Možete ručno provjeriti stranicu Curl da vidite sve dostupne opcije cURL i njegova funkcionalnost

Man curl

PS. Ako vam se svidjela ova objava, podijelite je sa prijateljima na na društvenim mrežama koristeći dugmad ispod ili jednostavno ostavite komentar. Hvala ti.

Život web programera zamagljen je poteškoćama. Posebno je neugodno kada je izvor ovih poteškoća nepoznat. Da li je ovo problem sa slanjem zahtjeva, ili sa odgovorom, ili sa bibliotekom treće strane, ili je vanjski API pogrešio? Postoji gomila različitih naprava koje nam mogu olakšati život. Evo nekih alata komandne linije koje ja lično smatram neprocjenjivim.

cURL
cURL je program za prijenos podataka preko različitih protokola, sličan wgetu. Glavna razlika je u tome što wget po defaultu sprema u datoteku, dok cURL izlazi na komandnu liniju. Ovo čini vrlo lakim pregled sadržaja web stranice. Na primjer, evo kako brzo dobiti svoju trenutnu eksternu IP adresu:

$ curl ifconfig.me 93.96.141.93
Opcije -i(naslovi emisije) i -Ja(prikaži samo zaglavlja) čine cURL odličnim alatom za otklanjanje grešaka u HTTP odgovorima i analizu šta vam server tačno šalje:

$ curl -I habrahabr.ru HTTP/1.1 200 OK Server: nginx Datum: Čet, 18. avgust 2011. 14:15:36 GMT Tip sadržaja: text/html; charset=utf-8 Veza: Keep-alive Keep-alive: timeout=25
Parametar -L Takođe korisno, prisiljava cURL da automatski prati preusmjeravanja. cURL podržava HTTP autentifikaciju, kolačiće, tuneliranje kroz HTTP proksije, ručna podešavanja u zaglavljima i još mnogo, mnogo više.

Opsada
Siege je alat za testiranje opterećenja. Osim toga, ima zgodnu opciju -g, što je vrlo slično curl –iL, ali pored toga vam pokazuje i zaglavlja http zahtjeva. Evo primjera sa google.com (neki naslovi su uklonjeni radi sažetosti):

$ siege -g www.google.com GET / HTTP/1.1 Host: www.google.com Korisnički agent: JoeDog/1.00 (X11; I; Siege 2.70) Veza: zatvori HTTP/1.1 302 Pronađena lokacija: http:// www.google.co.uk/ Content-Type: text/html; charset=UTF-8 Server: gws Dužina sadržaja: 221 Veza: zatvori GET / HTTP/1.1 Host: www.google.co.uk Korisnički agent: JoeDog/1.00 (X11; I; Siege 2.70) Veza: zatvori HTTP/ 1.1 200 OK Content-Type: text/html; charset=ISO-8859-1 X-XSS-Protection: 1; mode=block Veza: zatvori
Ali ono za šta je Siege zaista odličan je testiranje opterećenja. Kao Apache benchmark ab, može poslati mnoge paralelne zahtjeve na stranicu i vidjeti kako upravlja prometom. Sljedeći primjer pokazuje kako testiramo Google sa 20 upita u trajanju od 30 sekundi, a zatim ispisujemo rezultat:

$ siege -c20 www.google.co.uk -b -t30s ... Ukidanje opsade servera... završeno. Transakcije: 1400 pogodaka Dostupnost: 100,00 % Proteklo vrijeme: 29,22 sekundi Preneseni podaci: 13,32 MB Vrijeme odgovora: 0,41 sek Brzina transakcije: 47,91 trans/sec Protok: 0,46 MB/sec. transakcija: 4.08 Najkraća transakcija: 0.08
Jedna od najkorisnijih karakteristika Siege-a je da može raditi ne samo sa jednom adresom, već i sa listom URL-ova iz datoteke. Ovo je odlično za testiranje opterećenja jer možete simulirati stvarni promet web-lokacije, a ne samo ponavljati isti URL iznova i iznova. Na primjer, evo kako koristiti Siege za učitavanje servera koristeći adrese iz vašeg Apache dnevnika:

$ cut -d " " -f7 /var/log/apache2/access.log > urls.txt $ opsada -c -b -f urls.txt
Ngrep
Za ozbiljnu analizu saobraćaja postoji Wireshark sa hiljadama podešavanja, filtera i konfiguracija. Postoji i verzija komandne linije tshark. Ali za jednostavne zadatke, Wiresharkovu funkcionalnost smatram suvišnom. Dakle, osim ako mi treba moćno oružje, koristim . Omogućava vam da uradite istu stvar sa mrežnim paketima kao grep radi sa fajlovima.

Za web promet ćete gotovo uvijek htjeti koristiti parametar -W da sačuvate formatiranje stringova kao i opciju -q, koji skriva suvišne informacije o neusklađenim paketima. Evo primjera naredbe koja presreće sve pakete naredbom GET ili POST:

Ngrep -q -W od strane "^(GET|POST) .*"
Možete dodati dodatni filter za pakete, na primjer, prema datom hostu, IP adresi ili portu. Ovdje je filter za sav promet do i od google.com, port 80, koji sadrži riječ “traži”.

Ngrep -q -W byline "pretraži" host www.google.com i port 80

Najbolji članci na ovu temu