Si të konfiguroni telefonat inteligjentë dhe PC. Portali informativ

Shërbimi i linjës së komandës curl. Hyrje në cURL

Ky artikull supozon se jeni njohur me bazat e rrjeteve dhe HTML.

Skripti është thelbësor kur ndërtoni një të mirë sistemi kompjuterik... Zgjerimi i aftësive të sistemeve Unix duke përdorur skriptet shell dhe programe të ndryshme duke kryer komandat e automatizuaraështë një nga arsyet pse ata janë kaq të suksesshëm.

Rritja e numrit të aplikacioneve që po lëvizin në ueb e ka bërë temën e skriptimit HTTP gjithnjë e më të kërkuar. Detyrat e rëndësishme në këtë fushë janë nxjerrje automatike informacion nga interneti, dërgimi ose shkarkimi i të dhënave në serverët e internetit, etj.

Curl - mjet linja e komandës, i cili ju lejon të bëni manipulime me URL dhe transferime të llojeve të ndryshme. Ky artikull fokusohet në bërjen e kërkesave të thjeshta HTTP. Supozohet se ju tashmë e dini se ku të shkruani

# curl --ndihmë

# curl --manual

për informacion mbi curl.

Curl nuk është një mjet që do të bëjë gjithçka për ju. Ai krijon kërkesa, merr të dhëna dhe dërgon të dhëna. Ju mund të keni nevojë për një lloj ngjitësi për të bashkuar gjithçka, ndoshta një gjuhë shkrimi (si bash) ose disa thirrje manuale.

1. Protokolli HTTP

HTTP është protokolli i përdorur gjatë marrjes së të dhënave nga serverët në internet. Është një protokoll shumë i thjeshtë që është ndërtuar në krye të TCP/IP. Protokolli gjithashtu lejon që informacioni të dërgohet në server nga një klient duke përdorur disa metoda, siç do të tregohet më poshtë.

HTTP janë vargje të tekstit ASCII të dërguar nga klienti në server për të kërkuar një veprim. Kur merret një kërkesë, serveri i përgjigjet klientit me disa shërbime vargjet e tekstit, dhe më pas përmbajtjen aktuale.

Duke përdorur çelësin curl -v, mund të shihni se çfarë komandash dërgon curl në server, si dhe tekste të tjera informative. Ndërprerësi -v është ndoshta mënyra e vetme për të korrigjuar gabimet apo edhe për të kuptuar ndërveprimin midis curl dhe serverit të uebit.

2. URL

Formati Uniform Resource Locator (URL) specifikon adresën e një burimi specifik në internet. Ju ndoshta e dini këtë, për shembull URL-të: http://curl.haxx.se ose https://yourbank.com.

3. Merrni faqen (GET).

Kërkesa më e thjeshtë dhe më e zakonshme HTTP është marrja e përmbajtjes së URL-së. URL-ja mund të lidhet me një faqe interneti, imazh ose skedar. Klienti dërgon një kërkesë GET në server dhe merr dokumentin e kërkuar. Nëse ekzekutoni komandën

# curl http://curl.haxx.se

ju do të merrni një faqe interneti të shfaqur në dritaren e terminalit tuaj. Dokumenti i plotë HTML që gjendet në këtë URL.

Të gjitha përgjigjet HTTP përmbajnë një grup kokash që zakonisht fshihen. Për t'i parë ato së bashku me vetë dokumentin, përdorni çelësin curl -i. Ju gjithashtu mund të kërkoni vetëm titujt me çelësin -I (i cili do ta bëjë curl të bëjë një kërkesë HEAD).

4. Format

Formularët janë mënyra kryesore e paraqitjes së një faqe interneti si një faqe HTML me fusha në të cilat përdoruesi fut të dhënat dhe më pas klikon butonin "OK" ose "Dërgo", pas së cilës të dhënat dërgohen në server. Pastaj serveri përdor të dhënat e marra dhe vendos se si të vazhdojë: të kërkojë informacion në bazën e të dhënave, të tregojë adresën e futur në një hartë, të shtojë një mesazh gabimi ose të përdorë informacionin për të vërtetuar përdoruesin. Sigurisht, ka një program në anën e serverit që pranon të dhënat tuaja.

4.1 MERRNI

Formulari GET përdor Metoda GET, për shembull si më poshtë:

Nëse e hapni këtë kod në shfletuesin tuaj, do të shihni një formular me kuti teksti dhe një buton të emërtuar "OK". Nëse futni "1905" dhe klikoni OK, shfletuesi do të krijojë një URL të re për t'u ndjekur. URL-ja do të përfaqësohet si një varg që përbëhet nga shtegu i URL-së së mëparshme dhe një varg si "junk.cgi? Birthyear = 1905 & shtyp = OK".

Për shembull, nëse formulari ndodhej në "www.hotmail.com/when/birth.html", atëherë duke klikuar OK do t'ju çoni në URL-në "www.hotmail.com/when/junk.cgi?birthyear=1905&press=OK "...

Shumica Motorë kërkimi punoni në atë mënyrë.

Për ta bërë curl form një kërkesë GET, thjesht shkruani atë që pritet nga formulari:

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

4.2 POST

Metoda GET bën që të gjitha informacionet e futura të shfaqen në shiriti i adresave shfletuesin tuaj. Ndoshta kjo është mirë kur ju duhet të shënoni faqen, por është një disavantazh i dukshëm kur shkruani fushat e formularit informacione të klasifikuara ose kur sasia e informacionit të futur në fusha është shumë e madhe (duke rezultuar në një URL të palexueshme).

Protokolli HTTP ofron një metodë POST. Me të, klienti dërgon të dhëna veçmas nga URL-ja dhe për këtë arsye nuk do t'i shihni ato në shiritin e adresave.

