CURL - buyruq satri yordam dasturi va URL sintaksisidan foydalangan holda ma'lumotlarni uzatish uchun kutubxonadan tashkil topgan dasturiy ta'minot to'plami.
CURL ko'plab protokollarni qo'llab-quvvatlaydi, ular orasida DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, Telnet va TFTP.
Alohida faylni yuklang
Quyidagi buyruq URL-ning tarkibini oladi va uni standart chiqishda (ya'ni terminalda) namoyish etadi.
Curl https://mi-al.ru/\u003e mi-al.htm% Jami% Qabul qilingan% Xferd O'rtacha Tezlik Vaqt Vaqt Vaqt Hozirgi yuk Yuklash Jami sarflangan chap tezlik 100 14378 0 14378 0 0 5387 0 -: -: - - 0:00:02 -: -: - 5387
Faylga cURL chiqishini saqlashCurl buyrug'ining natijasini -o / -O parametrlari yordamida faylga saqlashimiz mumkin.
- -o (kichik o) natija buyruq satrida ko'rsatilgan faylda saqlanadi
- -O (Katta harf O) fayl nomi URL manzilidan olinadi va olingan ma'lumotlarni saqlash uchun ishlatiladi.
$ curl -o mygettext.html http://www.gnu.org/software/gettext/manual/gettext.html
Gettext.html sahifasi endi 'mygettext.html' nomli faylda saqlanadi. Curl -o opsiyasi bilan bajarilganda, yuklab olish jarayoni satrini quyidagicha aks ettiradi.
% Jami% Qabul qilingan% Xferd O'rtacha Tezlik Vaqt Vaqt Vaqt Hozirgi yuk Yuklash Jami sarflangan chap tezlik 66 1215k 66 805k 0 0 33060 0 0:00:37 0:00:24 0:00:13 45900 100 1215k 100 1215k 0 0 39474 0 0:00:31 0:00:31 -: -: - 68987
Curl -O (katta O) dan foydalanganda, u o'z-o'zidan tarkibni mahalliy mashinada "gettext.html" deb nomlangan faylga saqlaydi.
$ curl -O http://www.gnu.org/software/gettext/manual/gettext.html
Eslatma: Curl terminalga ma'lumotlarni yozishi kerak bo'lsa, bosilgan ma'lumotlarda chalkashlik bo'lmasligi uchun u harakat satrini o'chiradi. Natijalarni faylga uzatish uchun biz '\u003e' | '-o' | '-O' parametrlaridan foydalanishimiz mumkin.
Bir vaqtning o'zida bir nechta fayllarni olish
Buyruqlar satrida barcha URL-larni ko'rsatib, bir vaqtning o'zida bir nechta fayllarni yuklab olishimiz mumkin.
Curl -O URL1 -O URL2
Quyidagi buyruq ikkala index.html va gettext.html fayllarini yuklab olib, ularni shu kataloglarda joriy katalogda saqlaydi.
Curl -O http://www.gnu.org/software/gettext/manual/html_node/index.html -O http://www.gnu.org/software/gettext/manual/gettext.html
Yuqorida ko'rsatilgandek, bitta serverdan bir nechta faylni yuklab olganimizda, curl ulanishni qayta ishlatishga urinishini unutmang.
-L opsiyasi bilan HTTP Manzil sarlavhalarini bajaring
Odatiy bo'lib, CURL HTTP Manzil sarlavhalarini (qayta yo'naltirishlarni) ta'qib qilmaydi. So'ralgan veb-sahifa boshqa joyga ko'chirilganda, tegishli javob HTTP Manzil sarlavhalarida yuboriladi.
Masalan, kimdir o'z mamlakatidan brauzer satriga google.com-ni yozganda, ular avtomatik ravishda "google.co.xx" ga yo'naltiriladi. Bu quyida ko'rsatilgan HTTP joylashuvi sarlavhasi asosida amalga oshiriladi.
Curl https://www.google.com/?gws_rd\u003dssl
302 ko'chirildi
Hujjat bu erga ko'chib o'tdi.Yuqoridagi natijada so'ralgan hujjat "
Mehmonlardan yashiringan
.Quyidagi ko'rsatilgandek -L parametridan foydalanib, yo'naltirishlarni kuzatib boring. Endi html manba kodi yuklab olinadi
Mehmonlardan yashiringan
.Curl -L https://www.google.com/?gws_rd\u003dssl
Oldingi yuklab olishni davom ettirish-C parametridan foydalanib, biron sababga ko'ra to'xtatilgan yuklab olishni davom ettirishingiz mumkin. Bu katta hajmdagi fayllarni yuklab olish to'xtatilganda foydali bo'ladi.
Agar biz "-C -" deb aytsak, curl yuklab olishni davom ettirishni qidiradi. Shuningdek, biz "-C" ni belgilashimiz mumkin<смещение>”. Belgilangan bayt ofset manba faylining boshidan o'tkazib yuboriladi.
Curl yordamida katta yuklashni boshlang va yuklab olish o'rtasida to'xtatish uchun Ctrl-C tugmachasini bosing.
$ curl -O http://www.gnu.org/software/gettext/manual/gettext.html ############### 20,1%
Yuklab olish 20,1% da to'xtatildi. "Curl -C -" yordamida biz to'xtagan joydan yuklab olishni davom ettirishimiz mumkin. Yuklash endi 20,1% dan davom etadi.
Curl -C - -O http://www.gnu.org/software/gettext/manual/gettext.html ################ 21,1%
Ma'lumotlar tezligini cheklashMa'lumot uzatish tezligini –limit-tarif opsiyasi bilan cheklashingiz mumkin. Siz maksimal tezlikni argument sifatida o'tkazishingiz mumkin.
$ curl - chegara darajasi 1000B -O http://www.gnu.org/software/gettext/manual/gettext.html
Yuqoridagi buyruq uzatish tezligini 1000 bayt / soniya bilan cheklaydi. curl eng yuqori tezlikda ishlatishi mumkin. Ammo o'rtacha tezlik 1000 bayt / soniyani tashkil qiladi.
Quyida yuqoridagi buyruqning bajarilish satri keltirilgan. Hozirgi tezlik 1000 bayt atrofida ekanligini ko'rishingiz mumkin.
% Jami% Qabul qilingan% Xferd O'rtacha Tezlik Vaqt Vaqt Vaqt Hozirgi yuk Yuklash Jami sarflangan chap tezlik 1 1215k 1 13601 0 0 957 0 0:21:40 0:00:14 0:21:26 999 1 1215k 1 14601 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
Faylni faqat belgilangan vaqtdan oldin / keyin o'zgartirilgan bo'lsa, yuklangBurish uchun -z parametridan foydalanib, ma'lum vaqtdan so'ng o'zgargan fayllarni olishingiz mumkin. Bu FTP va HTTP uchun ishlaydi.
Yuqoridagi buyruq yy.html-ni faqat belgilangan sana va soatdan kechroq o'zgargan taqdirdagina yuklaydi.
Yuqoridagi buyruq file.html faylini belgilangan sana va soatdan oldin o'zgartirilgan bo'lsa yuklaydi. Sana iboralari uchun qo'llab-quvvatlanadigan turli sintaksislar haqida ko'proq bilish uchun "man curl_getdate" yozing.
CURL-da HTTP autentifikatsiyasidan o'tish
Ba'zan veb-saytlar tarkibini ko'rish uchun foydalanuvchi nomi va parolni talab qiladi. -U opsiyasi yordamida siz ushbu hisob ma'lumotlarini quyida ko'rsatilgandek cURL-dan veb-serverga o'tkazishingiz mumkin.
$ curl -u foydalanuvchi nomi: URL paroli
Eslatma: Odatiy ravishda curl asosiy HTTP autentifikatsiyasidan foydalanadi. -Ntlm | yordamida boshqa autentifikatsiya usullarini belgilashimiz mumkin - Eng zo'r.
cURL fayllarni FTP serverlaridan yuklab olish uchun ham ishlatilishi mumkin. Agar ko'rsatilgan FTP yo'li katalog bo'lsa, unda sukut bo'yicha undagi fayllar ro'yxati ko'rsatiladi.
$ curl -u ftpuser: ftppass -O ftp: //ftp_server/public_html/xss.php
Yuqoridagi buyruq xss.php faylini ftp serveridan yuklab olib, mahalliy katalogingizda saqlaydi.
$ curl -u ftpuser: ftppass -O ftp: // ftp_server / public_html /
Bu erda URL katalogga ishora qiladi. Shuning uchun, cURL berilgan URL manzilidagi fayllar va kataloglarni ro'yxatlaydi.
CURL URL oralig'ini qo'llab-quvvatlaydi. Agar diapazon berilsa, shu doiradagi tegishli fayllar yuklanadi. Bu FTP oyna saytlaridan paketlarni yuklab olishda foydali bo'ladi.
$ curl ftp://ftp.uk.debian.org/debian/pool/main//
Yuqoridagi buyruq terminaldagi a-z oralig'idagi barcha paketlarni sanab beradi.
Fayllarni FTP-serverga yuklash
Curl -T opsiyasi bilan FTP-serverga yuklash uchun ham ishlatilishi mumkin.
$ curl -u ftpuser: ftppass -T myfile.txt ftp://ftp.testserver.com
Yuqoridagi buyruq myfile.txt nomli faylni FTP-serverga yuklaydi. Shuningdek, diapazonlar yordamida bir vaqtning o'zida bir nechta fayllarni yuklashingiz mumkin.
$ curl -u ftpuser: ftppass -T "(file1, file2)" ftp://ftp.testserver.com
Ixtiyoriy ravishda biz "" dan foydalanishimiz mumkin. stdin-dan olish va uzoqdagi mashinaga yuborish.
$ curl -u ftpuser: ftppass -T - ftp://ftp.testserver.com/myfile_1.txt
Yuqoridagi buyruq foydalanuvchidan standart kirishdan olingan natijani oladi va tarkibini "myfile_1.txt" nomi ostida ftp-serverga saqlaydi.
Siz har bir URL uchun "-T" ni o'rnatishingiz mumkin va har bir fayl manzili juftligi nimani yuklash kerakligini aniqlaydi
Ko'proq so'zlashuv va kuzatuv opsiyasi bilan ko'proq ma'lumot
-V opsiyasi yordamida nima sodir bo'layotganini bilib olishingiz mumkin. -V varianti og'zaki rejimni yoqadi va tafsilotlarni chop etadi.
Curl -v https://www.google.co.th/?gws_rd\u003dssl
Yuqoridagi buyruq quyidagilarni beradi
* Qayta qurilgan URL manzili: https://www.google.co.th/?gws_rd\u003dssl * DNS keshidan xost nomi topilmadi * 27.123.17.49 urinib ko'ring ... * www.google.co.th (27.123.) Ga ulangan. 17.49) port 80 (# 0)\u003e GET / HTTP / 1.1\u003e User-Agent: curl / 7.38.0\u003e Xost: www.google.co.th\u003e Qabul qilish: * / *\u003e< 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 ... ... ...
Agar sizga batafsil ma'lumot kerak bo'lsa, u holda –trace opsiyasidan foydalanishingiz mumkin. –Trace opsiyasi ko'rsatilgan fayl uchun barcha kiruvchi / chiquvchi ma'lumotlarni to'liq kuzatib borish imkoniyatini beradi
CURL - buyruq satri yordam dasturi va URL sintaksisidan foydalangan holda ma'lumotlarni uzatish uchun kutubxonadan tashkil topgan dasturiy ta'minot to'plami.
CURL ko'plab protokollarni qo'llab-quvvatlaydi, ular orasida DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, Telnet va TFTP.
Alohida faylni yuklang
Quyidagi buyruq URL-ning tarkibini oladi va uni standart chiqishda (ya'ni terminalda) namoyish etadi.
Curl https://mi-al.ru/\u003e mi-al.htm% Jami% Qabul qilingan% Xferd O'rtacha Tezlik Vaqt Vaqt Vaqt Hozirgi yuk Yuklash Jami sarflangan chap tezlik 100 14378 0 14378 0 0 5387 0 -: -: - - 0:00:02 -: -: - 5387
Faylga cURL chiqishini saqlashCurl buyrug'ining natijasini -o / -O parametrlari yordamida faylga saqlashimiz mumkin.
- -o (kichik o) natija buyruq satrida ko'rsatilgan faylda saqlanadi
- -O (Katta harf O) fayl nomi URL manzilidan olinadi va olingan ma'lumotlarni saqlash uchun ishlatiladi.
$ curl -o mygettext.html http://www.gnu.org/software/gettext/manual/gettext.html
Gettext.html sahifasi endi 'mygettext.html' nomli faylda saqlanadi. Curl -o opsiyasi bilan bajarilganda, yuklab olish jarayoni satrini quyidagicha aks ettiradi.
% Jami% Qabul qilingan% Xferd O'rtacha Tezlik Vaqt Vaqt Vaqt Hozirgi yuk Yuklash Jami sarflangan chap tezlik 66 1215k 66 805k 0 0 33060 0 0:00:37 0:00:24 0:00:13 45900 100 1215k 100 1215k 0 0 39474 0 0:00:31 0:00:31 -: -: - 68987
Curl -O (katta O) dan foydalanganda, u o'z-o'zidan tarkibni mahalliy mashinada "gettext.html" deb nomlangan faylga saqlaydi.
$ curl -O http://www.gnu.org/software/gettext/manual/gettext.html
Eslatma: Curl terminalga ma'lumotlarni yozishi kerak bo'lsa, bosilgan ma'lumotlarda chalkashlik bo'lmasligi uchun u harakat satrini o'chiradi. Natijalarni faylga uzatish uchun biz '\u003e' | '-o' | '-O' parametrlaridan foydalanishimiz mumkin.
Bir vaqtning o'zida bir nechta fayllarni olish
Buyruqlar satrida barcha URL-larni ko'rsatib, bir vaqtning o'zida bir nechta fayllarni yuklab olishimiz mumkin.
Curl -O URL1 -O URL2
Quyidagi buyruq ikkala index.html va gettext.html fayllarini yuklab olib, ularni shu kataloglarda joriy katalogda saqlaydi.
Curl -O http://www.gnu.org/software/gettext/manual/html_node/index.html -O http://www.gnu.org/software/gettext/manual/gettext.html
Yuqorida ko'rsatilgandek, bitta serverdan bir nechta faylni yuklab olganimizda, curl ulanishni qayta ishlatishga urinishini unutmang.
-L opsiyasi bilan HTTP Manzil sarlavhalarini bajaring
Odatiy bo'lib, CURL HTTP Manzil sarlavhalarini (qayta yo'naltirishlarni) ta'qib qilmaydi. So'ralgan veb-sahifa boshqa joyga ko'chirilganda, tegishli javob HTTP Manzil sarlavhalarida yuboriladi.
Masalan, kimdir o'z mamlakatidan brauzer satriga google.com-ni yozganda, ular avtomatik ravishda "google.co.xx" ga yo'naltiriladi. Bu quyida ko'rsatilgan HTTP joylashuvi sarlavhasi asosida amalga oshiriladi.
Curl https://www.google.com/?gws_rd\u003dssl
302 ko'chirildi
Hujjat bu erga ko'chib o'tdi.Yuqoridagi natijada so'ralgan hujjat "
Mehmonlardan yashiringan
.Quyidagi ko'rsatilgandek -L parametridan foydalanib, yo'naltirishlarni kuzatib boring. Endi html manba kodi yuklab olinadi
Mehmonlardan yashiringan
.Curl -L https://www.google.com/?gws_rd\u003dssl
Oldingi yuklab olishni davom ettirish-C parametridan foydalanib, biron sababga ko'ra to'xtatilgan yuklab olishni davom ettirishingiz mumkin. Bu katta hajmdagi fayllarni yuklab olish to'xtatilganda foydali bo'ladi.
Agar biz "-C -" deb aytsak, curl yuklab olishni davom ettirishni qidiradi. Shuningdek, biz "-C" ni belgilashimiz mumkin<смещение>”. Belgilangan bayt ofset manba faylining boshidan o'tkazib yuboriladi.
Curl yordamida katta yuklashni boshlang va yuklab olish o'rtasida to'xtatish uchun Ctrl-C tugmachasini bosing.
$ curl -O http://www.gnu.org/software/gettext/manual/gettext.html ############### 20,1%
Yuklab olish 20,1% da to'xtatildi. "Curl -C -" yordamida biz to'xtagan joydan yuklab olishni davom ettirishimiz mumkin. Yuklash endi 20,1% dan davom etadi.
Curl -C - -O http://www.gnu.org/software/gettext/manual/gettext.html ################ 21,1%
Ma'lumotlar tezligini cheklashMa'lumot uzatish tezligini –limit-tarif opsiyasi bilan cheklashingiz mumkin. Siz maksimal tezlikni argument sifatida o'tkazishingiz mumkin.
$ curl - chegara darajasi 1000B -O http://www.gnu.org/software/gettext/manual/gettext.html
Yuqoridagi buyruq uzatish tezligini 1000 bayt / soniya bilan cheklaydi. curl eng yuqori tezlikda ishlatishi mumkin. Ammo o'rtacha tezlik 1000 bayt / soniyani tashkil qiladi.
Quyida yuqoridagi buyruqning bajarilish satri keltirilgan. Hozirgi tezlik 1000 bayt atrofida ekanligini ko'rishingiz mumkin.
% Jami% Qabul qilingan% Xferd O'rtacha Tezlik Vaqt Vaqt Vaqt Hozirgi yuk Yuklash Jami sarflangan chap tezlik 1 1215k 1 13601 0 0 957 0 0:21:40 0:00:14 0:21:26 999 1 1215k 1 14601 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
Faylni faqat belgilangan vaqtdan oldin / keyin o'zgartirilgan bo'lsa, yuklangBurish uchun -z parametridan foydalanib, ma'lum vaqtdan so'ng o'zgargan fayllarni olishingiz mumkin. Bu FTP va HTTP uchun ishlaydi.
Yuqoridagi buyruq yy.html-ni faqat belgilangan sana va soatdan kechroq o'zgargan taqdirdagina yuklaydi.
Yuqoridagi buyruq file.html faylini belgilangan sana va soatdan oldin o'zgartirilgan bo'lsa yuklaydi. Sana iboralari uchun qo'llab-quvvatlanadigan turli sintaksislar haqida ko'proq bilish uchun "man curl_getdate" yozing.
CURL-da HTTP autentifikatsiyasidan o'tish
Ba'zan veb-saytlar tarkibini ko'rish uchun foydalanuvchi nomi va parolni talab qiladi. -U opsiyasi yordamida siz ushbu hisob ma'lumotlarini quyida ko'rsatilgandek cURL-dan veb-serverga o'tkazishingiz mumkin.
$ curl -u foydalanuvchi nomi: URL paroli
Eslatma: Odatiy ravishda curl asosiy HTTP autentifikatsiyasidan foydalanadi. -Ntlm | yordamida boshqa autentifikatsiya usullarini belgilashimiz mumkin - Eng zo'r.
cURL fayllarni FTP serverlaridan yuklab olish uchun ham ishlatilishi mumkin. Agar ko'rsatilgan FTP yo'li katalog bo'lsa, unda sukut bo'yicha undagi fayllar ro'yxati ko'rsatiladi.
$ curl -u ftpuser: ftppass -O ftp: //ftp_server/public_html/xss.php
Yuqoridagi buyruq xss.php faylini ftp serveridan yuklab olib, mahalliy katalogingizda saqlaydi.
$ curl -u ftpuser: ftppass -O ftp: // ftp_server / public_html /
Bu erda URL katalogga ishora qiladi. Shuning uchun, cURL berilgan URL manzilidagi fayllar va kataloglarni ro'yxatlaydi.
CURL URL oralig'ini qo'llab-quvvatlaydi. Agar diapazon berilsa, shu doiradagi tegishli fayllar yuklanadi. Bu FTP oyna saytlaridan paketlarni yuklab olishda foydali bo'ladi.
$ curl ftp://ftp.uk.debian.org/debian/pool/main//
Yuqoridagi buyruq terminaldagi a-z oralig'idagi barcha paketlarni sanab beradi.
Fayllarni FTP-serverga yuklash
Curl -T opsiyasi bilan FTP-serverga yuklash uchun ham ishlatilishi mumkin.
$ curl -u ftpuser: ftppass -T myfile.txt ftp://ftp.testserver.com
Yuqoridagi buyruq myfile.txt nomli faylni FTP-serverga yuklaydi. Shuningdek, diapazonlar yordamida bir vaqtning o'zida bir nechta fayllarni yuklashingiz mumkin.
$ curl -u ftpuser: ftppass -T "(file1, file2)" ftp://ftp.testserver.com
Ixtiyoriy ravishda biz "" dan foydalanishimiz mumkin. stdin-dan olish va uzoqdagi mashinaga yuborish.
$ curl -u ftpuser: ftppass -T - ftp://ftp.testserver.com/myfile_1.txt
Yuqoridagi buyruq foydalanuvchidan standart kirishdan olingan natijani oladi va tarkibini "myfile_1.txt" nomi ostida ftp-serverga saqlaydi.
Siz har bir URL uchun "-T" ni o'rnatishingiz mumkin va har bir fayl manzili juftligi nimani yuklash kerakligini aniqlaydi
Ko'proq so'zlashuv va kuzatuv opsiyasi bilan ko'proq ma'lumot
-V opsiyasi yordamida nima sodir bo'layotganini bilib olishingiz mumkin. -V varianti og'zaki rejimni yoqadi va tafsilotlarni chop etadi.
Curl -v https://www.google.co.th/?gws_rd\u003dssl
Yuqoridagi buyruq quyidagilarni beradi
* Qayta qurilgan URL manzili: https://www.google.co.th/?gws_rd\u003dssl * DNS keshidan xost nomi topilmadi * 27.123.17.49 urinib ko'ring ... * www.google.co.th (27.123.) Ga ulangan. 17.49) port 80 (# 0)\u003e GET / HTTP / 1.1\u003e User-Agent: curl / 7.38.0\u003e Xost: www.google.co.th\u003e Qabul qilish: * / *\u003e< 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 ... ... ...
Agar sizga batafsil ma'lumot kerak bo'lsa, u holda –trace opsiyasidan foydalanishingiz mumkin. –Trace opsiyasi ko'rsatilgan fayl uchun barcha kiruvchi / chiquvchi ma'lumotlarni to'liq kuzatib borish imkoniyatini beradi
Men PHP dasturlash tili haqida bir oz gaplashishni va xususan kengaytma mavzusiga to'xtalishni taklif qilaman JURL, ya'ni PHP skriptining o'zida turli xil protokollardan foydalangan holda turli xil serverlar bilan o'zaro aloqada bo'lish qobiliyati.
Curl-ga o'tishdan oldin, biz PHP tilida, masalan, PHP-da Excel-ga yuklash yoki PHP-da autentifikatsiya qilish mumkinligi haqida materiallarda to'xtalib o'tganligimizni eslatib qo'ymoqchiman va endi PHP-ga so'rov yuborish imkoniyati to'g'risida gaplashamiz.
CURL nima?
JURL PHP funktsiyalarining kutubxonasi, bu PHP skriptidan HTTP kabi so'rovlarni yuborish uchun ishlatilishi mumkin. CURL HTTP, HTTPS, FTP va boshqalar kabi protokollarni qo'llab-quvvatlaydi. GET, POST, PUT usullari yordamida HTTP so'rovlarini yuborishingiz mumkin.
Masofaviy skriptni chaqirish va natijani olish yoki shunchaki chaqirilgan sahifaning HTML kodini saqlash kerak bo'lgan hollarda CURL foydali bo'lishi mumkin, umuman, har kim o'z dasturini topishi mumkin, ammo asosiysi shundaki, buyruq faylini bajarish paytida siz so'rov yuborishingiz mumkin.
PHP-da CURL kutubxonasini ulash
CURL kutubxonasidan foydalanish uchun uni mos ravishda ulash lozim.
Eslatma! Masalan, biz Windows 7 da PHP 5.4.39 dan foydalanamiz va veb-server sifatida Apache 2.2.22 dan foydalanamiz.
Birinchi narsa - kutubxonalarni nusxalash ssleay32.dll, libeay32.dll, libssh2.dll ular PHP katalogida, Windows tizim katalogida joylashgan, ya'ni C: \\ Windows \\ System32.
Keyin php_curl.dll kutubxonasini php.ini-ga ulang, ya'ni. quyidagi qatorga izoh bermang
Kutubxona ulanmagan
kengaytma \u003d php_curl.dllKutubxona ulangan
Kengaytma \u003d php_curl.dll
Mana, Apache-ni qayta ishga tushiring, phpinfo () funktsiyasini chaqiring va ulanish muvaffaqiyatli bo'lsa, sizda jingalak qism bo'lishi kerak
Agar u erda yo'q bo'lsa, demak, bu kutubxonaning yuklamaganligini anglatadigan bitta narsani anglatadi, buning eng keng tarqalgan sababi yuqoridagi DLL-larning Windows tizim katalogiga ko'chirilmaganligi edi.
CURL misoli - uzoq sahifani ko'rsatishni so'rash
Ushbu misolda biz shunchaki GET usulidan foydalangan holda HTTP protokoli yordamida uzoqdagi sahifani talab qilamiz va uning tarkibini ekranda namoyish qilamiz.
Bizda 2 ta PHP fayli test_curl.php va test.php mavjud, bu erda test_curl.php - bu biz foydalanadigan skript va test.php - biz chaqiradigan masofaviy skript. Kodni batafsil sharhladim.
Test_curl.php kodi
Test.php kodi
Sarlavha 1Н1>"; break; 2-holat: echo"<Н2>2-sarlavhaН2>"; break; 3 holat: echo"<Н3>3-sarlavhaН3>"; break;))?\u003e
Natijada, agar siz test_curl.php-ni ishlatsangiz, ekranda "1-sarlavha" yozuvini ko'rasiz, siz id parametrlarini o'tkazishda tajriba qilishingiz mumkin ( bu holda 2 yoki 3).
CURL misoli - masofaviy skriptni chaqirish va natijani olish
Keling, keyinroq ishlov berish uchun skriptni chaqirishga va natijani olishga harakat qilaylik, masalan, POST usulidan foydalanamiz. Fayl nomlarini bir xil qoldiring.
Test_curl.php kodi
Test.php kodi
Va agar biz test_curl.php-ni ishlatsak, u holda ekranda 111 ko'rsatiladi, ya'ni. 1.11 masofaviy skriptga qo'ng'iroqning natijasi 100 ga ko'paytirildi.
Endi funktsiyalar va ularga tegishli konstantalar haqida to'xtalamiz.
Tez-tez ishlatiladigan CURL funktsiyalari va doimiylari
- curl_init - sessiyani boshlaydi;
- curl_close - sessiyani tugatish;
- curl_exec - so'rovni bajaradi;
- curl_errno - Xato kodini qaytaradi;
- curl_setopt - Seans uchun parametrni o'rnatadi, masalan:
- CURLOPT_HEADER - qiymat 1 sarlavhalarni qaytarish kerakligini anglatadi;
- CURLOPT_INFILESIZE - kutilayotgan fayl hajmini aniqlash uchun parametr;
- CURLOPT_VERBOSE - 1 qiymati CURL tomonidan bajarilgan barcha operatsiyalar to'g'risida batafsil xabarlarni chop etishini anglatadi;
- CURLOPT_NOPROGRESS - operatsiyani bajarish ko'rsatkichini o'chirib qo'ying, qiymati 1;
- CURLOPT_NOBODY - agar sizga hujjat kerak bo'lmasa, lekin faqat sarlavhalar kerak bo'lsa, unda qiymatni 1 ga qo'ying;
- CURLOPT_UPLOAD - faylni serverga yuklash;
- CURLOPT_POST - POST usuli yordamida so'rovni bajarish;
- CURLOPT_FTPLISTONLY - FTP server katalogidagi fayllar ro'yxatini olish, qiymati 1;
- CURLOPT_PUT - so'rovni PUT usuli yordamida bajarish, qiymati 1;
- CURLOPT_RETURNTRANSFER - natijani brauzerga chiqmasdan qaytarish, qiymati 1;
- CURLOPT_TIMEOUT bajarilishning soniya bo'yicha maksimal vaqti;
- CURLOPT_URL - aloqa uchun manzilni ko'rsatish;
- CURLOPT_USERPWD - foydalanuvchi nomi va parol bilan quyidagi qatorda satr :;
- CURLOPT_POSTFIELDS - POST so'rovi uchun ma'lumotlar;
- CURLOPT_REFERER - "Referer:" HTTP sarlavhasi qiymatini o'rnatadi;
- CURLOPT_USERAGENT - "User-Agent:" HTTP sarlavhasi qiymatini o'rnatadi;
- CURLOPT_COOKIE - HTTP so'rovi bilan yuboriladigan "Cookie:" sarlavhasining mazmuni;
- CURLOPT_SSLCERT- PEM formatidagi sertifikat bilan fayl nomi;
- CURLOPT_SSL_VERIFYPEER - masofaviy server sertifikatini tekshirishni o'chirish uchun 0 qiymati (standart 1);
- CURLOPT_SSLCERTPASSWD - sertifikat fayli uchun parol.
- curl_getinfo - Amaliyot haqida ma'lumotni qaytaradi, ikkinchi parametr aynan nimani ko'rsatish kerakligini ko'rsatish uchun doimiy bo'lishi mumkin, masalan:
- CURLINFO_EFFECTIVE_URL Oxirgi ishlatilgan URL;
- CURLINFO_HTTP_CODE Oxirgi qabul qilingan HTTP kodi;
- CURLINFO_FILETIME - yuklangan hujjatning o'zgartirish sanasi;
- CURLINFO_TOTAL_TIME - ishlash vaqti sekundlarda;
- CURLINFO_NAMELOOKUP_TIME - server nomini echish vaqti sekundlarda;
- CURLINFO_CONNECT_TIME - ulanishni o'rnatish uchun vaqt, soniyalarda;
- CURLINFO_PRETRANSFER_TIME - operatsiya boshlanishidan ma'lumotlarni uzatishga tayyor bo'lgunga qadar o'tgan vaqt, soniyalar ichida;
- CURLINFO_STARTTRANSFER_TIME - operatsiya boshlangandan birinchi ma'lumotlar bayti o'tkazilgan paytgacha o'tgan vaqt, soniyalar ichida;
- CURLINFO_REDIRECT_TIME - qayta yo'naltirishga sarflangan vaqt, soniyalar ichida;
- CURLINFO_SIZE_UPLOAD - yuklashda bayt soni;
- CURLINFO_SIZE_DOWNLOAD - yuklashda baytlar soni;
- CURLINFO_SPEED_DOWNLOAD - o'rtacha yuklab olish tezligi;
- CURLINFO_SPEED_UPLOAD - o'rtacha yuklab olish tezligi;
- CURLINFO_HEADER_SIZE - qabul qilingan barcha sarlavhalarning umumiy hajmi;
- CURLINFO_REQUEST_SIZE - barcha yuborilgan so'rovlarning umumiy hajmi;
- CURLINFO_SSL_VERIFYRESULT - CURLOPT_SSL_VERIFYPEER parametrini o'rnatish orqali so'ralgan SSL sertifikatini tekshirish natijasi;
- CURLINFO_CONTENT_LENGTH_DOWNLOAD - yuklangan hujjatning hajmi, Content-Length sarlavhasidan o'qiladi;
- CURLINFO_CONTENT_LENGTH_UPLOAD - yuklangan ma'lumotlar hajmi;
- CURLINFO_CONTENT_TYPE - olingan kontent tipidagi sarlavha yoki ushbu sarlavha olinmagan holatda NULL.
PHP-ning rasmiy veb-saytidan CURL funktsiyalari va ularga tegishli konstantalar haqida ko'proq ma'lumot olishingiz mumkin -
Veb-dasturchining hayoti murakkablik bilan qoplanadi. Ushbu asoratlarning manbai noma'lum bo'lganida, ayniqsa, asabiylashadi. So'rov yuborishda, javob berishda yoki uchinchi tomon kutubxonasida muammo bormi yoki tashqi API buggymi? Bizning hayotimizni engillashtiradigan turli xil vositalar mavjud. Shaxsan men bebaho deb biladigan ba'zi buyruq satrlari vositalari.
jURL
cURL - bu wget kabi har xil protokollar orqali ma'lumotlarni uzatish dasturi. Asosiy farq shundaki, sukut bo'yicha wget faylga saqlaydi va buyruq satriga cURL natijalarini chiqaradi. Bu veb-sayt tarkibini ko'rishni juda osonlashtiradi. Masalan, joriy tashqi IP-ni tezda qanday olish mumkin:
$ curl ifconfig.me 93.96.141.93
Tanlovlar -i (sarlavhalarni ko'rsatish) va Men (faqat sarlavhalarni ko'rsatish) cURL-ni HTTP javoblarini disk raskadrovka qilish va server sizga nima yuborayotganini tahlil qilish uchun ajoyib vosita qiladi:
$ curl -I habrahabr.ru HTTP / 1.1 200 OK Server: nginx Sana: Psh, 18.08.2011 14:15:36 GMT Content-Type: text / html; charset \u003d utf-8 Ulanish: tirik tuting Keep-tirik: vaqt tugashi \u003d 25
Parametr -L foydali bo'lsa ham, bu yo'naltirishlarni avtomatik ravishda kuzatib boradi. cURL HTTP autentifikatsiyasini, cookies fayllarini, HTTP proksi-server orqali tunnelni, qo'lda sarlavha sozlamalarini va boshqa ko'p narsalarni qo'llab-quvvatlaydi.
Qamal
Qamal yukni sinovdan o'tkazish vositasidir. Bundan tashqari, bu qulay variantga ega -gbu juda o'xshash jingalak - iLbalki sizga http so'rovining sarlavhalarini ham ko'rsatadi. Bu erda google.com saytidan bir misol (ba'zi sarlavhalar qisqartirilganligi uchun olib tashlangan):
$ siege -g www.google.com Get / HTTP / 1.1 Xost: www.google.com Foydalanuvchi-Agent: JoeDog / 1.00 (X11; I; Siege 2.70) Ulanish: HTTP / 1.1 ni yoping 302 Topilgan joy: http: // www.google.co.uk/ Tarkib turi: text / html; charset \u003d UTF-8 Server: gws Tarkib uzunligi: 221 Ulanish: yoping GET / HTTP / 1.1 Xost: www.google.co.uk Foydalanuvchi-agent: JoeDog / 1.00 (X11; I; Siege 2.70) Ulanish: HTTP-ni yopish / 1.1 200 OK Tarkib turi: text / html; charset \u003d ISO-8859-1 X-XSS-Protection: 1; rejim \u003d blok Ulanish: yopish
Ammo qamal uchun eng zo'r narsa yuklarni sinovdan o'tkazishdir. Apache ko'rsatkichi kabi ab, u saytga bir vaqtning o'zida ko'plab so'rovlarni yuborishi va trafikni qanday boshqarishini ko'rishi mumkin. Quyidagi misol Google-ni 30 soniya davomida 20 ta so'rov bilan qanday sinovdan o'tkazganimizni ko'rsatadi, undan so'ng natija ko'rsatiladi:
$ siege -c20 www.google.co.uk -b -t30s ... Server qamalini ko'tarish ... bajarildi. Tranzaksiyalar: 1400 xit Mavjudligi: 100.00% O'tgan vaqt: 29.22 soniya O'tkazilgan ma'lumotlar: 13.32 MB Javob berish vaqti: 0.41 sek. Tranzaksiya tezligi: 47.91 trans / sek O'tkazish: 0.46 MB / sek Muvofiqlik: 19.53 Muvaffaqiyatli operatsiyalar: 1400 Xatoliklar: 0 Eng uzun operatsiya: 4.08 Eng qisqa operatsiya: 0.08
Siege-ning eng foydali xususiyatlaridan biri shundaki, u nafaqat bitta manzil bilan, balki fayldagi URL-lar ro'yxati bilan ham ishlashi mumkin. Bu yuklarni sinash uchun juda yaxshi, chunki siz bir xil URL manzilini qayta-qayta urishdan ko'ra, saytingizdagi haqiqiy trafikni simulyatsiya qilishingiz mumkin. Masalan, Apache jurnalingizdagi manzillardan foydalangan holda serverni yuklash uchun Siege-dan qanday foydalanish kerak:
$ cut -d "" -f7 /var/log/apache2/access.log\u003e urls.txt $ siege -c
Ngrep
Trafikni jiddiy tahlil qilish uchun minglab sozlamalar, filtrlar va konfiguratsiyalarga ega Wireshark mavjud. Buyruq satrining versiyasi ham mavjud tshark... Ammo oddiy vazifalar uchun men Wireshark funksiyasini ortiqcha deb hisoblayman. Menga kuchli qurol kerak emas ekan, men foydalanaman. Bu sizga xuddi shu narsani tarmoq paketlari bilan bajarishga imkon beradi grep fayllar bilan ishlaydi.
Veb-trafik uchun deyarli har doim parametrdan foydalanishni xohlaysiz -Wqatorni formatlashni va variantni saqlab qolish uchun -q, bu yaroqsiz paketlar haqida ortiqcha ma'lumotlarni yashiradi. GET yoki POST buyrug'i bilan barcha paketlarni ushlab turuvchi buyruqning misoli:
Ngrep -q -W "^ (GET | POST). *" Qatori.
Siz paketlar uchun qo'shimcha filtr qo'shishingiz mumkin, masalan, berilgan xost, IP-manzil yoki port orqali. Bu erda "qidirish" so'zini o'z ichiga olgan port 80, google.com ga kiruvchi va chiquvchi barcha trafik uchun filtr mavjud.
Ngrep -q -W byline liniyasi "qidirish" www.google.com va port 80
Haqiqiy amaliy misol: IP-manzilni o'zgartirish uchun yo'riqchini (modem) qayta yoqishingiz kerak. Buning uchun sizga kerak: yo'riqchiga kiring, parvarishlash sahifasiga o'ting va "Qayta boshlash" tugmasini bosing. Agar ushbu harakatni bir necha marta bajarish kerak bo'lsa, protsedurani takrorlash kerak. Qabul qiling, siz ushbu tartibni har safar qo'lda qilishni xohlamaysiz. cURL bularning barchasini avtomatlashtirishga imkon beradi. Faqat bir nechta cURL buyruqlari bilan siz avtorizatsiya va yo'riqnoma ustida vazifalarni bajarishga erishishingiz mumkin.
- cURL buyruq satridagi veb-saytlardan ma'lumotlarni olish uchun qulay.
O'sha. CURL-dan foydalanish holatlari juda haqiqiydir, ammo aksariyat hollarda cURL uni o'z dasturlari uchun ishlatadigan dasturchilarga kerak.
CURL ko'plab protokollarni va avtorizatsiya usullarini qo'llab-quvvatlaydi, fayllarni uzata oladi, cookie fayllari bilan to'g'ri ishlaydi, SSL sertifikatlari, proksi-serverlarini va boshqa ko'p narsalarni qo'llab-quvvatlaydi.
pHP va buyruq satrida cURL
Biz cURL-ni ikkita asosiy usulda ishlatishimiz mumkin: PHP-skriptlarida va buyruq satrida.
Serverda PHP-da cURL-ni yoqish uchun php.ini faylidagi satrni o'chirib tashlashingiz kerak
Kengaytma \u003d php_curl.dll
Va keyin serverni qayta yoqing.
Linuxda siz curl paketini o'rnatishingiz kerak.
Debian, Ubuntu yoki Linux Mint-da:
$ sudo apt-get install curl
Fedora, CentOS yoki RHEL-da:
$ sudo yum install curl
PHP-da va buyruq satrida foydalanishdagi farqni aniq ko'rish uchun biz bir xil vazifalarni ikki marta bajaramiz: avval PHP skriptida, so'ngra buyruq satrida. Biz chalg'itmaslikka harakat qilamiz.
Ma'lumotlarni cURL bilan olish
PHP-da cURL yordamida ma'lumot olish
PHP misoli:
Hammasi juda oddiy:
$ target_url - bizni qiziqtirgan sayt manzili. Sayt manzilidan keyin siz ikkita nuqta qo'yishingiz va port manzilini qo'shishingiz mumkin (agar port standartnikidan farq qiladigan bo'lsa).
jasur_init - yangi seansni ishga tushiradi va bizning misolimizda o'zgaruvchiga tayinlangan tavsiflovchini qaytaradi $ ch.
Keyin funktsiya bilan cURL so'rovini bajaramiz curl_exec, unga parametr sifatida tavsiflovchi uzatiladi.
Hammasi juda mantiqiy, ammo ushbu skript amalga oshirilganda bizning saytimizda sayt tarkibi ko'rsatiladi. Agar biz tarkibni namoyish qilishni xohlamasak, lekin uni o'zgaruvchiga yozishni xohlasak (keyingi ishlov berish yoki tahlil qilish uchun).
Stsenariyni biroz qo'shaylik:
0) (echo "Curl error:". Curl_error ($ ch);) curl_close ($ ch); ?\u003e
Bizda chiziq bor curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, 1);.
curl_setopt - variantlarni o'rnatadi. Variantlarning to'liq ro'yxatini ushbu sahifada topishingiz mumkin:
Mehmonlardan yashiringan
$ response_data \u003d curl_exec ($ ch);
Endi ssenariyning qiymati $ response_data o'zgaruvchisiga beriladi, bu bilan keyingi operatsiyalarni bajarish mumkin. Masalan, uning tarkibini namoyish qilishingiz mumkin.
Tikish
If (curl_errno ($ ch)\u003e 0) (echo "Curl error:". Curl_error ($ ch);)
xatolar bo'lsa, disk raskadrovka uchun xizmat qiladi.
Buyruqning satrida cURL bilan ma'lumotlarni olish
Buyruqning satriga yozing
qaerda o'rniga mi-al.ru - saytingiz manzili.
Agar siz ma'lumotni o'zgaruvchiga nusxalashingiz kerak va natijani ekranda ko'rsatmasangiz, biz buni qilamiz:
Temp \u003d "curl mi-al.ru"
Bunday holda, ba'zi ma'lumotlar hali ham ko'rsatiladi:
Ularning ko'rinishini oldini olish uchun kalitni qo'shing -s:
Temp \u003d "curl -s mi-al.ru"
Siz nima yozilganini ko'rishingiz mumkin:
Echo $ temp | Kamroq
Asosiy autentifikatsiya va HTTP autentifikatsiyasiAutentifikatsiya, oddiy so'zlar bilan aytganda, foydalanuvchi nomi va parolni kiritmoqda.
Asosiy autentifikatsiya - bu server tomonidagi autentifikatsiya. Buning uchun ikkita fayl yaratiladi: .htaccess va .htpasswd
Htaccess fayllari tarkibiga o'xshash narsa
AuthName "Faqat ro'yxatdan o'tgan foydalanuvchilar uchun!" AuthType Basic uchun haqiqiy foydalanuvchi AuthUserFile /home/freeforum.biz/htdocs/.htpassw kerak
Htpasswd fayli quyidagicha:
Mial: CRdiI.ZrZQRRc
O'sha. kirish va parolni xashlash.
Parol bilan himoyalangan papkaga kirishga harakat qilsangiz, brauzer quyidagicha ko'rsatiladi:
Saytdagi formaga foydalanuvchi nomi va parolni kiritganimizda HTTP autentifikatsiyasi. Bu pochta, forum va boshqalarni kiritishda foydalaniladigan ushbu autentifikatsiya.
CURL asosiy autentifikatsiyasi (PHP)
Veb-sayt mavjud
Mehmonlardan yashiringan
Keling, dastlabki skriptni sinab ko'raylik:
0) (echo "Curl error:". Curl_error ($ ch);) else (echo $ response_data;) curl_close ($ ch); ?\u003e
Ssenariyda hech qanday xato yo'q deb o'ylashiga qaramay, biz chiqishni umuman yoqtirmaymiz:
Ikki qator qo'shing:
Curl_setopt ($ ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); curl_setopt ($ ch, CURLOPT_USERPWD, "ru-board: ru-board");
Birinchi qatorda biz autentifikatsiya turini o'rnatdik - asosiy. Ikkinchi satrda ikki nuqta bilan ajratilgan ism va parol mavjud (bizda ism va parol bir xil - ru-taxta). Bu shunday bo'ldi:
0) (echo "Curl error:". Curl_error ($ ch);) else (echo $ response_data;) curl_close ($ ch); ?\u003e Sinab ko'rilmoqda: 30946 Ajoyib! Asosiy cURL autentifikatsiyasi (buyruq satrida) Xuddi shu narsani buyruq satrida bitta satr bilan bajarish mumkin: curl -u ru-board: ru-board http://62.113.208.29/Update_FED_DAYS/
Autentifikatsiya turini ko'rsatishni unutganim yo'q, shunchaki cURL-da asosiy autentifikatsiya turi standart hisoblanadi.
Buyruq satrida hamma narsa shu qadar tezkor bo'lib chiqdiki, umidsizlik tufayli men ushbu dasturni yozdim. U saytga ulanadi va eng so'nggi yangilanishni yuklab oladi:
Temp \u003d `curl -s -u ru-board: ru-taxta http://62.113.208.29/Update_FED_DAYS/ | grep -E -o "Update_FED_201 (1). (2). (2) .7z") | uniq | quyruq -n 1`; curl -o $ temp -u ru-taxta: ru-taxta http://62.113.208.29/Update_FED_DAYS/$temp
Yana bir nechta buyruqlar yordamida siz quyidagilarni qo'shishingiz mumkin:
- arxivni belgilangan katalogga ochish;
- consultantPlus yangilanishlarini boshlash (bu uning uchun yangilanishlar);
- oxirgi mavjud yangilanish allaqachon yuklab olinganmi yoki yangisi paydo bo'lganligini tekshirishingiz mumkin;
- kunlik yangilanish uchun barchasini Cron-ga qo'shing.
PHP-da HTTP cURL autentifikatsiyasi
Biz bilishimiz kerak:
- autentifikatsiya qilish uchun ma'lumotlarni yuboradigan manzil
- gET yoki POST usulini yuboring
- kirish
- parol
Ma'lumotlar yuborilishi kerak bo'lgan manzilni autentifikatsiya shaklidan olish mumkin. Masalan: