PHP CURL - funksiyalar və istifadə nümunələri. Curl_setopt - Komanda xəttindən curl istifadə edərək CURL seansı üçün seçimi təyin edir
CURL, URL sintaksisindən istifadə edərək məlumatların ötürülməsi üçün əmr satırı yardım proqramı və kitabxanadan ibarət proqram paketidir.
CURL DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, Telnet və TFTP daxil olmaqla bir çox protokolları dəstəkləyir.
Ayrı bir fayl yükləyin
Aşağıdakı əmr URL-in məzmununu alacaq və onu standart çıxışda (yəni terminalınızda) göstərəcək.
Curl https://mi-al.ru/ > mi-al.htm % Toplam % Qəbul % Xferd Orta Sürət Vaxt Vaxt Vaxt Cari Yükləmə Yükləmə Cəmi Xərclənmiş Sol Sürət 100 14378 0 14378 0 0 5387 0 --: --:- - 0:00:02 --:--:-- 5387
cURL çıxışının faylda saxlanmasıCurl əmrinin nəticəsini -o/-O seçimlərindən istifadə edərək faylda saxlaya bilərik.
- -o(o kiçik hərflə) nəticə komanda xəttində göstərilən faylda saxlanılacaq
- -O(böyük hərf O) fayl adı URL-dən götürüləcək və qəbul edilmiş məlumatları saxlamaq üçün istifadə olunacaq.
$ curl -o mygettext.html http://www.gnu.org/software/gettext/manual/gettext.html
Gettext.html səhifəsi indi 'mygettext.html' adlı faylda saxlanacaq. Curl -o seçimi ilə işlədildikdə, yükləmə tərəqqi çubuğunu aşağıdakı kimi göstərir.
% Toplam % Qəbul % Xferd Orta Sürət Vaxt Vaxt Vaxt Cari Yükləmə Yükləmə Cəmi Xərclənmiş Sol Sürət 66 1215k 66 805k 0 0 33060 0 0:00:37 0:00:24 0:00:13 45900 15012 012 0 0 39474 0 0:00:31 0:00:31 --:--:-- 68987
Siz curl -O (böyük hərf O) istifadə etdiyiniz zaman o, məzmunu yerli maşında ‘gettext.html’ adlı faylda saxlayacaq.
$ curl -O http://www.gnu.org/software/gettext/manual/gettext.html
Qeyd: Curl terminala məlumat yazmaq lazım olduqda, çap edilmiş məlumatlarla çaşqınlığın qarşısını almaq üçün tərəqqi çubuğunu söndürür. Nəticələri fayla köçürmək üçün '>'|'-o'|'-O' seçimlərindən istifadə edə bilərik.
Birdən çox faylın alınması
Komanda xəttində bütün URL-ləri göstərərək birdən çox faylı yükləyə bilərik.
Curl -O URL1 -O URL2
Aşağıdakı əmr həm index.html, həm də gettext.html fayllarını endirəcək və onları eyni adlarla cari kataloqda saxlayacaqdır.
Curl -O http://www.gnu.org/software/gettext/manual/html_node/index.html -O http://www.gnu.org/software/gettext/manual/gettext.html
Nəzərə alın ki, yuxarıda göstərildiyi kimi eyni serverdən birdən çox fayl endirdikdə, curl əlaqəni yenidən istifadə etməyə çalışacaq.
-L seçimi ilə HTTP Yer başlıqlarını izləyin
Varsayılan olaraq, CURL başlıqlarda (yönləndirmələrdə) HTTP Yerinə əməl etmir. Tələb olunan veb səhifə başqa yerə köçürüldükdə, müvafiq cavab HTTP Yer başlıqlarında göndəriləcək.
Məsələn, kimsə öz ölkəsindən brauzerinə google.com ünvanını yazdıqda, o, avtomatik olaraq "google.co.xx" saytına yönləndiriləcək. Bu, aşağıda göstərildiyi kimi HTTP Yer başlığı əsasında edilir.
Curl https://www.google.com/?gws_rd=ssl
302 köçürüldü
Sənəd bura köçürülüb.Yuxarıdakı çıxışda tələb olunan sənədin '
Qonaqlardan gizlədilib
.Siz curl-a yönləndirmələri izləməyi söyləyə bilərsiniz, bu, aşağıda göstərildiyi kimi -L seçimindən istifadə etməklə edilir. İndi html mənbə kodu buradan endiriləcək
Qonaqlardan gizlədilib
.Curl -L https://www.google.com/?gws_rd=ssl
Əvvəlki endirmənin yenilənməsi-C seçimindən istifadə edərək nədənsə dayandırılmış yükləməni davam etdirə bilərsiniz. Böyük faylları yükləmək uğursuz olduqda bu faydalı olacaq.
'-C -' desək, curl yükləməni haradan davam etdirəcəyini axtaracaq. Biz həmçinin '-C-ni təyin edə bilərik<смещение>'. Göstərilən bayt ofseti mənbə faylının əvvəlindən atlanacaq.
Curl ilə böyük yükləməyə başlayın və yükləmənin ortasında dayandırmaq üçün Ctrl-C düymələrini basın.
$ curl -O http://www.gnu.org/software/gettext/manual/gettext.html ############## 20,1%
Enjeksiyon 20,1% -də dayandırıldı. “curl -C -” istifadə edərək, qaldığımız yerdən yükləməyə davam edə bilərik. İndi yükləmə 20,1%-dən davam edəcək.
Curl -C - -O http://www.gnu.org/software/gettext/manual/gettext.html ############## 21,1%
Məlumat sürəti limitiSiz məlumat ötürmə sürətini –limit-rate seçimi ilə məhdudlaşdıra bilərsiniz. Arqument olaraq maksimum sürəti ötürə bilərsiniz.
$ curl --limit-rate 1000B -O http://www.gnu.org/software/gettext/manual/gettext.html
Yuxarıdakı əmr ötürmə sürətini 1000 bayt/saniyə ilə məhdudlaşdıracaq. curl zirvələrdə daha yüksək sürətlərdən istifadə edə bilər. Lakin orta sürət təxminən 1000 bayt/saniyə olacaq.
Aşağıda yuxarıdakı əmr üçün irəliləyiş çubuğu var. Cari sürətin təxminən 1000 bayt olduğunu görə bilərsiniz.
% Toplam % Qəbul edilmiş % Xferd Orta Sürət Vaxt Vaxt Vaxt Cari Yükləmə Yükləmə Toplam Xərclənmiş Sol Sürət 1 1215k 1 13601 0 0 957 0 0:21:40 0:00:14 0:21:26 999 1 1214600 1 0 0 960 0 0:21:36 0:00:15 0:21:21 999 1 1215k 1 15601 0 0 962 0 0:21:34 0:00:16 0:21:18 999
Faylı yalnız müəyyən vaxtdan əvvəl/sonra dəyişdirilmişsə yükləyinCurl-da -z seçimindən istifadə edərək müəyyən vaxtdan sonra dəyişmiş faylları əldə edə bilərsiniz. Bu həm FTP, həm də HTTP üçün işləyəcək.
Yuxarıdakı əmr yy.html faylını yalnız verilən tarix və vaxtdan daha yaxın vaxtlarda dəyişdirilmişsə yükləyəcək.
Göstərilən tarix və vaxtdan əvvəl dəyişdirilmişsə, yuxarıdakı əmr file.html faylını yükləyəcək. Tarix ifadələri üçün dəstəklənən müxtəlif sintaksislər haqqında ətraflı öyrənmək üçün 'man curl_getdate' yazın.
cURL-də HTTP autentifikasiyası keçir
Bəzən vebsaytlar məzmununa baxmaq üçün istifadəçi adı və parol tələb edir. -u seçimindən istifadə edərək, aşağıda göstərildiyi kimi bu etimadnamələri cURL-dən veb serverə ötürə bilərsiniz.
$ curl -u istifadəçi adı:parol URL
Qeyd: Varsayılan olaraq, curl HTTP əsas autentifikasiyasından istifadə edir. Biz –ntlm | istifadə edərək digər autentifikasiya üsullarını təyin edə bilərik - həzm etmək.
cURL həmçinin FTP serverlərindən faylları yükləmək üçün də istifadə edilə bilər. Göstərilən FTP yolu bir kataloqdursa, standart olaraq oradakı faylların siyahısı göstərilir.
$ curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/xss.php
Yuxarıdakı əmr xss.php faylını ftp serverindən endirəcək və onu yerli kataloqda saxlayacaq.
$ curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/
Burada URL bir kataloqa istinad edir. Buna görə də, cURL verilmiş URL-də faylları və qovluqları sadalayacaqdır.
CURL URL-lərdə göstərilən diapazonları dəstəkləyir. Aralıq verildikdə, həmin diapazonda olan müvafiq fayllar yüklənəcək. Bu, FTP güzgü saytlarından paketləri endirərkən faydalı olacaq.
$ curl ftp://ftp.uk.debian.org/debian/pool/main//
Yuxarıdakı əmr terminalda a-z diapazonunda olan bütün paketləri sadalayacaq.
Faylların FTP serverinə yüklənməsi
Curl, -T seçimi ilə FTP serverinə yükləmək üçün də istifadə edilə bilər.
$ curl -u ftpuser:ftppass -T myfile.txt ftp://ftp.testserver.com
Yuxarıdakı əmr myfile.txt adlı faylı FTP serverinə yükləyəcək. Siz həmçinin diapazonlardan istifadə edərək birdən çox fayl yükləyə bilərsiniz.
$ curl -u ftpuser:ftppass -T "(fayl1,fayl2)" ftp://ftp.testserver.com
İstəyə görə biz “.” istifadə edə bilərik. standart girişdən qəbul etmək və onu uzaq maşına ötürmək.
$ curl -u ftpuser:ftppass -T - ftp://ftp.testserver.com/myfile_1.txt
Yuxarıdakı əmr istifadəçidən standart girişdən çıxışı alacaq və məzmunu ftp serverində 'myfile_1.txt' olaraq saxlayacaq.
Siz hər bir URL üçün '-T' təyin edə bilərsiniz və hər bir ünvan-fayl cütü nəyin hara yüklənəcəyini müəyyənləşdirəcək
Artan təfərrüat və iz seçimi ilə daha çox məlumat
-v seçimindən istifadə edərək nə baş verdiyini öyrənə bilərsiniz. -v seçimi şifahi rejimi işə salır və təfərrüatları çap edəcək.
Curl -v https://www.google.co.th/?gws_rd=ssl
Yuxarıdakı əmr aşağıdakıları çıxaracaq
* URL yenidən quruldu: https://www.google.co.th/?gws_rd=ssl * Host adı DNS keşində TAPILMADI * 27.123.17.49 cəhd edilir... * www.google.co.th (27.123. 17.49) port 80 (#0) > GET / HTTP/1.1 > İstifadəçi-Agent: curl/7.38.0 > Host: www.google.co.th > Qəbul edin: */* >< HTTP/1.1 200 OK < Date: Fri, 14 Aug 2015 23:07:20 GMT < Expires: -1 < Cache-Control: private, max-age=0 < Content-Type: text/html; charset=windows-874 < P3P: CP="This is not a P3P policy! See https://support.google.com/accounts/answer/151657?hl=en for more info." * Server gws is not blacklisted < Server: gws < X-XSS-Protection: 1; mode=block < X-Frame-Options: SAMEORIGIN < Set-Cookie: PREF=ID=1111111111111111:FF=0:TM=1439593640:LM=1439593640:V=1:S=FfuoPPpKbyzTdJ6T; expires=Sun, 13-Aug-2017 23:07:20 GMT; path=/; domain=.google.co.th ... ... ...
Əgər sizə daha ətraflı məlumat lazımdırsa, o zaman -trace seçimindən istifadə edə bilərsiniz. -trace seçimi müəyyən bir fayl üçün bütün daxil olan/gidən məlumatların tam izlənməsinə imkan verəcəkdir
02/16/2006 Jeff Felling
Curl sizə İnternetdə yerləşdirilən məlumatları idarə etməyə kömək edəcək. Curl bir çoxunu avtomatlaşdırmağı asanlaşdırır
Curl İnternetdəki məlumatlarınızı idarə etməyə kömək edəcək
Bu məqalə Curl adlı pulsuz aləti əhatə edir ki, bu da sizə əmr satırından Veb səhifələri göndərməyə və qəbul etməyə imkan verir. Curl təhlil üçün Veb səhifəni çıxarmaq və ya İnternetdən təhlükəsizlik yamasının endirilməsi kimi bir çox təhlükəsizlik və inzibati tapşırıqları avtomatlaşdırmağı asanlaşdırır.
Qıvrım quraşdırılması
Curl bir çox Unix paylamalarına daxildir. Binaries və mənbələr əksər digər əməliyyat sistemləri üçün mövcuddur. Hətta açıq mənbəli PHP proqramçıları PHP skriptlərindən birbaşa Veb məzmununa təhlükəsiz daxil olmaq üçün Curl-dan istifadə edə bilərlər.
Curl Secure Sockets Layer (SSL) Veb saytları ilə işləmək üçün OpenSSL paketini tələb edir. Curl-un iki versiyası var: biri SSL, digəri isə SSL-siz. Birincisini tövsiyə edirəm, çünki SSL məlumatları etibarlı şəkildə qoruyur.
Curl-dan SSL funksionallığı ilə istifadə etməzdən əvvəl OpenSSL paketini endirməli və ayrıca quraşdırmalısınız. Windows binaries üçün OpenSSL GnuWin32 SourceForge layihə saytından endirilə bilər. Bu saytda Windows-a köçürülmüş bir çox başqa faydalı alətlər var.
Siz OpenSSL paketini endirib quraşdırmalı, sonra iki DLL faylını system32 qovluğuna kopyalamalısınız:
Kopyalayın "C:Program FilesGnuWin32 binlibeay32.dll" %windir%system32 surəti "C:Program FilesGnuWin32 binlibssl32.dll" %windir%system32
Bundan sonra Curl-u quraşdıra bilərsiniz. Windows üçün SSL-uyğun Curl ikili faylları burada tapa bilərsiniz http://curl.haxx.se/latest.cgi?curl=win32-ssl-sspi. Ən yeni versiya, curl 7.15.0, curl.exe və sənədləri ehtiva edən win32-ssl-sspi.zip-dədir.
Curl-u quraşdırdıqdan sonra əmri daxil edərək onun işlədiyinə əmin olmalısınız
Qıvrım http://isc.sans.org/infocon.txt
Ekranda rəngli söz görünsə (məsələn, yaşıl), Curl işləyir. Bu sadə nümunədə Curl SANS İnstitutunun İnternet Fırtınası Mərkəzinin veb saytından Infocon məzmununu alır. Yaşıl o deməkdir ki, İnternet normal işləyir və heç bir ciddi təhlükə aşkarlanmamışdır. Ekranda yaşıl əvəzinə sarı, narıncı və ya qırmızı sözləri görünürsə, bu məqaləni kənara qoyun və vebsayta daxil olun http://isc.sans.orgİnternetdə yüksək riskli şərtlər haqqında öyrənmək. Səhv baş verərsə, Curl-un düzgün quraşdırıldığını yoxlamaq lazımdır.
Əsasən, Curl Veb səhifəni gətirir və sonra səhifənin HTML mənbəyini konsola çıxarır. Bununla belə, kommunalın imkanları daha genişdir. Curl-də quraşdırılmış səhv yoxlaması var. Məsələn, əmr
http://noserverburada qıvrın
xəta verir Curl: (6) Host həll edilə bilmədi: noserverhere; Host tapılmadı. Səhv kodları skriptlərdə Veb səhifənin mövcudluğunu və ya Veb serverin cavab vermə qabiliyyətini yoxlamaq üçün istifadə edilə bilər. Məsələn, hər gün Veb səhifəni, xüsusən də gündəlik Veb sayt statistikasını əldə etmək üçün Curl-dan istifadə edirsinizsə, skripti səhv kodlarını axtaran mənbə kodu ilə artıra bilərsiniz. Curl xəta kodunu verirsə Curl: (7) hosta qoşula bilmədi, siz dərhal xəbərdarlıq edə və ya e-poçt göndərə bilərsiniz.
Şifrələnmiş məlumatların çıxarılması
Curl-un ən mühüm üstünlüklərindən biri onun SSL uyğunluğudur. Tələb olunan HTTPS səhifələri şəbəkə üzərindən şifrələnmiş şəkildə göndərilir və sonra Curl bərpa edilmiş mətni ekranda göstərir. Curl həmçinin sertifikatları yoxlayır - sertifikatın sona çatma tarixini, host adının sertifikatdakı host adına uyğun olub-olmamasını və kök sertifikatın etibar səviyyəsini - yoxlayır və sertifikatın səhv olub olmadığını xəbərdar edir. -cacert seçimi xüsusi sertifikat faylını təyin etməyə imkan verir. Sertifikat yoxlanışı -k seçimindən istifadə edilərək deaktiv edilir. Alternativ yanaşma -insecure variantından istifadə etməkdir.
Yalnız WWW üçün deyil
Curl-un imkanları sadəcə İnternet üzərindən fayl göndərməkdən kənara çıxır. Curl-dan istifadə edərək FTP saytının qovluqlarını tez bir zamanda sadalaya bilərsiniz:
Curl ftp://myftpsite
Saytın alt kataloqlarını görmək üçün əmri daxil edin
Curl ftp://myftpsite/subdir/
İnternetdən fayl yükləmək üçün sadəcə URL-də fayl adını göstərin. Aşağıdakı nümunə readme.txt adlı faylı birbaşa əmr satırından yükləyir və onu ekranda göstərir:
Curl ftp://ftp.microsoft.com/deskapps/games/readme.txt
FTP fayllarını daxil etmək üçün Curl skriptini hazırlamaq çox vaxt FTP əmrini interaktiv şəkildə istifadə etməkdən daha asandır.
Varsayılan olaraq, məlumat birbaşa konsola çıxarılır, lakin -o və -O seçimlərindən istifadə edərək fayla yönləndirilə bilər. Səhifəni əldə etmək və diskdə saxlamaq üçün -o seçimini qeyd etməlisiniz. -O seçimi nəticədə yaranan səhifəni yerli faylda saxlayır və Curl uzaq sənədin adını alır. URL-də fayl adı yoxdursa, bu əməliyyat uğursuz olacaq. Əgər fayl adı olmayan veb saytına sorğu göndərmək üçün Curl-dan istifadə edirsinizsə, lakin nəticəni faylda saxlamaq istəyirsinizsə, faylın adını əmr sətirində təyin edə bilərsiniz, məsələn:
İdentifikasiyası
Curl Əsas, Digest və İnteqrasiya edilmiş autentifikasiya üsullarını təmin edir. Əksər saytlarda forma əsaslı autentifikasiya səhifələrinə aşağıda göstərildiyi kimi Curl-un təqdimetmə funksiyalarından istifadə etməklə daxil olmaq olar. Bu o deməkdir ki, siz istifadəçi adı və şifrəniz kimi forma məlumatlarını öz Veb səhifəsinə məlumat daxil etməyi təklif edən uzaq Veb saytına göndərə bilərsiniz. Siz etimadnamələri yönləndirmək və ya ənənəvi olaraq FTP-də edildiyi kimi URL-yə yapışdırmaq üçün -u seçimindən istifadə edə bilərsiniz, məsələn:
Curl ftp://username: password@myhtmlsite
Curl istifadə edərək, FTP-dən götürülmüş texnikalar aşağıdakı nümunədə olduğu kimi HTTP-yə ötürülə bilər:
Curl http://username:password @myhtmlsite/default.htm
Curl həmçinin proxy server vasitəsilə Veb səhifələrə girişi təmin edir. Buna görə də, Curl Əsas, Digest və NTLM rejimlərində autentifikasiya üçün proxy serverdən istifadə etmək üçün konfiqurasiya edilə bilər.
Sənədləri oxuyun
Bir məqalədə Curl-un bütün bir çox funksiyalarını əhatə etmək çətindir, o cümlədən serverə faylları yükləmək (-T) və yalnız HTTP başlıqındakı məlumatlara baxmaq (-I) və bütün məlumatlara ətraflı rejimdə baxmaq (-V). ) və gizli çıxış ( -s). Mən burada yerləşdirilən dərslikdə Curl-un xüsusiyyətlərinə daha dərindən nəzər salmağı məsləhət görürəm http://curl.haxx.se/docs .
Curl istifadə nümunəsi
İndi biz Curl-un əsaslarını öyrəndiyimizə görə, bəzi girişlər verilmiş Veb saytından məlumatların əldə edilməsinin sadə nümunəsinə baxaq. Curl-dan istifadənin sadəliyini və asanlığını və -d parametrindən istifadə edərək məlumatların veb-sayta göndərilməsi prosedurunu nümayiş etdirən sadə Whois aləti yaradaq. Bu nümunədə Curl IP ünvanını Arin Whois Veb saytına göndərir və sonra həmin saytdan nəticələri alır. Whois IP ünvanının sahibi haqqında məlumat axtarır.
Başlamazdan əvvəl Veb saytı araşdırmaq vacibdir, çünki hər saytın mənbə kodu fərqlidir və Curl həmişə hər saytda eyni işləmir. Sayta ilkin səfər, Curl-un işləməsi üçün lazımi məlumatları toplamağa imkan verir. Bu nümunədə mən veb saytına daxil olmaq üçün brauzerdən istifadə etdim http://www.arin.net/whois/, və saytın ziyarətçilərin maraqlandıqları IP ünvanını göstərdiyi vahid məlumat giriş sahəsinin olduğunu qeyd etdi. Veb formasının bir hissəsi olan bu sahənin təfərrüatlarını əldə etməlisiniz. Bu nümunə Perl skriptindən istifadə edir formfind.pl ( http://cool.haxx.se/cvs.cgi/curl/perl/contrib/ formfind?rev=HEAD&content-type=text/vnd.viewcvs-markup). Formfind.pl skripti forma məlumatlarını faydalı çıxış nəticələrinə çevirir və HTML-də verilənlərin əl ilə axtarışını asanlaşdırır. Əlbəttə ki, Formfind-i işə salmaq üçün Perl kompüterinizdə yerləşdirilməlidir. Yaxşı Win32 Perl paketini ActiveState ActivePerl saytından sifariş etmək olar http://www.activestate.com .
Nümunəyə daha ətraflı baxaq. Əvvəlcə məlumat tələb edən formanı ehtiva edən veb saytına baxaq:
Curl -o whoisOutputFile http://www.arin.net/whois/
Bu komanda Whois səhifəsini http://www.arin.net saytından götürür və onu sayta daxil olan zaman brauzer tərəfindən göstərilən orijinal HTML mətnini ehtiva edən whoisOutputFile mətn faylında saxlayır.
Sonra forma məlumatlarını tapıb seçməlisiniz:
./formfind.pl
Formfind forma dəyişənlərini və onların mümkün dəyərlərini təmin edir. Bu nümunədə çıxış nəticələri olduqca sadədir (bax. ekran 1).
queryyinput adlı Daxiletmə forması məlumatlarına diqqət yetirin. Bu, Curl-un axtardığınız IP ünvanını göndərməli olduğu mətn sahəsidir. Xüsusi IP ünvanının əhəmiyyəti yoxdur - bu nümunədə Microsoft ünvanı istifadə edilmişdir. -d parametrindən istifadə edərək, axtarılan IP ünvanı sorğunun daxil edilməsi sahəsinə yönləndirilir:
Curl -d "queryinput= 207.46.133.140" http://ws.arin.net/cgibin/whois.pl
-d seçimi ilə Curl əmri məlumatı formada axtarır, bu halda axtarılan IP ünvanını əks etdirən sorğunun girişi. Bu halda hədəf ünvanı dəyişir; forma məlumatları whois.pl skriptini təmsil edən yeni URL-yə təqdim etməlidir. Yeni hədəf ünvanı Ekran 1-də formfind çıxışında görmək olar.
Bu misal həmçinin Whois cavabının orijinal HTML mətnini alır, lakin o, bir qrup HTML teqləri tərəfindən gizlədilir. Varsayılan olaraq, Curl status mesajı sənəd ölçüsünü, tamamlanma faizini və yönləndirmə sürətini göstərir. Çıxış bir az təmizlənə və IP ünvanına sahib olan təşkilatın adı ilə süzülə bilər. Qıvrım statusu -s seçimindən istifadə edərək deaktiv edilə bilər. Yalnız OrgName əldə etmək üçün əmr grep vasitəsilə yerinə yetirilməlidir:
Curl -s -d "queryinput= 207.46.133.140" http://ws.arin.net/cgibin/whois.pl | grep OrgName
Bu nümunədə çıxış OrgName-in Microsoft Corp olduğunu göstərir.
@echo off curl -k -s -d "queryinput= %1" http://ws.arin.net/cgibin/whois.pl | grep OrgName
Komanda Xəttindən Veb Faylların Yüklənməsi
Həqiqi praktik nümunə: IP ünvanını dəyişdirmək üçün marşrutlaşdırıcını (modemi) yenidən başlatmalısınız. Bunu etmək üçün sizə lazımdır: marşrutlaşdırıcıya daxil olun, texniki xidmət səhifəsinə keçin və "Yenidən başladın" düyməsini basın. Bu hərəkəti bir neçə dəfə yerinə yetirmək lazımdırsa, prosedur təkrarlanmalıdır. Razılaşın, bu rejimi hər dəfə əl ilə etmək istəmirsiniz. cURL bütün bunları avtomatlaşdırmağa imkan verir. Yalnız bir neçə cURL əmri ilə siz avtorizasiya əldə edə və marşrutlaşdırıcıda tapşırığı tamamlaya bilərsiniz.
- cURL əmr satırında veb saytlardan məlumat almaq üçün faydalıdır.
Bunlar. cURL-dən istifadə halları olduqca realdır, baxmayaraq ki, əksər hallarda cURL öz proqramları üçün istifadə edən proqramçılara lazımdır.
CURL bir çox protokolları və avtorizasiya üsullarını dəstəkləyir, faylları ötürə bilir, kukilərlə düzgün işləyir, SSL sertifikatlarını, etibarnamələri və s. dəstəkləyir.
PHP və komanda xəttində cURL
Biz cURL-dən iki əsas şəkildə istifadə edə bilərik: PHP skriptlərində və komanda xəttində.
Serverdə PHP-də cURL-i aktivləşdirmək üçün php.ini faylındakı sətri şərhdən çıxarmalısınız.
Extension=php_curl.dll
Və sonra serveri yenidən başladın.
Linux-da siz curl paketini quraşdırmalısınız.
Debian, Ubuntu və ya Linux Mint-də:
$ sudo apt-get install curl
Fedora, CentOS və ya RHEL-də:
$ sudo yum curl quraşdırın
PHP-də və komanda xəttində istifadə fərqini aydın görmək üçün eyni tapşırıqları iki dəfə yerinə yetirəcəyik: əvvəlcə PHP skriptində, sonra isə komanda xəttində. Çalışaq ki, çaşqınlıq olmasın.
cURL istifadə edərək məlumatların alınması
PHP-də cURL istifadə edərək məlumatların alınması
PHP-də nümunə:
Hər şey çox sadədir:
$target_url- bizi maraqlandıran saytın ünvanı. Sayt ünvanından sonra iki nöqtə qoyub port ünvanını əlavə edə bilərsiniz (port standartdan fərqlidirsə).
curl_init- yeni seansı işə salır və nümunəmizdə dəyişənə təyin edilmiş sapı qaytarır $ch.
Sonra sorğunu cURL funksiyası ilə icra edirik curl_exec, ona parametr kimi deskriptor ötürülür.
Hər şey çox məntiqlidir, lakin bu skript icra edildikdə, saytın məzmunu səhifəmizdə görünəcək. Bəs məzmunu göstərmək istəmiriksə, ancaq onu dəyişənə yazmaq istəsək (sonradan emal və ya təhlil üçün).
Skriptimizə bir az əlavə edək:
0) ( echo "Curl xətası: " . curl_error($ch); ) curl_close($ch); ?>
Bizim bir xəttimiz var curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);.
curl_setopt- variantları təyin edir. Seçimlərin tam siyahısını bu səhifədə tapa bilərsiniz:
Qonaqlardan gizlədilib
$cavab_data = curl_exec($ch);
İndi skript dəyəri $response_data dəyişəninə təyin edilir, onunla sonrakı əməliyyatlar yerinə yetirilə bilər. Məsələn, onun məzmununu göstərə bilərsiniz.
Dikişlər
Əgər (curl_errno($ch) > 0) ( echo "Qıvrılma xətası: " . curl_error($ch); )
xətaların baş verməsi halında sazlama üçün xidmət edir.
Komanda xəttində cURL istifadə edərək məlumatların alınması
Komanda xəttində sadəcə yazın
əvəzinə harada mi-al.ru- veb saytınızın ünvanı.
Nəticəni ekranda göstərməkdənsə, məlumatları dəyişənə köçürmək lazımdırsa, bunu edin:
Temp="curl mi-al.ru"
Bununla belə, bəzi məlumatlar hələ də göstərilir:
Onların göstərilməsinin qarşısını almaq üçün açarı əlavə edin -s:
Temp="curl -s mi-al.ru"
Nə yazıldığını görə bilərsiniz:
Echo $temp | az
Əsas və HTTP autentifikasiyasıDoğrulama, sadəcə olaraq, istifadəçi adı və parolun daxil edilməsidir.
Əsas autentifikasiya server əsaslı autentifikasiyadır. Bunun üçün iki fayl yaradılır: .htaccess Və .htpasswd
.htaccess faylının məzmunu bu kimi bir şeydir
AuthName "Yalnız qeydiyyatdan keçmiş istifadəçilər üçün!" AuthType Basic etibarlı istifadəçi tələb edir AuthUserFile /home/freeforum.biz/htdocs/.htpassw
.htpasswd faylının məzmunu belədir:
Mial:CRdiI.ZrZQRRc
Bunlar. giriş və parol hash.
Parolla qorunan qovluğa daxil olmağa çalışdığınız zaman brauzer belə bir şey göstərəcək:
HTTP identifikasiyası veb-saytdakı formaya giriş və parol daxil etdiyimiz haldır. Məhz bu identifikasiya poçta, forumlara və s.-ə daxil olarkən istifadə olunur.
Əsas cURL identifikasiyası (PHP)
Veb saytı var
Qonaqlardan gizlədilib
Gəlin ilkin skriptimizi sınayaq:
0) ( echo "Curl xətası: " . curl_error($ch); ) else ( echo $response_data; ) curl_close($ch); ?>
Skript heç bir səhv olmadığına inansa da, çıxışı heç bəyənmirik:
İki sətir əlavə edin:
Curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); curl_setopt($ch, CURLOPT_USERPWD, "ru-board:ru-board");
İlk sətirdə identifikasiya növünü təyin etdik - əsas. İkinci sətirdə iki nöqtə ilə ayrılmış ad və parol var (bizim vəziyyətimizdə ad və parol eynidir - ru-board). Belə çıxdı:
0) ( echo "Curl xətası: " . curl_error($ch); ) else ( echo $response_data; ) curl_close($ch); ?> Gəlin cəhd edək: 30946 Əla! Əsas cURL identifikasiyası (komanda xəttində) Eyni şeyi bir sətir ilə komanda xəttində əldə etmək olar: curl -u ru-board:ru-board http://62.113.208.29/Update_FED_DAYS/
Mən autentifikasiya növünü qeyd etməyi unutmadım, sadəcə olaraq cURL-də əsas autentifikasiya növü standartdır.
Komanda xəttində hər şey o qədər tez işlədi ki, məyusluqdan aşağıdakı proqramı yazdım. O, sayta qoşulur və ən son yeniləməni yükləyir:
Temp=`curl -s -u ru-board:ru-board http://62.113.208.29/Update_FED_DAYS/ | grep -E -o "Yeniləmə_FED_201(1).(2).(2).7z" | uniq | quyruq -n 1`; curl -o $temp -u ru-board:ru-board http://62.113.208.29/Update_FED_DAYS/$temp
Yalnız bir neçə daha çox əmrlə əlavə edə bilərsiniz:
- arxivi göstərilən qovluğa çıxarmaq;
- ConsultantPlus yeniləmələrinin işə salınması (bunlar onun üçün yeniləmələrdir);
- ən son mövcud yeniləmənin artıq yükləndiyini və ya yenisinin göründüyünü yoxlaya bilərsiniz;
- gündəlik yeniləmələr üçün hamısını Cron-a əlavə edin.
PHP-də HTTP cURL identifikasiyası
Bilməliyik:
- autentifikasiya məlumatlarının göndəriləcəyi ünvan
- GET və ya POST göndərmə üsulu
- daxil ol
- parol
Məlumatı göndərməyiniz lazım olan ünvan autentifikasiya formasından götürülə bilər. Misal üçün:
Bu kodu brauzerinizdə açsanız, mətn sahəsi və "OK" yazan düyməsi olan bir forma görəcəksiniz. Əgər "1905" daxil etsəniz və OK düyməsini sıxsanız, brauzer izləyəcəyi yeni URL yaradacaq. URL əvvəlki URL-in yolundan və "junk.cgi?birthyear=1905&press=OK" kimi sətirdən ibarət sətir kimi təqdim olunacaq.
Məsələn, əgər forma "www.hotmail.com/when/birth.html" ünvanında yerləşirdisə, OK düyməsini klikləməklə sizi "www.hotmail.com/when/junk.cgi?birthyear=1905&press=OK" ünvanına aparacaqsınız. " .
Əksər axtarış motorları bu şəkildə işləyir.
Curl-un GET sorğusu yaratmaq üçün formadan gözlədiyinizi daxil edin:
# curl "www.hotmail.com/when/junk.cgi?birthyear=1905&press=OK"
4.2 POST
GET metodu bütün daxil edilmiş məlumatların brauzerinizin ünvan çubuğunda görünməsinə səbəb olur. Səhifəni əlfəcin qoymağınız lazım olduqda bu yaxşı ola bilər, lakin forma sahələrinə həssas məlumatları daxil etdikdə və ya sahələrə daxil edilmiş məlumatların miqdarı çox böyük olduqda (nəticədə oxunmayan URL ilə nəticələnir) aşkar çatışmazlıqdır.
HTTP protokolu POST metodunu təmin edir. Bununla, müştəri məlumatları URL-dən ayrıca göndərir və buna görə də siz onu ünvan çubuğunda görməyəcəksiniz.
POST sorğusunu yaradan forma əvvəlkinə bənzəyir:
Curl aşağıdakı kimi eyni məlumatlarla POST sorğusu yarada bilər:
# curl -d "doğum ili=1905&press=%20OK%20" www.hotmail.com/when/junk.cgi
Bu POST sorğusu ən çox istifadə edilən metod olan "Content-Type application/x-www-form-urlencoded" istifadə edir.
Serverə göndərdiyiniz məlumatlar düzgün kodlaşdırılmalıdır, curl sizin üçün bunu etməyəcək. Məsələn, verilənlərin boşluqdan ibarət olmasını istəyirsinizsə, boşluğu %20 və s. ilə əvəz etməlisiniz. Bu məsələyə diqqət yetirilməməsi ümumi bir səhvdir, buna görə məlumatlar lazım olduğu kimi ötürülmür.
Hələ 1995-ci ildə HTTP üzərindən məlumat ötürmək üçün əlavə üsul müəyyən edilmişdir. RFC 1867-də sənədləşdirilmişdir, buna görə də bu üsul bəzən RFC1867-göndərmə adlanır.
Bu üsul əsasən fayl yükləməni daha yaxşı dəstəkləmək üçün nəzərdə tutulmuşdur. İstifadəçiyə fayl yükləmək imkanı verən forma HTML-də belə görünür:
Nəzərə alın ki, Məzmun Növü çoxhissəli/forma verilənləri olaraq təyin edilib.
curl istifadə edərək bu forma məlumat göndərmək üçün əmri daxil edin:
# curl -F upload=@localfilename -F press=OK
4.4 Gizli sahələr
HTML proqramlarında dövlət məlumatlarını ötürməyin ümumi üsulu formalarda gizli sahələrdən istifadə etməkdir. Gizli sahələr doldurulmur, onlar istifadəçi üçün görünməzdir və adi sahələrlə eyni şəkildə ötürülür.
Bir görünən sahə, bir gizli sahə və OK düyməsi olan formanın sadə nümunəsi:
Curl istifadə edərək POST sorğusu göndərmək üçün sahənin gizli olub-olmaması barədə düşünməyə ehtiyac yoxdur. Qıvrım üçün bunların hamısı eynidır:
# curl -d "doğum ili=1905&press=OK&şəxs=daniel"
4.5 POST sorğusunun necə göründüyünü öyrənin
Formanı doldurmaq və curl istifadə edərək serverə məlumat göndərmək istədiyiniz zaman, yəqin ki, POST sorğusunun brauzerdən istifadə edilən sorğu ilə eyni görünməsini istəyirsiniz.
POST sorğunuzu görməyin asan yolu HTML səhifəsini forma ilə diskdə saxlamaq, metodu GET-ə dəyişmək və "Göndər" düyməsini klikləməkdir (həmçinin məlumatların göndəriləcəyi URL-i də dəyişə bilərsiniz).
GET formalarından istifadə edərkən gözlənildiyi kimi, URL-ə əlavə edilmiş məlumatları "?" simvolları ilə ayrılmış görəcəksiniz.
5. QOYUN
Bəlkə də HTTP serverinə məlumat yükləməyin ən yaxşı yolu PUT-dan istifadə etməkdir. Yenə də bunun üçün arxa tərəfdə nə edəcəyini və HTTP PUT axınını necə qəbul edəcəyini bilən proqram (skript) tələb olunur.
Curl istifadə edərək faylı serverə göndərin:
# curl -T yükləmə faylı www.uploadhttp.com/receive.cgi
6. Doğrulama
Doğrulama - istifadəçi adı və şifrənin serverə ötürülməsi, bundan sonra o, tələb olunan sorğunu yerinə yetirmək hüququnuz olub olmadığını yoxlayır. Əsas identifikasiya (defolt olaraq curl istifadə edir) açıq mətnə əsaslanır, bu o deməkdir ki, istifadəçi adı və parol şifrələnməyəcək, ancaq Base64 alqoritmi ilə bir qədər “dumanlanacaq” və sizinlə sizin aranızda olan yolda olan təcavüzkarlara imkan verəcək. bu məlumatı tapın HTTP server.
Curl-a istifadəçi adı və paroldan istifadə etmək əmri:
# curl -u adı:parol www.secrets.com
Sayt fərqli autentifikasiya metodunun istifadəsini tələb edə bilər (serverin başlıqlarda nə yazdığına baxın), bu hallarda siz --ntlm, --digest, --negotiate və ya hətta --anyauth açarlarından istifadə edə bilərsiniz. Bəzən xarici HTTP serverlərinə giriş proxy vasitəsilə baş verir, bu, çox vaxt şirkətlərdə və firmalarda edilir. HTTP proxy-si İnternetə daxil olmaq üçün öz istifadəçi adınızı və parolunuzu tələb edə bilər. Müvafiq qıvrım açarı:
# curl -U proxy istifadəçisi:proxypassword curl.haxx.se
Proksi NTLM metodundan istifadə edərək autentifikasiya tələb edirsə, --proxy-ntlm, əgər Digest metodu, sonra --proxy-digest seçin.
-u və -U seçimlərində parol göstərməsəniz, curl sizdən interaktiv şəkildə bunu tələb edəcək.
Qeyd edək ki, curl işləyərkən başlanğıc sətri (və onunla birlikdə açarlar və parollar) tapşırıqlar siyahısında sisteminizdəki digər istifadəçilərə görünə bilər. Bunun qarşısını almağın yolları var. Bu barədə aşağıda daha ətraflı.
7. İstinadçı
HTTP sorğusu istifadəçinin bu resursa hansı URL-dən gəldiyini göstərən “referer” sahəsini ehtiva edə bilər. Bəzi proqramlar/skriptlər "referer" sahəsini yoxlayır və istifadəçi naməlum səhifədən gəlibsə sorğunu yerinə yetirmir. Bu yoxlamaq üçün axmaq bir yol olsa da, bir çox skript hələ də ondan istifadə edir. Curl ilə siz "referer" sahəsinə hər hansı bir şey qoya və bununla da istədiyinizi edə bilərsiniz.
Bu aşağıdakı kimi edilir:
# curl -e http://curl.haxx.se daniel.haxx.se
8. İstifadəçi Agenti
Bütün HTTP sorğuları istifadəçinin müştəri tətbiqini təyin edən "User-Agent" sahəsini dəstəkləyir. Bir çox veb proqramlar bu və ya digər şəkildə səhifəni göstərmək üçün bu məlumatdan istifadə edir. Veb proqramçılar görünüşü yaxşılaşdırmaq, müxtəlif javascript, vbscript skriptlərindən və s. istifadə etmək üçün müxtəlif brauzerlərin istifadəçiləri üçün səhifənin bir neçə versiyasını yaradırlar.
Bəzən siz görə bilərsiniz ki, curl brauzerinizdə gördüyünüz səhifə ilə eyni olmayan səhifəni qaytarır. Bu halda serveri bir daha aldatmaq üçün “User Agent” sahəsindən istifadə etmək məqsədəuyğundur.
Windows 2000 maşınında qıvrımı Internet Explorer kimi maskalayın:
# curl -A "Mozilla/4.0 (uyğundur; MSIE 5.01; Windows NT 5.0)"
Niyə Linux maşınında (PIII) Netscape 4.73 olmayaq:
# curl -A "Mozilla/4.73 (X11; U; Linux 2.2.15 i686)"
9. İstiqamətləndirmələr
Sorğunuza cavab verərkən, server səhifənin özü əvəzinə istədiyiniz səhifəyə keçmək üçün brauzerin hara getməli olduğu barədə göstəriş verə bilər. Brauzerə yönləndirməyi bildirən başlıq "Yer:" dir.
Varsayılan olaraq, curl "Yer:" -də göstərilən ünvana getmir, sadəcə olaraq səhifəni həmişəki kimi göstərir. Ancaq bunu belə yönləndirə bilərsiniz:
# curl -L www.sitethatredirects.com
Dərhal başqa səhifəyə yönləndirilən sayta POST sorğuları etmək üçün curl istifadə edirsinizsə, -L və -d/-F birləşməsindən təhlükəsiz istifadə edə bilərsiniz. Curl ilk səhifə üçün POST sorğusu, sonra isə növbəti səhifə üçün GET sorğusu yaradacaq.
10. Kukilər
Kukilərlə veb brauzerlər müştəri tərəfində vəziyyətə nəzarət edir. Kuki məzmunu əlavə edilmiş addır. Kukilər göndərməklə server müştəriyə növbəti dəfə kukilərin göndərilməli olduğu yolu və host adını, kukilərin istifadə müddətini və bəzi digər parametrləri bildirir.
Müştəri qəbul edilmiş kukidə göstərilən ünvanda serverə qoşulduqda, müştəri həmin kukini serverə göndərir (əgər istifadə müddəti başa çatmayıbsa).
Bir çox proqramlar və serverlər çoxlu sorğuları bir məntiqi sessiyada birləşdirmək üçün bu üsuldan istifadə edirlər. Curl-un da bu funksiyanı yerinə yetirməsi üçün brauzerlər kimi kukiləri saxlaya və göndərə bilməliyik.
Curl istifadə edərək səhifə qəbul edərkən serverə kuki göndərməyin ən sadə yolu əmr satırına müvafiq keçid əlavə etməkdir:
# curl -b "name=Daniel" www.cookiesite.com
Kukilər normal HTTP başlıqları kimi göndərilir. Bu, başlıqları qorumaqla curl-a kukiləri saxlamağa imkan verir. Curl istifadə edərək kukilərin saxlanması əmrlə həyata keçirilir:
# curl -D başlıqları_və kukilər www.cookiesite.com
(yeri gəlmişkən, kukiləri saxlamaq üçün -c keçidindən istifadə etmək daha yaxşıdır, daha çox aşağıda).
curl tam xüsusiyyətli kuki işləyicisinə malikdir, bu, serverə yenidən qoşulmaq və sonuncu dəfə saxlanılan (və ya əl ilə dəyişdirilmiş) kukilərdən istifadə etmək istədiyiniz zaman faydalıdır. Faylda saxlanılan kukilərdən istifadə etmək üçün curl-a belə zəng edin:
# curl -b www.cookiesite.com faylında saxlanılan kukilər
Curl-un "cookie mühərriki" -b keçidini təyin etdiyiniz zaman işə salınır. Yalnız curl kukiləri qəbul etmək istəyirsinizsə, mövcud olmayan faylı müəyyən etmək üçün -b istifadə edin. Məsələn, əgər siz curl-un bir səhifədən kukiləri qəbul etməsini və sonra yönləndirməyə əməl etməsini istəyirsinizsə (bəlkə də indicə qəbul etdiyi kukini vermək), siz curl-a belə zəng edə bilərsiniz:
# curl -b nada -L www.cookiesite.com
Curl Netscape və Mozilla formatında kukiləri oxuya və yaza bilər. Bu, brauzerlər və avtomatik skriptlər arasında kukiləri mübadilə etmək üçün əlverişli bir yoldur. -b keçidi verilmiş kuki-nin müəyyən edilmiş brauzerlərin kukisi olub-olmadığını avtomatik aşkarlayır və ona uyğun idarə edir və -c/--cookie-jar açarından istifadə edərək, əməliyyat başa çatdıqdan sonra curl-i yeni kuki yazmağa məcbur edə bilərsiniz:
# curl -b cookies.txt -c newcookies.txt www.cookiesite.com
11. HTTPS
HTTP kommunikasiyalarınızı qorumağın bir neçə yolu var. Bu problemi həll edən ən məşhur protokol HTTPS və ya SSL üzərindən HTTP-dir. SSL şəbəkə üzərindən göndərilən və alınan bütün məlumatları şifrələyir, məlumatınızın məxfi qalma ehtimalını artırır.
Curl pulsuz OpenSSL kitabxanasından istifadə edərək HTTPS serverlərinə sorğuları dəstəkləyir. Müraciətlər adi şəkildə baş verir:
# curl https://that.secure.server.com
11.1 Sertifikatlar
HTTPS dünyasında identifikasiya üçün istifadəçi adı və parola əlavə olaraq sertifikatlardan istifadə edirsiniz. Curl müştəri tərəfi sertifikatlarını dəstəkləyir. Bütün sertifikatlar curl ilə işləməyə başlamazdan əvvəl daxil etməli olduğunuz parol ifadəsi ilə kilidlənir. Parol ya komanda xəttində göstərilə bilər, ya da interaktiv şəkildə daxil edilə bilər. Curl-da sertifikatlar aşağıdakı kimi istifadə olunur:
# curl -E mycert.pem https://that.secure.server.com
Curl həmçinin serverin sertifikatını yerli olaraq saxlanılan sertifikatla yoxlayaraq serverin həqiqiliyini yoxlayır. Uyğunsuzluq varsa, curl əlaqə qurmaqdan imtina edəcək. Doğrulama yoxlamalarına məhəl qoymamaq üçün -k keçidindən istifadə edin.
Sertifikatlar haqqında ətraflı məlumatı http://curl.haxx.se/docs/sslcerts.html saytında tapa bilərsiniz.
12. Xüsusi sorğu başlıqları
Siz fərdi curl sorğularının elementlərini dəyişdirməli və ya əlavə etməlisiniz.
Məsələn, siz POST sorğusunu PROPFIND-ə dəyişə və məlumatları "Məzmun növü: mətn/xml" kimi göndərə bilərsiniz (normal Məzmun Növü əvəzinə):
# curl -d "
Başlığı məzmunsuz qeyd etməklə silə bilərsiniz. Məsələn, siz "Host:" başlığını silərək sorğunu "boş" edə bilərsiniz:
# curl -H "Host:" http://mysite.com
Siz həmçinin başlıqlar əlavə edə bilərsiniz. Serverinizin "Təyinat:" başlığına ehtiyacı ola bilər:
# curl -H "Təyinat: http://moo.com/nowhere" http://url.com
13. Sazlama
Tez-tez olur ki, sayt curl sorğularına brauzer sorğularından fərqli cavab verir. Bu halda, curl'ı brauzerə mümkün qədər oxşar etmək lazımdır:
- Sorğuların təfərrüatlı qeydini saxlamaq üçün --trace-ascii keçidindən istifadə edin ki, onları ətraflı şəkildə araşdırıb problemi başa düşə biləsiniz.
- Kukiləri yoxladığınızdan və lazım olduqda istifadə etdiyinizdən əmin olun (-b oxuyun və -c-ni yadda saxlayın)
- "istifadəçi-agent" sahəsində ən son populyar brauzerlərdən birini göstərin
- Brauzerin etdiyi kimi "referer" sahəsini doldurun
- POST sorğularından istifadə edirsinizsə, bütün sahələrin brauzerlə eyni qaydada göndərildiyinə əmin olun (yuxarıda 4.5-ci bəndə baxın)
Bu çətin işdə yaxşı köməkçi Mozilla/Firefox üçün LiveHTTPHeader plaginidir ki, bu da sizə bu brauzerin göndərdiyi və qəbul etdiyi bütün başlıqlara baxmaq imkanı verir (hətta HTTPS-dən istifadə edərkən).
Aşağı səviyyəli yanaşma, ethereal və ya tcpdump kimi proqramlardan istifadə edərək şəbəkədə HTTP trafikini tutmaq və sonra brauzer tərəfindən hansı başlıqların qəbul edildiyini və göndərildiyini təhlil etməkdir (HTTPS bu yanaşmanı səmərəsiz edir).
RFC 2616 HTTP protokolunu anlamaq istəyən hər kəs üçün oxunmalıdır.
RFC 2396 URL sintaksisini izah edir.
RFC 2109 kukilərin necə işlədiyini müəyyən edir.
RFC 1867 Fayl Yükləmə Yazısı formatını müəyyən edir.
http://openssl.planetmirror.com - OpenSSL layihəsinin ana səhifəsi
http://curl.haxx.se - cURL layihəsinin ana səhifəsi
Veb tərtibatçısının həyatı çətinliklərin kölgəsində qalır. Bu çətinliklərin mənbəyi bilinməyəndə xüsusilə xoşagəlməzdir. Bu, sorğunun göndərilməsi, cavab və ya üçüncü tərəf kitabxanası ilə bağlı problemdir, yoxsa xarici API səhvidir? Həyatımızı asanlaşdıra biləcək bir çox müxtəlif gadget var. Budur, mənim şəxsən əvəzolunmaz hesab etdiyim bəzi əmr xətti alətləri.
cURL
cURL, wget-ə bənzər müxtəlif protokollar üzərindən məlumat ötürmək üçün proqramdır. Əsas fərq ondadır ki, standart olaraq wget faylda saxlayır, cURL isə əmr satırına çıxış edir. Bu, veb-sayt məzmununa baxmağı çox asanlaşdırır. Məsələn, cari xarici IP-ni necə tez əldə etmək olar:
$ curl ifconfig.me 93.96.141.93
Seçimlər -i(başlıqları göstərin) və -İ(yalnız başlıqları göstərin) cURL-ni HTTP cavablarını sazlamaq və serverin sizə tam olaraq nə göndərdiyini təhlil etmək üçün əla alətə çevirir:
$ curl -I habrahabr.ru HTTP/1.1 200 OK Server: nginx Tarix: Cümə axşamı, 18 Avqust 2011 14:15:36 GMT Məzmun növü: mətn/html; charset=utf-8 Qoşulma: diri-diri saxla: canlı saxla: vaxt aşımı=25
Parametr -L Həm də faydalıdır, cURL-ni yönləndirmələri avtomatik izləməyə məcbur edir. cURL HTTP autentifikasiyasını, kukiləri, HTTP proksiləri vasitəsilə tunelləşdirməni, başlıqlarda əl parametrlərini və daha çoxunu dəstəkləyir.
Mühasirə
Siege yük testi vasitəsidir. Üstəlik, rahat bir seçim var -g, çox oxşardır curl –iL, lakin əlavə olaraq sizə http sorğu başlıqlarını da göstərir. google.com-dan bir nümunə (bəzi başlıqlar qısalıq üçün silinib):
$ siege -g www.google.com GET / HTTP/1.1 Host: www.google.com İstifadəçi-Agent: JoeDog/1.00 (X11; I; Siege 2.70) Əlaqə: HTTP/1.1 302 Tapılan Yer: http:// www.google.co.uk/ Məzmun Növü: mətn/html; charset=UTF-8 Server: gws Məzmun Uzunluğu: 221 Əlaqə: GET-i bağlayın / HTTP/1.1 Host: www.google.co.uk İstifadəçi-Agent: JoeDog/1.00 (X11; I; Siege 2.70) Əlaqə: HTTP/ 1.1 200 OK Məzmun növü: mətn/html; charset=ISO-8859-1 X-XSS-Mühafizə: 1; mode=block Əlaqə: bağlayın
Ancaq Siege həqiqətən yük testi üçün əladır. Apache benchmark kimi ab, o, sayta çoxlu paralel sorğular göndərə və onun trafiki necə idarə etdiyini görə bilər. Aşağıdakı nümunə Google-u 30 saniyə ərzində 20 sorğu ilə necə sınaqdan keçirməyimizi və nəticəni çap etməyimizi göstərir:
$ siege -c20 www.google.co.uk -b -t30s ... Server mühasirəsinin qaldırılması... tamamlandı. Əməliyyatlar: 1400 xit Mövcudluq: 100.00 % Keçən vaxt: 29.22 san. Məlumat ötürüldü: 13.32 MB Cavab müddəti: 0.41 saniyə Əməliyyat sürəti: 47.91 trans/san Ötürmə qabiliyyəti: 0.46 MB/san Uzunmüddətli əməliyyat: Fa.01c est əməliyyat: 4.08 Ən qısa əməliyyat: 0.08
Siege-in ən faydalı xüsusiyyətlərindən biri odur ki, o, təkcə bir ünvanla deyil, həm də fayldan URL-lərin siyahısı ilə işləyə bilir. Bu, yük testi üçün əladır, çünki siz eyni URL-i təkrar-təkrar vurmaq əvəzinə real sayt trafikini simulyasiya edə bilərsiniz. Məsələn, Apache jurnalınızdakı ünvanlardan istifadə edərək serveri yükləmək üçün Siege-dən necə istifadə etmək olar:
$ cut -d " " -f7 /var/log/apache2/access.log > urls.txt $ siege -c
Ngrep
Ciddi trafik təhlili üçün minlərlə parametr, filtr və konfiqurasiya ilə Wireshark var. Komanda xətti versiyası da var şark. Ancaq sadə tapşırıqlar üçün Wireshark-ın funksionallığını lazımsız hesab edirəm. Ona görə də güclü silaha ehtiyacım olmadıqca, . Şəbəkə paketləri ilə eyni şeyi etməyə imkan verir grep fayllarla işləyir.
Veb trafiki üçün demək olar ki, həmişə parametrdən istifadə etmək istəyəcəksiniz -V sətir formatını, eləcə də seçimi qorumaq üçün -q, uyğun olmayan paketlər haqqında lazımsız məlumatları gizlədir. GET və ya POST əmri ilə bütün paketləri kəsən bir nümunə əmri budur:
Ngrep -q -W byline "^(GET|POST) .*"
Siz paketlər üçün əlavə filtr əlavə edə bilərsiniz, məsələn, verilmiş host, IP ünvanı və ya port. Budur, “axtarış” sözünü ehtiva edən 80 nömrəli port, google.com-a və oradan gələn bütün trafik üçün filtr.
Ngrep -q -W byline "axtarış" host www.google.com və port 80