Kako postaviti pametne telefone i računala. Informativni portal

Uslužni program naredbenog retka curl. Uvod u cURL

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

Sposobnost pisanja skripti ključna je pri izradi dobra računalni sustav. Proširivost Unix sustava korištenjem skripti ljuske i razne programe izvodeći automatizirane naredbe- 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 ovom području su automatsko vađenje informacije s interneta, slanje ili učitavanje podataka na web poslužitelje itd.

Curl - alat naredbeni redak, koji vam omogućuje rad s URL-ovima i prijenose raznih vrsta. Ovaj se članak fokusira na stvaranje jednostavnih HTTP zahtjeva. Pretpostavlja se da već znate gdje tipkati

# kovrča --pomoć

# kovrča --ručno

za informacije o curl.

Curl nije alat koji će učiniti sve umjesto vas. Stvara zahtjeve, prima podatke i šalje podatke. Možda će vam trebati neka vrsta "ljepila" da sve drži 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 s web poslužitelja. Ovo je vrlo jednostavan protokol koji je izgrađen na TCP/IP. Protokol također omogućuje slanje informacija poslužitelju s klijenta pomoću nekoliko metoda, kao što će biti prikazano kasnije.

HTTP su nizovi ASCII teksta poslani od klijenta do poslužitelja kako bi se zatražila neka radnja. Kada primi zahtjev, poslužitelj odgovara klijentu s nekoliko usluga tekstualni nizovi, a potom i sam sadržaj.

Pomoću prekidača curl -v možete vidjeti koje naredbe curl šalje poslužitelju, kao i drugi informativni tekst. Prekidač -v možda je jedini način za otklanjanje pogrešaka ili čak razumijevanje interakcije između curla i web poslužitelja.

2. URL

Format URL-a (Uniform Resource Locator) navodi adresu određenog izvora na Internetu. Ovo vjerojatno znate, primjeri URL-ova: http://curl.haxx.se ili https://yourbank.com.

3. Dohvati (GET) stranicu

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

# kovrča http://curl.haxx.se

dobit ćete izlaz web-stranice u prozor terminala. Cijeli HTML dokument sadržan 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 prisiliti curl da napravi HEAD zahtjev).

4. Oblici

Obrasci su osnovni način predstavljanja web stranice kao HTML stranice s poljima u koja korisnik upisuje podatke i potom klikne na tipku "OK" ili "Submit", nakon čega se podaci šalju na poslužitelj. Poslužitelj tada koristi primljene podatke i odlučuje što dalje učiniti: potražiti informacije u bazi podataka, prikazati unesenu adresu na karti, dodati poruku o pogrešci ili upotrijebiti informacije za autentifikaciju korisnika. Naravno, postoji neki program na strani poslužitelja koji prima vaše podatke.

4.1 DOBITI

GET obrazac koristi GET metoda, na primjer kako slijedi:

Ako otvorite ovaj kod u svom pregledniku vidjet ćete obrazac sa polje za tekst i gumb s oznakom "OK". Ako unesete "1905" i kliknete OK, preglednik će stvoriti novi URL koji će slijediti. URL će biti predstavljen kao niz 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", klik na OK odvest će vas 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 očekujete od obrasca:

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

4.2 POST

Metoda GET uzrokuje prikaz svih unesenih informacija adresna traka vaš preglednik. Ovo može biti dobro kada trebate označiti stranicu, ali je očiti nedostatak kada upisujete 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 POST metodu. Kod njega klijent šalje podatke odvojeno od URL-a i stoga ih nećete vidjeti u adresnoj traci.

Obrazac koji generira POST zahtjev sličan je prethodnom:

Curl može generirati POST zahtjev s istim podacima kako slijedi:

# curl -d "godina rođenja=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 poslužitelju 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 pogreška, što uzrokuje neispravan prijenos podataka.

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

Ova metoda je uglavnom razvijena za bolju podršku preuzimanje datoteka. Obrazac koji korisniku omogućuje učitavanje datoteke 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 press=OK

4.4 Skrivena polja

Uobičajen 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 forme s jednim vidljivim poljem, jednim skrivenim poljem i tipkom OK:

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

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

4.5 Saznajte kako izgleda POST zahtjev

Kada želite ispuniti obrazac i poslati podatke na poslužitelj koristeći curl, vjerojatno želite da POST zahtjev izgleda potpuno isto kao onaj napravljen pomoću preglednika.