Forma që gjeneron kërkesën POST është e ngjashme me atë të mëparshme:

Curl mund të formojë një kërkesë POST me të njëjtat të dhëna si kjo:

# curl -d "viti i lindjes = 1905 & shtyp =% 20OK% 20" www.hotmail.com/when/junk.cgi

Kjo kërkesë POST përdor "Content-Type application / x-www-form-urlencoded", e cila është metoda më e përdorur.

Të dhënat që dërgoni në server duhet të kodohen saktë, curl nuk do ta bëjë këtë për ju. Për shembull, nëse dëshironi që të dhënat tuaja të përmbajnë një hapësirë, duhet ta zëvendësoni atë hapësirë ​​me% 20, etj. Mungesa e vëmendjes për këtë çështje - gabim i zakonshëm, për shkak të së cilës të dhënat nuk transferohen siç duhet.

Në vitin 1995, u përcaktua mënyrë shtesë transferimi i të dhënave përmes HTTP. Është e dokumentuar në RFC 1867, kjo është arsyeja pse nganjëherë referohet si postimi RFC1867.

Kjo metodë është krijuar kryesisht për mbështetje më të mirë shkarko skedarë. Forma që lejon përdoruesin të ngarkojë një skedar duket si kjo në HTML:

Vini re se Content-Type është vendosur në shumëpjesëshe/formë-të dhëna.

Për të dërguar të dhëna në një formë të tillë duke përdorur curl, futni komandën:

# kaçurrela -F [email i mbrojtur]-F shtyp = OK

4.4 Fushat e fshehura

Një mënyrë e zakonshme për të komunikuar informacionin e gjendjes në aplikacionet HTML është përdorimi i fushave të fshehura në forma. Fushat e fshehura nuk janë të mbushura, ato janë të padukshme për përdoruesin dhe kalohen në të njëjtën mënyrë si fushat e rregullta.

Një shembull i thjeshtë i një formulari me një fushë të dukshme, një të fshehur dhe një buton OK:

Për të dërguar një kërkesë POST duke përdorur curl, nuk duhet të mendoni nëse fusha është e fshehur apo jo. Për kaçurrela, ato janë të gjitha të njëjta:

# curl -d "viti i lindjes = 1905 & shtyp = OK & personi = daniel"

4.5 Zbuloni se si duket një kërkesë POST

Kur dëshironi të plotësoni një formular dhe të dërgoni të dhëna në server duke përdorur curl, me siguri dëshironi që kërkesa POST të duket saktësisht e njëjtë me atë të ekzekutuar duke përdorur shfletuesin.

Një mënyrë e thjeshtë për të parë kërkesën tuaj POST është të ruani faqen HTML me formularin në disk, të ndryshoni metodën në GET dhe të klikoni butonin Submit (mund të ndryshoni gjithashtu URL-në në të cilën do të dërgohen të dhënat).

Ju do t'i shihni të dhënat e bashkangjitura në URL, të ndara me karaktere "?", siç pritej kur përdorni formularët GET.

5. VENDOS

Ndoshta, Menyra me e mire për të ngarkuar të dhëna në një server HTTP, kjo është për të përdorur PUT. Përsëri, kjo kërkon një program (skript) në anën e pasme që di se çfarë të bëjë dhe si të marrë një transmetim HTTP PUT.

Dërgoni skedarin në server duke përdorur curl:

# curl -T ngarkoni skedar www.uploadhttp.com/receive.cgi

6. Autentifikimi

Autentifikimi - kalimi i emrit të përdoruesit dhe fjalëkalimit në server, më pas ai kontrollon nëse keni të drejtë të bëni kërkesën e kërkuar. Autentifikimi bazë (të cilin curl e përdor si parazgjedhje) bazohet në Teksti i thjeshtë, që do të thotë se emri i përdoruesit dhe fjalëkalimi nuk do të jenë të enkriptuara, por vetëm pak të "errësuara" nga algoritmi Base64, gjë që u lë një mundësi sulmuesve në rrugën midis jush dhe serverit HTTP që të zbulojnë këtë informacion.

Duke i thënë curl-it të përdorë një emër përdoruesi dhe fjalëkalim:

Emri # curl -u: fjalëkalimi www.secrets.com

Faqja mund të kërkojë përdorimin e një metode të ndryshme vërtetimi (shiko çfarë shkruan serveri në titujt), në këto raste mund të përdorni çelësat --ntlm, --digest, --negotiate, apo edhe --anyauth. Ndonjëherë qasja në serverët e jashtëm HTTP bëhet përmes një përfaqësuesi, siç bëhet shpesh në kompani dhe firma. Një përfaqësues HTTP mund të kërkojë emrin e vet të përdoruesit dhe fjalëkalimin për të hyrë në internet. Çelësi i kaçurrelës përkatës:

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

Nëse përfaqësuesi kërkon vërtetim NTLM, specifikoni --proxy-ntlm, nëse metodën Digest, atëherë --proxy-digest.

Nëse nuk e specifikoni fjalëkalimin në çelësat -u dhe -U, atëherë curl do t'ju kërkojë atë në modaliteti interaktiv.

Vini re se kur curl po funksionon, linja e nisjes (së bashku me çelësat dhe fjalëkalimet) mund të jetë e dukshme për përdoruesit e tjerë në sistemin tuaj në listën e detyrave. Ka mënyra për ta parandaluar këtë. Më shumë për këtë më poshtë.

7. Referues

Kërkesa HTTP mund të përfshijë një fushë "referues" që tregon se nga cila URL ka ardhur përdoruesi këtë burim... Disa programe/skripta kontrollojnë fushën "referues" dhe nuk e ekzekutojnë kërkesën nëse përdoruesi vjen nga një faqe e panjohur. Edhe pse kjo është një mënyrë e trashë për të kontrolluar, shumë skripta e përdorin atë. Me curl, ju mund të vendosni çdo gjë në fushën "referues" dhe ta bëni atë të bëjë atë që dëshironi.