Jednostavan način da vidite svoj POST zahtjev je da spremite HTML stranicu s obrascem na disk, promijenite metodu u GET i kliknete gumb "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 obrasce.

5. STAVITI

Možda, Najbolji način učitavanje podataka na HTTP poslužitelj koristi PUT. Opet, ovo zahtijeva program (skriptu) na pozadini koji zna što učiniti i kako prihvatiti HTTP PUT tok.

Pošaljite datoteku na poslužitelj koristeći curl:

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

6. Autentifikacija

Autentifikacija - prosljeđivanje korisničkog imena i lozinke poslužitelju, nakon čega provjerava imate li pravo ispuniti traženi zahtjev. Osnovna provjera autentičnosti (koju curl koristi prema zadanim postavkama) temelji se na čisti tekst, što znači da korisničko ime i lozinka neće biti kriptirani, već samo malo “zamagljeni” korištenjem Base64 algoritma, ostavljajući mogućnost napadačima da saznaju te informacije na putu između vas i HTTP poslužitelja.

Kažete curlu 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 što poslužitelj piše u zaglavljima), u tim slučajevima možete koristiti --ntlm, --digest, --negotiate ili čak --anyauth sklopke. Ponekad se pristup vanjskim HTTP poslužiteljima odvija putem proxyja, to se često radi u tvrtkama i tvrtkama. HTTP proxy može zahtijevati vaše korisničko ime i lozinku za pristup internetu. Odgovarajući ključ za kovrče:

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

Ako proxy zahtijeva provjeru autentičnosti korištenjem NTLM metode, navedite --proxy-ntlm, ako je metoda Digest, tada --proxy-digest.

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

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

7. Upućivač

HTTP zahtjev može sadržavati polje "referer", koje pokazuje s kojeg je URL-a korisnik došao 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 provjere, mnoge ga skripte još uvijek koriste. Uz curl možete staviti bilo što u polje "referer" i na taj način učiniti 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 navodi klijentska aplikacija korisnik. Mnoge web-aplikacije koriste te podatke za prikaz stranice na ovaj ili onaj način. Web programeri stvaraju više verzija stranice za korisnike različitim preglednicima kako bi se poboljšala izgled, korištenje raznih javascript skripte, vbscript itd.

Ponekad možete otkriti da curl vraća stranicu koja nije ista kao ona koju ste vidjeli u svom pregledniku. U ovom slučaju, prikladno je koristiti polje "Korisnički agent" kako biste još jednom prevarili poslužitelj.

Prerušiti uvojak kao Internet Explorer na Windows 2000 stroju:

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

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

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

9. Preusmjerava

Kada odgovori na vaš zahtjev, poslužitelj može vratiti naznaku gdje bi preglednik trebao ići dalje da dođe do stranice umjesto same stranice. željenu stranicu. Zaglavlje koje označava takvo preusmjeravanje na preglednik je "Lokacija:".

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

# curl -L www.sitethatredirects.com

Ako koristite curl za postavljanje POST zahtjeva na web mjesto koje odmah preusmjerava na drugu stranicu, možete sigurno 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

Pomoću kolačića web preglednici kontroliraju stanje na strani klijenta. Kolačić je ime s priloženim sadržajem. Slanjem kolačića poslužitelj govori klijentu putanju i naziv hosta na koji sljedeći put treba poslati kolačiće, životni vijek kolačića i neke druge parametre.

Kada se klijent poveže s poslužiteljem na adresi navedenoj u prihvaćenom kolačiću, klijent šalje taj kolačić poslužitelju (ako životni vijek nije istekao).

Mnoge aplikacije i poslužitelji koriste ovu metodu za kombiniranje više zahtjeva 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 preglednici.

Najjednostavniji način za slanje kolačića poslužitelju prilikom primanja stranice pomoću curla je dodavanje odgovarajućeg prekidača u naredbeni redak:

# curl -b "ime=Danijel" www.cookiesite.com

Kolačići se šalju kao normalna HTTP zaglavlja. To omogućuje curlu da sprema kolačiće čuvajući zaglavlja. Spremanje kolačića pomoću curla vrši se naredbom:

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

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