Kjo bëhet si më poshtë:

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

8. Agjenti i përdoruesit

Të gjitha kërkesat HTTP mbështesin fushën "User-Agent", e cila specifikon aplikacioni i klientit përdorues. Shumë aplikacione ueb përdorin këtë informacion për të shfaqur faqen në një mënyrë ose në një tjetër. Programuesit e uebit krijojnë versione të shumta të një faqeje për përdoruesit shfletues të ndryshëm për të përmirësuar pamjen, përdorimi i të ndryshme skriptet javascript, vbscript, etj.

Ndonjëherë mund të zbuloni se curl po kthen një faqe të ndryshme nga ajo që keni parë në shfletuesin tuaj. Në këtë rast, është thjesht e përshtatshme të përdoret fusha "Agjenti i përdoruesit" për të mashtruar serverin edhe një herë.

Disguise curl si Internet Explorer në një makinë Windows 2000:

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

Pse të mos bëheni Netscape 4.73 në një kuti Linux (PIII):

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

9. Ridrejtimet

Në përgjigje të kërkesës suaj, serveri, në vend të vetë faqes, mund të kthejë një tregues se ku duhet të shkojë shfletuesi më pas për të shkuar te faqen e dëshiruar... Kreu që i tregon shfletuesit këtë ridrejtim është "Vendndodhja:".

Si parazgjedhje, curl nuk shkon në vendndodhjen e specifikuar në "Vendndodhja:", por thjesht shfaq faqen si zakonisht. Por ju mund ta drejtoni atë si më poshtë:

# curl -L www.sitethatredirects.com

Nëse jeni duke përdorur curl për kërkesat POST në një sajt që ridrejtohet menjëherë në një faqe tjetër, mund të përdorni me siguri kombinimin -L dhe -d / -F. Curl do të formojë një kërkesë POST për faqen e parë, dhe më pas një kërkesë GET për tjetrën.

10. Biskota

Me cookies, shfletuesit e uebit kontrollojnë gjendjen nga ana e klientit. Cookie është një emër me përmbajtje të bashkangjitur. Serveri, duke dërguar cookie, i tregon klientit rrugën dhe emrin e hostit në të cilin duhet të dërgohen cookies herën tjetër, tregon jetëgjatësinë e cookie-t dhe disa parametra të tjerë.

Kur një klient lidhet me serverin në adresën e specifikuar në cookie-n e pranuar, klienti e dërgon atë cookie në server (nëse nuk ka skaduar kohëzgjatja).

Shumë aplikacione dhe serverë përdorin këtë teknikë për të kombinuar shumë kërkesa në një seancë logjike. Që curl të kryejë edhe këtë funksion, ne duhet të jemi në gjendje të ruajmë dhe dërgojmë cookie, ashtu si bëjnë shfletuesit.

Mënyra më e thjeshtë për të dërguar një cookie në server kur një faqe merret duke përdorur curl është të shtoni çelësin e duhur në vijën e komandës:

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

Cookies dërgohen si tituj të rregullt HTTP. Kjo i lejon curl-it të ruajë skedarët e skedarëve duke ruajtur titujt. Ruajtja e cookies duke përdorur curl bëhet me komandën:

# curl -D headers_and_cookies www.cookiesite.com

(nga rruga, për të ruajtur cookies është më mirë të përdorni çelësin -c, më shumë për këtë më poshtë).

Curl ka një mbajtës plotësisht funksional të cookie-ve, i cili është i dobishëm kur dëshironi të lidheni përsëri me serverin dhe të përdorni skedarët e skedarëve që janë ruajtur herën e fundit (ose janë punuar me dorë). Për të përdorur cookie-t e ruajtura në një skedar, telefononi curl si kjo:

# curl -b ruajtur_cookies_in_file www.cookiesite.com

Motori i kukive curl aktivizohet kur specifikoni çelësin -b. Nëse dëshironi që curl të pranojë vetëm cookie, përdorni -b me një skedar që nuk ekziston. Për shembull, nëse dëshironi që curl të pranojë cookie nga një faqe dhe më pas të ndiqni ridrejtimin (ndoshta duke e kthyer cookie-n që sapo keni pranuar), mund ta quani curl si kjo:

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

Curl mund të lexojë dhe të shkruajë skedarë Netscape dhe Mozilla. Kjo mënyrë e përshtatshme shkëmbejnë cookie ndërmjet shfletuesve dhe skripteve të automatizuara. Ndërprerësi -b zbulon automatikisht nëse këtë skedar biskotë shfletues të specifikuar dhe e trajton atë në mënyrë të përshtatshme, dhe duke përdorur çelësin -c / - cookie-jar, mund ta detyroni curl të shkruajë një cookie të re kur të përfundojë operacioni:

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

11. HTTPS

Ka disa mënyra për të siguruar transferimet tuaja HTTP. Shumica protokolli i njohur që zgjidh këtë problem është HTTPS, ose HTTP mbi SSL. SSL kodon të gjitha të dhënat e dërguara dhe të marra përmes rrjetit, gjë që rrit gjasat që informacioni juaj të mbahet sekret.

Curl mbështet kërkesat për serverët HTTPS falë bibliotekës falas OpenSSL. Kërkesat ndodhin mënyra e zakonshme:

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

11.1 Certifikatat

Në botën HTTPS, ju përdorni certifikata përveç emrit të përdoruesit dhe fjalëkalimit për vërtetim. Curl mbështet certifikatat nga ana e klientit. Të gjitha certifikatat janë të kyçura me një frazë kalimi që duhet të futni përpara se curl të fillojë të punojë me to. Fraza kryesore mund të specifikohet ose në vijën komanduese ose të futet në mënyrë interaktive. Curl përdor certifikata si kjo:

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

Curl gjithashtu verifikon identitetin e serverit duke kontrolluar certifikatën e serverit kundrejt një certifikate të ruajtur në vend. Nëse gjendet një mospërputhje, curl do të refuzojë të lidhet. Për të injoruar vërtetimin, përdorni çelësin -k.

Më shumë informacion i detajuar rreth certifikatave mund të gjenden në http://curl.haxx.se/docs/sslcerts.html.

12. Titujt e kërkesave arbitrare

Mund t'ju duhet të ndryshoni ose shtoni artikuj kërkesat individuale kaçurrela.

Për shembull, mund ta ndryshoni kërkesën POST në PROPFIND dhe t'i dërgoni të dhënat si "Lloji i përmbajtjes: tekst / xml" (në vend të tipit të zakonshëm të përmbajtjes):

# kaçurrela -d " "-H" Lloji i Përmbajtjes: tekst / xml "-X PROPFIND url.com

Ju mund të hiqni çdo titull duke e specifikuar atë pa përmbajtje. Për shembull, mund të hiqni kokën "Host:", duke e bërë kështu kërkesën "bosh":

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

Gjithashtu mund të shtoni tituj. Serverit tuaj mund t'i duhet një titull "Desination:":

# curl -H "Destinacioni: http://moo.com/nowhere" http://url.com

13. Debugimi

Ndodh shpesh që një faqe u përgjigjet kërkesave të curl ndryshe nga kërkesat e shfletuesit. Në këtë rast, duhet t'i ngjani sa më shumë kaçurrela shfletuesit:

  • Përdorni çelësin --trace-ascii për të ruajtur një raport të detajuar të kërkesave në mënyrë që më vonë t'i shqyrtoni ato në detaje dhe të kuptoni problemin.
  • Sigurohuni që të kontrolloni për cookies dhe t'i përdorni ato nëse është e nevojshme (lexoni çelësin -b dhe ruani -c)
  • Futni një nga shfletuesit më të fundit të njohur në fushën "agjent përdorues".
  • Plotësoni fushën "referues" siç bën shfletuesi
  • Nëse po përdorni kërkesat POST, sigurohuni që të gjitha fushat të kalohen në të njëjtin rend si shfletuesi (shih më lart, pika 4.5)

Një ndihmës i mirë në këtë detyrë të vështirë është shtojca LiveHTTPHeader për Mozilla / Firefox, e cila ju lejon të shikoni të gjithë titujt që dërgon dhe merr ky shfletues (edhe kur përdorni HTTPS).

Një qasje e nivelit më të ulët është të kapni trafikun HTTP në ueb duke përdorur programe si ethereal ose tcpdump dhe më pas të analizoni se cilët tituj janë marrë dhe dërguar nga shfletuesi (HTTPS e bën këtë qasje joefektive).

RFC 2616 është një lexim i domosdoshëm për këdo që dëshiron të kuptojë protokollin HTTP.

RFC 2396 shpjegon sintaksën për URL-të.

RFC 2109 përcakton se si funksionojnë cookies.

RFC 1867 përcakton formatin e postimit të ngarkimit të skedarit.

http://openssl.planetmirror.com - Faqja kryesore Projekti OpenSSL

http://curl.haxx.se - faqja kryesore e projektit cURL

Jeta e një zhvilluesi të internetit është e turbullt nga kompleksiteti. Është veçanërisht zhgënjyese kur burimi i këtyre komplikimeve është i panjohur. A është problem me dërgimin e një kërkese, apo me një përgjigje, apo me një bibliotekë të palëve të treta, apo API-ja e jashtme është me gabime? Ka një mori përshtatjesh të ndryshme që mund ta bëjnë jetën tonë më të lehtë. Këtu janë disa mjete të linjës së komandës që unë personalisht i gjej të paçmueshme.

CURL
cURL është një program për transferimin e të dhënave mbi protokolle të ndryshme, të ngjashme me wget. Dallimi kryesor është se si parazgjedhje wget ruan në një skedar, ndërsa cURL printon në vijën e komandës. Kjo e bën shumë të lehtë shikimin e përmbajtjes së faqes në internet. Për shembull, ja se si të merrni shpejt IP-në tuaj të jashtme aktuale:

$ curl ifconfig.me 93.96.141.93
Parametrat -i(tregoni kokat) dhe - Unë(shfaqni vetëm titujt) e bëjnë cURL një mjet të shkëlqyeshëm për korrigjimin e përgjigjeve HTTP dhe analizimin e asaj që saktësisht po ju dërgon serveri:

$ curl -I sajti HTTP / 1.1 200 OK Serveri: nginx Data: Thu, 18 Gusht 2011 14:15:36 GMT Lloji i Përmbajtjes: tekst / html; charset = utf-8 Lidhja: keep-alive Keep-alive: timeout = 25
Parametri -L gjithashtu i dobishëm, e bën cURL të ndjekë automatikisht ridrejtimet. cURL mbështet Autentifikimin HTTP, Cookies, tunelimin e proxy HTTP, cilësimet manuale në tituj dhe shumë e shumë më tepër.

Rrethimi
- një mjet për testimin e stresit. Plus, ajo ka një opsion të dobishëm -g e cila është shumë e ngjashme me kaçurrela –iL, por gjithashtu ju tregon titujt e kërkesës http. Ja një shembull nga google.com (disa tituj janë hequr për shkurtësi):