curl ima potpuno opremljen alat za rukovanje kolačićima, koji je koristan kada se želite ponovno spojiti na poslužitelj i koristiti kolačiće spremljene posljednji put (ili ručno izmijenjene). Za korištenje kolačića pohranjenih u datoteci, pozovite curl ovako:

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

Curlov "cookie engine" je omogućen kada navedete prekidač -b. Ako samo želite da curl prihvaća kolačiće, upotrijebite -b za navođenje datoteke koja ne postoji. Na primjer, ako želite da curl prihvati kolačiće sa stranice i zatim slijedi preusmjeravanje (možda dajući 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. Ovaj prikladan način razmjena kolačića između preglednika i automatskih skripti. Prekidač -b automatski određuje hoće li ovu datoteku kolačić navedeni preglednici i rukuje njime 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.cookiessite.com

11. HTTPS

Postoji nekoliko načina da osigurate svoje HTTP prijenose. Najviše 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 vjerojatnost da će vaši podaci ostati povjerljivi.

Curl podržava zahtjeve prema HTTPS poslužiteljima koristeći besplatnu biblioteku OpenSSL. Zahtjevi se događaju na uobičajeni način:

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

11.1 Potvrde

U HTTPS svijetu za provjeru autentičnosti koristite certifikate uz korisničko ime i lozinku. Curl podržava certifikate na strani klijenta. Svi certifikati zaključani su zaporkom koju trebate unijeti prije nego što Curl počne raditi s njima. Ključni izraz može se odrediti u naredbenom retku ili unijeti interaktivno. Certifikati u curlu koriste se na sljedeći način:

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

Curl također provjerava autentičnost poslužitelja provjeravajući poslužiteljev certifikat s lokalno pohranjenim. Ako postoji odstupanje, curl će odbiti povezivanje. Da biste zanemarili provjere autentičnosti, 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 pojedinačne zahtjeve kovrča.

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

# kovrča -d " " -H "Vrsta sadržaja: tekst/xml" -X PROPFIND url.com

Možete ukloniti naslov tako da ga navedete bez sadržaja. Na primjer, možete ukloniti zaglavlje "Host:" i time učiniti zahtjev "praznim":

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

Također možete dodati naslove. Vaš poslužitelj možda treba zaglavlje "Destination:":

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

13. Otklanjanje pogrešaka

Često se događa da web mjesto na curl zahtjeve odgovara drugačije nego na zahtjeve preglednika. U ovom slučaju, trebate učiniti curl što sličnijim pregledniku:

  • Koristite prekidač --trace-ascii za spremanje detaljnog zapisa upita kako biste ih mogli detaljno ispitati i razumjeti problem.
  • Provjerite jeste li provjerili kolačiće i upotrijebite ih ako je potrebno (pročitajte -b i spremite -c)
  • Navedite jedan od najnovijih popularnih preglednika u polju "user-agent".
  • Ispunite polje "referer" kao što to čini preglednik
  • Ako koristite POST zahtjeve, provjerite jesu li sva polja poslana istim redoslijedom kao preglednik (pogledajte točku 4.5 gore)

Dobar pomoćnik u ovom teškom zadatku je LiveHTTPHeader plugin za Mozilla/Firefox, koji vam omogućuje pregled svih zaglavlja koje ovaj preglednik šalje i prima (čak i kada koristite HTTPS).

Pristup niže razine je uhvatiti HTTP promet na mreži pomoću programa kao što su ethereal ili tcpdump, a zatim analizirati koja je zaglavlja preglednik primio i poslao (HTTPS čini ovaj pristup neučinkovitim).

RFC 2616 je obavezna literatura za svakoga tko želi razumjeti HTTP protokol.

RFC 2396 objašnjava sintaksu URL-a.

RFC 2109 definira kako funkcioniraju kolačići.

RFC 1867 definira format objave za učitavanje datoteke.

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

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

Život web programera zamagljen je poteškoćama. Posebno je neugodno kada se ne zna izvor tih poteškoća. Je li to problem sa slanjem zahtjeva, ili s odgovorom, ili s bibliotekom treće strane, ili je vanjski API pogrešan? Postoji hrpa raznih naprava koje nam mogu olakšati život. Evo nekih alata naredbenog retka koje osobno smatram neprocjenjivim.

kovrča
cURL je program za prijenos podataka preko raznih protokola, sličan wgetu. Glavna razlika je u tome što prema zadanim postavkama wget sprema u datoteku, dok cURL ispisuje u naredbeni redak. To čini pregled sadržaja web stranice vrlo lakim. Na primjer, evo kako brzo dobiti svoj trenutni vanjski IP:

$ curl ifconfig.me 93.96.141.93
Mogućnosti -i(prikaži naslove) i -ja(prikaži samo zaglavlja) čine cURL izvrsnim alatom za otklanjanje grešaka u HTTP odgovorima i analiziranje što vam točno poslužitelj šalje:

$ curl -I site HTTP/1.1 200 OK Server: nginx Datum: Thu, 18 Aug 2011 14:15:36 GMT Content-Type: text/html; charset=utf-8 Veza: Keep-alive Keep-alive: timeout=25
Parametar -L Također korisno, prisiljava cURL da automatski prati preusmjeravanja. cURL podržava HTTP autentifikaciju, kolačiće, HTTP proxy tuneliranje, ručne postavke u naslovima i još mnogo, mnogo više.

Opsada
- alat za testiranje opterećenja. Osim toga, ima prikladnu opciju -g, koji je vrlo sličan kovrča –iL, ali osim toga prikazuje vam i zaglavlja http zahtjeva. Evo primjera s google.com (neki naslovi uklonjeni radi sažetosti):

$ siege -g www.google.com GET / HTTP/1.1 Host: www.google.com User-Agent: JoeDog/1.00 (X11; I; Siege 2.70) Veza: zatvori HTTP/1.1 302 Pronađeno Lokacija: http:// www.google.co.uk/ Content-Type: text/html; charset=UTF-8 Server: gws Content-Length: 221 Veza: zatvori GET / HTTP/1.1 Host: www.google.co.uk User-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-Zaštita: 1; mode=blokiraj vezu: zatvori
Ali ono za što je Siege stvarno izvrstan je testiranje opterećenja. Kao Apache benchmark ab, može slati mnoge paralelne zahtjeve stranici i vidjeti kako obrađuje promet. U sljedeći primjer Evo kako testiramo Google s 20 upita u trajanju od 30 sekundi i rezultat je:

$ siege -c20 www.google.co.uk -b -t30s ... Ukidanje opsade poslužitelja... gotovo. Transakcije: 1400 pogodaka Dostupnost: 100,00 % Proteklo vrijeme: 29,22 sek. Prijenos podataka: 13,32 MB Vrijeme odziva: 0,41 s Brzina transakcije: 47,91 trans/s Protok: 0,46 MB/s Konkurentnost: 19,53 Uspješne transakcije: 1400 Neuspješne transakcije: 0 Najduže transakcija: 4,08 Najkraća transakcija: 0,08
Jedan od naj korisne funkcije Opsada je u tome što može raditi ne samo s jednom adresom, već i s popisom URL-ova iz datoteke. Ovo je izvrsno za testiranje opterećenja jer možete simulirati pravi promet na web-mjestu, umjesto da samo uvijek iznova posećujete isti URL. Na primjer, evo kako koristiti Siege za učitavanje poslužitelja 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 prometa tu je Wireshark s tisućama postavki, filtera i konfiguracija. Postoji i verzija naredbenog retka morski pas. Ali za jednostavne zadatke, Wiresharkovu funkcionalnost smatram suvišnom. Dakle, sve dok ne moram moćno oružje, Koristim . Omogućuje vam da radite sa mrežni paketi isto kao grep radi s datotekama.

Za web promet, gotovo uvijek ćete htjeti koristiti parametar -W za očuvanje oblikovanja niza kao i opciju -q, koji skriva suvišne informacije o neuparenim paketima. Evo primjera naredbe koja presreće sve pakete naredbom GET ili POST:

Ngrep -q -W byline "^(GET|POST) .*"
Možete dodati dodatni filter za pakete, na primjer prema određenom domaćinu, IP adresa ili port. Ovdje je filter za sve dolazne i odlazni promet na google.com, port 80, koji sadrži riječ "pretraži".

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

Često moramo preuzimati razne datoteke s interneta npr. izvršne datoteke programi, datoteke skripti, izvorne arhive. Ali to ne mora uvijek biti učinjeno putem preglednika. U mnogim je situacijama puno lakše izvršiti sve radnje putem terminala. Jer na taj način možete automatizirati proces. S druge strane, webmasteri s vremena na vrijeme moraju testirati dostupnost 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 za kovrče. Omogućuje vam rješavanje mnogo šireg spektra problema, uključujući čak i simulaciju radnji korisnika na web mjestu. U ovom članku ćemo pogledati kako koristiti curl, što je to i zašto je ovaj program potreban.

Zapravo, curl je više od običnog uslužnog programa naredbenog retka za Linux ili Windows. Ovo je skup biblioteka koje implementiraju osnovne sposobnosti Raditi sa URL stranice i prijenos datoteka. Knjižnica podržava rad s protokolima: FTP, FTPS, HTTP, HTTPS, TFTP, SCP, SFTP, Telnet, DICT, LDAP, kao i POP3, IMAP i SMTP. Izvrstan je za simulaciju radnji korisnika na stranicama i drugih operacija s URL-ovima.

podrška za curl knjižnicu dodana je mnogima različiti jezici programiranje i platforme. Uslužni program curl neovisni je omotač za ovu biblioteku. Upravo ćemo se na ovaj uslužni program usredotočiti u ovom članku.

kovrča naredba

Prije nego prijeđemo na opis kako 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:

$ curl link opcije

Sada pogledajmo glavne opcije:

  • -# - prikaz jednostavne trake napretka tijekom učitavanja;
  • -0 - koristiti http protokol 1.0;
  • -1 - koristiti tlsv1 enkripcijski protokol;
  • -2 - koristiti sslv2;
  • -3 - koristiti sslv3;
  • -4 - koristiti ipv4;
  • -6 - koristiti ipv6;
  • -A- navedite svog USER_AGENT-a;
  • -b- spremite kolačić u datoteku;
  • -c- poslati kolačić na poslužitelj iz datoteke;
  • -C- nastavak preuzimanja datoteke od prijelomne točke ili navedenog pomaka;
  • -m - maksimalno vrijemečekanje odgovora od poslužitelja;
  • -d- poslati podatke POST metoda;
  • -D- spremanje zaglavlja koje je poslužitelj vratio u datoteku;
  • -e- postavite polje Referer-uri, označavajući s koje stranice je korisnik došao;
  • -E- koristiti vanjski SSL certifikat;
  • -f- ne prikazuju poruke o pogreškama;
  • -F- poslati podatke u obliku obrasca;
  • -G- ako je ova opcija uključena, tada će se svi podaci navedeni u opciji -d prenositi metodom GET;
  • -H- prijenos zaglavlja na poslužitelj;
  • -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- prihvatiti i obraditi preusmjeravanja;
  • -s - maksimalan iznos preusmjeravanja pomoću lokacije;
  • -o- izlaz sadržaja stranice u datoteku;
  • -O- spremiti sadržaj u datoteku s nazivom stranice ili datoteke na poslužitelju;
  • -str- koristiti proxy;
  • --proto- navesti protokol koji će se koristiti;
  • -R- uštedite vrijeme Posljednja promjena udaljena datoteka;
  • -s- prikazati minimum informacija o greškama;
  • -S- prikaz poruka o greškama;
  • -T- učitajte datoteku na poslužitelj;
  • -v- najdetaljniji izlaz;
  • -y - minimalna brzina Preuzimanja;
  • -Y - maksimalna brzina Preuzimanja;
  • -z- preuzmite datoteku samo ako je izmijenjena kasnije od navedenog vremena;
  • -V- prikaz verzije.

Ovo nipošto nisu sve opcije za curl linux, ali navodi osnove koje ćete morati koristiti.

Kako koristiti curl?

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

Najviše zajednički zadatak- Ovo. Preuzimanje datoteke je vrlo jednostavno. Da biste to učinili, samo proslijedite 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 bit će poslan na standardni izlaz. Za pisanje u bilo koju datoteku koristite:

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

A ako želite da se rezultirajuća datoteka zove isto kao i datoteka na poslužitelju, 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 naredbom:

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 izmijenjena:

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

Ograničenje brzine

Brzinu preuzimanja možete ograničiti na potrebnu granicu kako ne biste preopteretili mrežu pomoću opcije -Y:

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

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

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

Prijenos datoteka

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

Ili provjerimo šalje li se datoteka 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 bilo koje podatke. Dopustite mi da vas podsjetim da se ova metoda koristi za slanje podataka različitih oblika. Za slanje takvog zahtjeva upotrijebite opciju -d. Za testiranje ćemo koristiti istu uslugu:

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

Ako niste zadovoljni ovom opcijom slanja, možete se pretvarati da ste poslali obrazac. Za ovo postoji opcija -F:

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

Ovdje prosljeđujemo polje lozinke obrascu, s vrstom čisti tekst, na isti način možete proslijediti više parametara.

Slanje i primanje kolačića

Web stranice koriste kolačiće za pohranu određenih informacija na strani korisnika. To može biti potrebno, na primjer, za provjeru autentičnosti. 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 vratiti kolačić curl:

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

Prijenos i analiza zaglavlja

Nije nam uvijek nužno potreban sadržaj stranice. Ponekad samo naslovi mogu biti zanimljivi. Za prikaz samo njih postoji opcija -I:

kovrča -I https://site

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

provjera autentičnosti kovrče

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

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

Autentifikacija na HTTP poslužiteljima bit će izvedena na isti način.

Korištenje proxyja

Ako trebate koristiti proxy poslužitelj za preuzimanje datoteka, to je također vrlo jednostavno. Dovoljno je u -x opciji navesti adresu proxy poslužitelja:

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

zaključke

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

c URL je vrlo koristan alat naredbeni redak za prijenos podataka s ili na poslužitelj. Curl podržava razne 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 mnogo različitih načina na zanimljive načine. Pomoću ovog alata možete preuzimati, postavljati i upravljati datotekama, provjeriti svoju adresu E-mail, ili čak ažurirajte svoj status na nekim web stranicama društveni mediji ili provjerite kakvo je vrijeme vani. U ovom članku ćemo pogledati pet najkorisnijih i najosnovnijih upotreba alata cURL na bilo kojem .

1. Provjerite URL

Jedna od najčešćih i najjednostavnijih upotreba cURL-a je ispisivanje same naredbe nakon koje slijedi URL koji želite testirati

Curl https://domain.ru

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

2. Spremite URL izlaz u datoteku

Curl -o web mjesto https://domain.ru % Ukupno % Primljeno % Xferd prosjek Vrijeme brzine Vrijeme Vrijeme Trenutačno Učitavanje Prijenos Ukupno Potrošena Preostala Brzina 100 41793 0 41793 0 0 275k 0 --:--:-- --:--:-- --:--:-- 2.9M

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

3. Prijenos datoteka pomoću programa Curl

Datoteke možete preuzeti koristeći Curl dodavanjem opcije -o naredbi. Koristi se za spremanje datoteka u lokalni poslužitelj s istim nazivima kao na udaljenom poslužitelju

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

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

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

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

Tako će arhiva 'file.zip' biti preuzeta i spremljena kao 'Archive.zip'.

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

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

Curl se također može koristiti za sigurno učitavanje datoteka preko SSH pomoću sljedeće naredbe

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

Imajte na umu da morate koristiti puni put do datoteke koju želite preuzeti

4. Uzmite informacije iz HTTP zaglavlja web stranice

Možete jednostavno dobiti informacije o HTTP zaglavlju s bilo koje web stranice dodavanjem opcije -I ('i') u cURL.

Curl -I http://domain.ru HTTP/1.1 200 OK Datum: ned, 16. listopada 2016. 23:37:15 GMT Poslužitelj: Apache/2.4.23 (Unix) X-Powered-By: PHP/5.6.24 Veza : zatvori Content-Type: text/html; skup znakova=UTF-8

5. Pristup FTP poslužitelju

Za pristup FTP poslužitelju koristeći Curl, morate koristiti sljedeću naredbu

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

Curl će se spojiti na FTP poslužitelj i izlistati sve datoteke i direktorije u početnom direktoriju korisnika

Možete preuzeti datoteku koristeći FTP

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

i učitajte datoteku na FTP poslužitelj

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

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

Muški uvojak

P.S. Ako vam se svidio ovaj post, podijelite ga sa svojim prijateljima na u društvenim mrežama pomoću gumba ispod ili jednostavno ostavite komentar. Hvala vam.

Život web programera zamagljen je poteškoćama. Posebno je neugodno kada se ne zna izvor tih poteškoća. Je li to problem sa slanjem zahtjeva, ili s odgovorom, ili s bibliotekom treće strane, ili je vanjski API pogrešan? Postoji hrpa raznih naprava koje nam mogu olakšati život. Evo nekih alata naredbenog retka koje osobno smatram neprocjenjivim.

kovrča
cURL je program za prijenos podataka preko raznih protokola, sličan wgetu. Glavna razlika je u tome što prema zadanim postavkama wget sprema u datoteku, dok cURL ispisuje u naredbeni redak. To čini pregled sadržaja web stranice vrlo lakim. Na primjer, evo kako brzo dobiti svoj trenutni vanjski IP:

$ curl ifconfig.me 93.96.141.93
Mogućnosti -i(prikaži naslove) i -ja(prikaži samo zaglavlja) čine cURL izvrsnim alatom za otklanjanje grešaka u HTTP odgovorima i analiziranje što vam točno poslužitelj šalje:

$ curl -I habrahabr.ru HTTP/1.1 200 OK Poslužitelj: nginx Datum: čet, 18. kolovoza 2011. 14:15:36 GMT Content-Type: text/html; charset=utf-8 Veza: Keep-alive Keep-alive: timeout=25
Parametar -L Također korisno, prisiljava cURL da automatski prati preusmjeravanja. cURL podržava HTTP autentifikaciju, kolačiće, tuneliranje kroz HTTP proxyje, ručne postavke u zaglavljima i još mnogo, mnogo više.

Opsada
Siege je alat za testiranje opterećenja. Osim toga, ima prikladnu opciju -g, koji je vrlo sličan kovrča –iL, ali osim toga prikazuje vam i zaglavlja http zahtjeva. Evo primjera s google.com (neki naslovi uklonjeni radi sažetosti):

$ siege -g www.google.com GET / HTTP/1.1 Host: www.google.com User-Agent: JoeDog/1.00 (X11; I; Siege 2.70) Veza: zatvori HTTP/1.1 302 Pronađeno Lokacija: http:// www.google.co.uk/ Content-Type: text/html; charset=UTF-8 Server: gws Content-Length: 221 Veza: zatvori GET / HTTP/1.1 Host: www.google.co.uk User-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-Zaštita: 1; mode=blokiraj vezu: zatvori
Ali ono za što je Siege stvarno izvrstan je testiranje opterećenja. Kao Apache benchmark ab, može slati mnoge paralelne zahtjeve stranici i vidjeti kako obrađuje promet. Sljedeći primjer pokazuje kako testiramo Google s 20 upita u trajanju od 30 sekundi i zatim ispisujemo rezultat:

$ siege -c20 www.google.co.uk -b -t30s ... Ukidanje opsade poslužitelja... gotovo. Transakcije: 1400 pogodaka Dostupnost: 100,00 % Proteklo vrijeme: 29,22 sek. Prijenos podataka: 13,32 MB Vrijeme odziva: 0,41 s Brzina transakcije: 47,91 trans/s Protok: 0,46 MB/s Konkurentnost: 19,53 Uspješne transakcije: 1400 Neuspješne transakcije: 0 Najduže transakcija: 4,08 Najkraća transakcija: 0,08
Jedna od najkorisnijih značajki Siegea je ta da može raditi ne samo s jednom adresom, već i s popisom URL-ova iz datoteke. Ovo je sjajno za testiranje opterećenja jer možete simulirati stvarni promet na web-mjestu, a ne samo ponavljati isti URL. Na primjer, evo kako koristiti Siege za učitavanje poslužitelja 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 prometa tu je Wireshark s tisućama postavki, filtera i konfiguracija. Postoji i verzija naredbenog retka morski pas. Ali za jednostavne zadatke, Wiresharkovu funkcionalnost smatram suvišnom. Dakle, osim ako ne trebam moćno oružje, koristim . Omogućuje vam da učinite istu stvar s mrežnim paketima kao grep radi s datotekama.

Za web promet, gotovo uvijek ćete htjeti koristiti parametar -W za očuvanje oblikovanja niza kao i opciju -q, koji skriva suvišne informacije o neuparenim paketima. Evo primjera naredbe koja presreće sve pakete naredbom GET ili POST:

Ngrep -q -W byline "^(GET|POST) .*"
Možete dodati dodatni filter za pakete, na primjer, prema danom hostu, IP adresi ili portu. Ovdje je filter za sav promet prema i od google.com, priključak 80, koji sadrži riječ "pretraži".

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

Najbolji članci na temu