$ siege -g www.google.com GET / HTTP / 1.1 Pritësi: www.google.com Agjenti i përdoruesit: JoeDog / 1.00 (X11; I; Siege 2.70) Lidhja: mbyll HTTP / 1.1 302 Vendndodhja e gjetur: http: // www.google.co.uk/ Lloji i përmbajtjes: tekst / html; charset = UTF-8 Server: gws Content-Length: 221 Lidhja: mbyll GET / HTTP / 1.1 Pritësi: www.google.co.uk Përdoruesi-Agjent: JoeDog / 1.00 (X11; I; Siege 2.70) Lidhja: mbyll HTTP / 1.1 200 OK Lloji i përmbajtjes: tekst / html; grup karakteresh = ISO-8859-1 X-XSS-Mbrojtja: 1; mode = bllok Lidhja: mbyll
Por ajo për të cilën Siege është vërtet e mrekullueshme është testimi i ngarkesës. Ashtu si pikë referimi Apache ab, ai mund të dërgojë shumë kërkesa të njëkohshme në sajt dhe të shohë se si e trajton trafikun. V shembullin e mëposhtëm tregon se si testojmë Google me 20 kërkesa për 30 sekonda, pas së cilës shfaqet rezultati:

$ siege -c20 www.google.co.uk -b -t30s ... Heqja e rrethimit të serverit ... u krye. Transaksionet: 1400 vizita Disponueshmëria: 100,00% Koha e kaluar: 29,22 sekonda Të dhënat e transferuara: 13,32 MB Koha e përgjigjes: 0,41 sekonda Shkalla e transaksionit: 47,91 trans / sek Përfundimi: 0,46 MB / sek 1 transaksione të suksesshme. 4.08 Transaksioni më i shkurtër: 0.08
Një nga më funksione të dobishme Siege do të thotë që mund të funksionojë jo vetëm me një adresë, por edhe me një listë të URL-ve nga një skedar. Kjo është e shkëlqyeshme për testimin e ngarkesës sepse mund të simuloni trafiku real në faqe, jo vetëm duke goditur të njëjtën URL pa pushim. Për shembull, ja se si të përdorni Siege për të ngarkuar një server duke përdorur adresat nga regjistri juaj Apache:

$ cut -d "" -f7 /var/log/apache2/access.log> urls.txt $ siege -c -b -f urls.txt
Ngrep
Për analiza serioze të trafikut, ekziston Wireshark me mijëra cilësime, filtra dhe konfigurime. Ekziston gjithashtu një version i linjës së komandës peshkaqen... Por për detyra të thjeshta, unë e konsideroj funksionalitetin e Wireshark të tepërt. Pra, për sa kohë që nuk kam nevojë armë e fuqishme, përdor. Kjo ju lejon të bëni me paketat e rrjetit e njejte si grep bën me skedarë.

Për trafikun në internet, pothuajse gjithmonë do të dëshironi të përdorni parametrin - W për të ruajtur formatimin e vargut si dhe opsionin -q i cili fsheh informacione të tepërta për paketat e papërshtatshme. Këtu është një shembull i një komande që përgjon të gjitha paketat me një komandë GET ose POST:

Ngrep -q -W rreshti "^ (MERRNI | POST). *"
Ju mund të shtoni një filtër shtesë për paketat, për shembull nga një host të caktuar, adresën IP ose portin. Këtu është një filtër për gjithçka që hyn dhe trafiku dalës në google.com, porta 80, e cila përmban fjalën "kërko".

Ngrep -q -W byline "kërko" host www.google.com dhe porta 80

Shpesh na duhet të shkarkojmë skedarë të ndryshëm nga interneti, për shembull, skedarë të ekzekutueshëm programet, skedarët e skripteve, arkivat burimore. Por kjo nuk duhet të bëhet gjithmonë përmes një shfletuesi. Në shumë situata, është shumë më e lehtë të kryhen të gjitha veprimet përmes terminalit. Sepse në këtë mënyrë ju mund të automatizoni procesin. Nga ana tjetër, webmasterët duhet të testojnë herë pas here aksesin e faqes në internet, të kontrollojnë titujt e dërguar dhe marrë, dhe më shumë.

Për të zgjidhur probleme dhe detyra të tilla të një rrethi të ngjashëm, mund të përdorni mjetin curl. Kjo ju lejon të zgjidhni një gamë shumë më të gjerë detyrash, duke përfshirë edhe imitimin e veprimeve të përdoruesit në sit. Në këtë artikull, ne do të shikojmë se si të përdorim curl, çfarë është dhe pse është i nevojshëm ky program.

Në fakt, curl është më shumë sesa thjesht një mjet i linjës komanduese për Linux ose Windows. Ky është një grup bibliotekash që zbatojnë aftësitë bazë punojnë me Faqet e URL-së dhe transferimin e skedarëve. Biblioteka mbështet protokollet e mëposhtme: FTP, FTPS, HTTP, HTTPS, TFTP, SCP, SFTP, Telnet, DICT, LDAP, si dhe POP3, IMAP dhe SMTP. Është i shkëlqyeshëm për simulimin e veprimeve të përdoruesve në faqe dhe operacione të tjera URL.

Mbështetja e bibliotekës Curl është shtuar në shumë gjuhë të ndryshme programimit dhe platformave. Programi curl është një mbështjellës i pavarur rreth kësaj biblioteke. Është ky mjet në të cilin do të përqendrohemi në këtë artikull.

Komanda Curl

Përpara se të kalojmë në një përshkrim se si mund të përdoret komanda curl linux, le të hedhim një vështrim në vetë programin dhe opsionet e tij kryesore që na duhen. Sintaksa e shërbimeve është shumë e thjeshtë:

Lidhja e opsioneve $ curl

Tani le të shohim opsionet kryesore:

  • -# - shfaq një shirit të thjeshtë progresi gjatë ngarkimit;
  • -0 - përdorni protokolli http 1.0;
  • -1 - përdorni protokollin e enkriptimit tlsv1;
  • -2 - përdorni sslv2;
  • -3 - përdorni sslv3;
  • -4 - përdorni ipv4;
  • -6 - përdorni ipv6;
  • -A- specifikoni USER_AGENT tuaj;
  • -b- ruajeni cookie-n në një skedar;
  • -c- dërgoni një cookie në server nga një skedar;
  • -C- vazhdoni ngarkimin e skedarit nga pika e ndërprerjes ose kompensimi i specifikuar;
  • -m - koha maksimale duke pritur për një përgjigje nga serveri;
  • -d- dërgoni të dhëna me metodën POST;
  • -D- ruani kokat e kthyera nga serveri në një skedar;
  • -e- vendosni fushën Referer-uri, tregon se nga cila faqe ka ardhur përdoruesi;
  • -E- përdorni një certifikatë të jashtme SSL;
  • -f- mos shfaq mesazhe gabimi;
  • -F- dërgoni të dhëna në formën e një formulari;
  • -G- nëse ky opsion është i aktivizuar, atëherë të gjitha të dhënat e specifikuara në opsionin -d do të transferohen duke përdorur metodën GET;
  • -H- transferimi i titujve në server;
  • - Unë- merrni vetëm kokën HTTP dhe injoroni të gjithë përmbajtjen e faqes;
  • -j- lexoni dhe dërgoni një cookie nga një skedar;
  • -J- hiqni titullin nga kërkesa;
  • -L- pranoni dhe përpunoni ridrejtimet;
  • -s - shuma maksimale ridrejtimet duke përdorur Vendndodhja;
  • -o- nxjerr përmbajtjen e faqes në një skedar;
  • -O- ruani përmbajtjen në një skedar me emrin e faqes ose skedarit në server;
  • -fq- përdorni një përfaqësues;
  • --proto- tregoni protokollin që do të përdoret;
  • -R- kurseni kohë ndryshimi i fundit skedari i fshirë;
  • -s- shfaq një minimum informacioni për gabimet;
  • -S- shfaq mesazhet e gabimit;
  • -T- ngarkoni skedarin në server;
  • -v- prodhimi më i detajuar;
  • -y - shpejtësi minimale shkarkime;
  • -Y - shpejtesi maksimale shkarkime;
  • -z- shkarkoni skedarin vetëm nëse është modifikuar më vonë se koha e specifikuar;
  • -V- shfaq versionin.

Këto nuk janë të gjitha opsionet curl linux, por këtu janë të gjitha ato themelore që do t'ju duhet të përdorni.

Si të përdor curl?

Ne kemi mbuluar gjithçka që lidhet me teorinë e punës me mjetin curl, tani është koha të kalojmë në praktikë dhe të shqyrtojmë shembuj të komandës curl.

Më së shumti detyrë e shpeshtë- ajo. Është shumë e lehtë për të shkarkuar skedarin. Për ta bërë këtë, mjafton të kaloni emrin e skedarit ose faqen html te mjeti në parametrat:

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

Por këtu ju pret një surprizë, e gjithë përmbajtja e skedarit do të dërgohet në dalje standarde. Për ta shkruar atë në një skedar, përdorni:

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

Dhe nëse dëshironi që skedari që rezulton të emërtohet njësoj si skedari në server, përdorni opsionin -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

Nëse është e nevojshme, mund të shkarkoni disa skedarë me një komandë:

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

Një gjë tjetër që mund të jetë e dobishme për administratorin është shkarkimi i skedarit vetëm nëse ai është ndryshuar:

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

Kufiri i shpejtësisë

Mund ta kufizoni shpejtësinë e shkarkimit në kufirin e kërkuar në mënyrë që të mos mbingarkoni rrjetin me opsionin -Y:

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

Këtu ju duhet të specifikoni numrin e kilobajt për sekondë që mund të shkarkohen. Ju gjithashtu mund të hiqni lidhjen nëse shpejtësia nuk është e mjaftueshme, për këtë përdorni opsionin -Y:

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

Transferimi i skedarëve

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

Ose le të kontrollojmë dërgimin e një skedari përmes HTTP, për këtë ekziston një shërbim i veçantë:

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

Si përgjigje, programi do t'ju tregojë se ku mund ta gjeni skedarin e shkarkuar.

Dërgimi i të dhënave POST

Ju mund të dërgoni jo vetëm skedarë, por edhe çdo të dhënë duke përdorur metodën POST. Më lejoni t'ju kujtoj se kjo metodë përdoret për të paraqitur të dhëna nga forma të ndryshme. Përdorni opsionin -d për të dërguar një kërkesë të tillë. Për testim do të përdorim të njëjtin shërbim:

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

Nëse nuk jeni të kënaqur me këtë mundësi paraqitjeje, mund të pretendoni se e keni dorëzuar formularin. Ekziston një opsion -F për këtë:

kaçurrela -F" [email i mbrojtur]; lloji = teksti / i thjeshtë "http://posttestserver.com/post.php

Këtu kalojmë fushën e fjalëkalimit në formë, me llojin Teksti i thjeshtë, ju mund të kaloni disa parametra në të njëjtën mënyrë.

Transmetimi dhe marrja e cookies

Cookies ose Cookies përdoren nga faqet e internetit për të ruajtur informacione të caktuara në anën e përdoruesit. Kjo mund të jetë e nevojshme, për shembull, për vërtetimin. Ju mund të merrni dhe të transmetoni cookie duke përdorur curl. Për të ruajtur Cookies të marra në një skedar, përdorni opsionin -c:

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

Më pas mund ta dërgoni përsëri kaçurrelin e biskotave:

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

Kalimi dhe analizimi i titujve

Jo gjithmonë kemi nevojë për përmbajtjen e faqes. Ndonjëherë vetëm titujt mund të jenë me interes. Për të shfaqur vetëm ato ekziston opsioni -I:

curl -I https: // faqe

Dhe opsioni -H lejon ose disa në server, për shembull, mund të kaloni kokën If-Modified-Since në mënyrë që faqja të kthehet vetëm nëse është ndryshuar:

Autentifikimi i kaçurrelave

Nëse serveri kërkon vërtetimin e një prej llojeve të zakonshme, për shembull, HTTP Basic ose FTP, atëherë curl mund ta përballojë shumë lehtë këtë detyrë. Për të specifikuar të dhënat e vërtetimit, thjesht specifikoni ato të ndara me dy pika në opsionin -u:

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

Autentifikimi në serverët HTTP do të funksionojë në të njëjtën mënyrë.

Duke përdorur një përfaqësues

Nëse ju duhet të përdorni një server proxy për të shkarkuar skedarë, atëherë kjo është gjithashtu shumë e lehtë. Mjafton të vendosni adresën e serverit proxy në opsionin -x:

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

konkluzionet

Në këtë artikull, ne shikuam se si të përdorni curl, pse keni nevojë për këtë mjet dhe veçoritë e tij kryesore. Pavarësisht ngjashmërisë së tyre, ato janë shumë të ndryshme. Komanda curl linux është më shumë për analizim dhe simulim veprime të ndryshme në server, ndërsa wget është më i përshtatshëm për shkarkimin e skedarëve dhe zvarritjen e faqeve.

c url shumë mjet i dobishëm linja e komandës për të transferuar të dhëna nga ose në server. Curl mbështet protokolle të ndryshme si FILE, HTTP, HTTPS, IMAP, IMAPS, LDAP, DICT, LDAPS, TELNET, FTPS, GOPHER, RTMP, RTSP, SCP, SFTP, POP3, POP3S, SMB, SMBS, SMTP, SMTPS, dhe .

cURL mund të përdoret në mënyra të ndryshme. në mënyra interesante... Me këtë mjet mund të shkarkoni, ngarkoni dhe menaxhoni skedarë, kontrolloni adresën tuaj Email, apo edhe përditësoni statusin tuaj në disa faqe interneti mediat sociale ose kontrolloni motin jashtë. Në këtë artikull, ne do të mbulojmë pesë nga përdorimet më të dobishme dhe themelore të mjetit cURL për këdo.

1. Kontrolloni URL-në

Një nga përdorimet më të zakonshme dhe më të thjeshta të cURL është të printoni vetë komandën dhe më pas URL-në që dëshironi të kontrolloni

Curl https://domain.ru

Kjo komandë do të shfaqë përmbajtjen e url-së në terminalin tuaj

2. Ruani url-në e daljes në një skedar

Faqja e internetit Curl -o https://domain.ru% Gjithsej% e marrë% Mesatarja Xferd Koha e shpejtësisë Koha Koha aktuale Ngarkimi i ngarkimit Totali i shpenzuar Shpejtësia e majtë

Në këtë shembull, dalja do të ruhet në një skedar të quajtur 'website' në drejtorinë aktuale të punës.

3. Ngarkimi i skedarëve me Curl

Ju mund të shkarkoni skedarë duke përdorur Curl duke shtuar opsionin -o në komandë. Përdoret për të ruajtur skedarët në server lokal me emra të njëjtë si në serverin në distancë

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

Në këtë shembull, arkivi 'file.zip' do të shkarkohet në drejtorinë aktuale të punës.

Ju gjithashtu mund të ngarkoni një skedar me një emër tjetër duke shtuar opsionin -o në cURL.

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

Kështu, arkivi 'file.zip' do të shkarkohet dhe do të ruhet si 'Archive.zip'.

cURL mund të përdoret gjithashtu për të shkarkuar skedarë të shumtë në të njëjtën kohë, siç tregohet në shembullin më poshtë

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

Curl mund të përdoret gjithashtu për të ngarkuar skedarë të sigurt mbi SSH me komandën e mëposhtme

Curl -u përdorues sftp: //server.domain.ru/path/to/file

Ju lutemi vini re se duhet të përdorni shtegun e plotë drejt skedarit që dëshironi të shkarkoni

4. Merrni informacion nga titulli HTTP i faqes së internetit

Ju mund të merrni me lehtësi informacionin e kokës së HTTP nga çdo faqe interneti duke shtuar opsionin -I ('i') në cURL.

Curl -I http://domain.ru HTTP / 1.1 200 OK Data: Die, 16 Tetor 2016 23:37:15 GMT Serveri: Apache / 2.4.23 (Unix) X-Powered-By: PHP / 5.6.24 Lidhja : mbyll Përmbajtja-Lloji: tekst / html; grup karakteresh = UTF-8

5. Qasja në serverin FTP

Për të hyrë në serverin FTP duke përdorur Curl, përdorni komandën e mëposhtme

Curl ftp://ftp.domain.ru --emri i përdoruesit: fjalëkalimi

Curl do të lidhet me serverin FTP dhe do të listojë të gjithë skedarët dhe drejtoritë në drejtorinë kryesore të përdoruesit

Ju mund ta shkarkoni skedarin duke përdorur FTP

Curl ftp://ftp.domain.ru/file.zip --emri i përdoruesit: fjalëkalimi

dhe ngarkoni skedarin në serverin FTP

Curl -T file.zip ftp://ftp.domain.ru/ --emri i përdoruesit: fjalëkalimi

Mund të kontrolloni manualisht faqen Curl për të parë gjithçka opsionet e disponueshme cURL dhe funksionaliteti i tij

Burri kaçurrela

PS. Nëse ju pëlqeu ky postim, ju lutemi ndajeni atë me miqtë tuaj në në rrjetet sociale duke përdorur butonat më poshtë ose thjesht lini një koment. falë.

Jeta e një zhvilluesi të internetit është e turbullt nga kompleksiteti. Është veçanërisht zhgënjyese kur burimi i këtyre komplikimeve është i panjohur. A është problem me dërgimin e një kërkese, apo me një përgjigje, apo me një bibliotekë të palëve të treta, apo API-ja e jashtme është me gabime? Ka një mori përshtatjesh të ndryshme që mund ta bëjnë jetën tonë më të lehtë. Këtu janë disa mjete të linjës së komandës që unë personalisht i gjej të paçmueshme.

CURL
cURL është një program për transferimin e të dhënave mbi protokolle të ndryshme, të ngjashme me wget. Dallimi kryesor është se si parazgjedhje wget ruan në një skedar, ndërsa cURL printon në vijën e komandës. Kjo e bën shumë të lehtë shikimin e përmbajtjes së faqes në internet. Për shembull, ja se si të merrni shpejt IP-në tuaj të jashtme aktuale:

$ curl ifconfig.me 93.96.141.93
Parametrat -i(tregoni kokat) dhe - Unë(shfaqni vetëm titujt) e bëjnë cURL një mjet të shkëlqyeshëm për korrigjimin e përgjigjeve HTTP dhe analizimin e asaj që saktësisht po ju dërgon serveri:

$ curl -I habrahabr.ru HTTP / 1.1 200 OK Serveri: nginx Data: Thu, 18 Gusht 2011 14:15:36 GMT Lloji i Përmbajtjes: tekst / html; charset = utf-8 Lidhja: keep-alive Keep-alive: timeout = 25
Parametri -L gjithashtu i dobishëm, e bën cURL të ndjekë automatikisht ridrejtimet. cURL mbështet vërtetimin HTTP, cookies, tunelimin e proxy HTTP, cilësimet manuale të kokës dhe shumë e shumë më tepër.

Rrethimi
Siege është një mjet testimi i ngarkesës. Plus, ajo ka një opsion të dobishëm -g e cila është shumë e ngjashme me kaçurrela –iL, por gjithashtu ju tregon titujt e kërkesës http. Ja një shembull nga google.com (disa tituj janë hequr për shkurtësi):

$ siege -g www.google.com GET / HTTP / 1.1 Pritësi: www.google.com Agjenti i përdoruesit: JoeDog / 1.00 (X11; I; Siege 2.70) Lidhja: mbyll HTTP / 1.1 302 Vendndodhja e gjetur: http: // www.google.co.uk/ Lloji i përmbajtjes: tekst / html; charset = UTF-8 Server: gws Content-Length: 221 Lidhja: mbyll GET / HTTP / 1.1 Pritësi: www.google.co.uk Përdoruesi-Agjent: JoeDog / 1.00 (X11; I; Siege 2.70) Lidhja: mbyll HTTP / 1.1 200 OK Lloji i përmbajtjes: tekst / html; grup karakteresh = ISO-8859-1 X-XSS-Mbrojtja: 1; mode = bllok Lidhja: mbyll
Por ajo për të cilën Siege është vërtet e mrekullueshme është testimi i ngarkesës. Ashtu si pikë referimi Apache ab, ai mund të dërgojë shumë kërkesa të njëkohshme në sajt dhe të shohë se si e trajton trafikun. Shembulli i mëposhtëm tregon se si ne testojmë Google me 20 pyetje për 30 sekonda, pas së cilës ai nxjerr rezultatin:

$ siege -c20 www.google.co.uk -b -t30s ... Heqja e rrethimit të serverit ... u krye. Transaksionet: 1400 vizita Disponueshmëria: 100,00% Koha e kaluar: 29,22 sekonda Të dhënat e transferuara: 13,32 MB Koha e përgjigjes: 0,41 sekonda Shkalla e transaksionit: 47,91 trans / sek Përfundimi: 0,46 MB / sek 1 transaksione të suksesshme. 4.08 Transaksioni më i shkurtër: 0.08
Një nga veçoritë më të dobishme të Siege është se ai mund të funksionojë jo vetëm me një adresë, por edhe me një listë të URL-ve nga një skedar. Kjo është e shkëlqyeshme për testimin e ngarkesës, sepse ju mund të simuloni trafikun e botës reale në faqen tuaj, në vend që thjesht të goditni të njëjtën URL pa pushim. Për shembull, ja se si të përdorni Siege për të ngarkuar një server duke përdorur adresat nga regjistri juaj Apache:

$ cut -d "" -f7 /var/log/apache2/access.log> urls.txt $ siege -c -b -f urls.txt
Ngrep
Për analiza serioze të trafikut, ekziston Wireshark me mijëra cilësime, filtra dhe konfigurime. Ekziston gjithashtu një version i linjës së komandës peshkaqen... Por për detyra të thjeshta, unë e konsideroj funksionalitetin e Wireshark të tepërt. Pra, për sa kohë që nuk kam nevojë për një armë të fuqishme, përdor. Kjo ju lejon të bëni të njëjtën gjë me paketat e rrjetit si grep bën me skedarë.

Për trafikun në internet, pothuajse gjithmonë do të dëshironi të përdorni parametrin - W për të ruajtur formatimin e vargut si dhe opsionin -q i cili fsheh informacione të tepërta për paketat e papërshtatshme. Këtu është një shembull i një komande që përgjon të gjitha paketat me një komandë GET ose POST:

Ngrep -q -W rreshti "^ (MERRNI | POST). *"
Mund të shtoni një filtër shtesë për paketat, për shembull, nga një host i caktuar, adresë IP ose port. Këtu është një filtër për të gjithë trafikun hyrës dhe dalës në google.com, porti 80, i cili përmban fjalën "kërko".

Ngrep -q -W byline "kërko" host www.google.com dhe porta 80

Artikujt kryesorë të lidhur