Amri za Curl. Uthibitishaji wa HTTP cURL kwenye mstari wa amri. Inakagua Muunganisho wa URL

mkunjo (1)
  • >> pinda (1) (tBЪOSH mtu: lPNBODSCH Y RTYLMBDOSH RTPZTBNNNSCH RPMSHЪPCHBFEMSHULZP HTPCHOS)
  • lMAYU pinda PVOBTHTSEO CH VBJE LMYUECHSHI UMCH.
  • NAME

    curl - kuhamisha URL

    SYNOPSISI

    pinda

    MAELEZO

    pinda ni zana ya kuhamisha data kutoka au hadi kwa seva, kwa kutumia mojawapo ya itifaki zinazotumika (HTTP, HTTPS, FTP, FTPS, TFTP, DICT, TELNET, LDAP au FILE). Amri imeundwa kufanya kazi bila mwingiliano wa mtumiaji.

    curl hutoa ujanja wa hila muhimu kama vile usaidizi wa seva mbadala, uthibitishaji wa mtumiaji, upakiaji wa ftp, chapisho la HTTP, miunganisho ya SSL (https:), vidakuzi, wasifu wa kuhamisha faili na zaidi. Kama utaona hapa chini, idadi ya vipengele itafanya kichwa chako kizunguke!

    curl inaendeshwa na libcurl kwa vipengele vyote vinavyohusiana na uhamishaji. Tazama (3) kwa maelezo.

    URL

    Sintaksia ya URL inategemea itifaki. Utapata maelezo ya kina katika RFC 3986.

    Unaweza kubainisha URL nyingi au sehemu za URL kwa kuandika seti za sehemu ndani ya mabano kama ilivyo:

    au unaweza kupata mlolongo wa safu za alphanumeric kwa kutumia kama ilivyo:

    Hakuna kuweka kiota kwa mlolongo kunatumika kwa sasa, lakini unaweza kutumia kadhaa karibu na kila mmoja:

    Unaweza kubainisha kiasi chochote cha URL kwenye mstari wa amri. Wataletwa kwa utaratibu uliowekwa.

    Kwa kuwa curl 7.15.1 unaweza pia kutaja kihesabu hatua kwa safu, ili uweze kupata kila nambari ya Nth au herufi:

    Ukibainisha URL bila itifaki:// kiambishi awali, curl itajaribu kukisia ni itifaki gani unaweza kutaka. Kisha itakuwa chaguomsingi kwa HTTP lakini jaribu itifaki zingine kulingana na viambishi awali vya jina la mwenyeji vinavyotumiwa mara nyingi. Kwa mfano, kwa majina ya mwenyeji kuanzia "ftp." curl itadhani unataka kuzungumza FTP.

    PROGRESS METER

    curl kawaida huonyesha mita ya maendeleo wakati wa operesheni, ikionyesha kiasi cha data iliyohamishwa, kasi ya uhamishaji na muda uliokadiriwa uliosalia nk.

    Walakini, kwa kuwa curl inaonyesha data kwenye terminal kwa chaguo-msingi, ikiwa utaomba curl kufanya operesheni na iko karibu kuandika data kwa terminal, hulemaza mita ya maendeleo kama sivyo ingevuruga mita ya maendeleo ya mchanganyiko wa matokeo na data ya majibu.

    Ikiwa unataka mita ya maendeleo kwa maombi ya HTTP POST au PUT, unahitaji kuelekeza majibu ya majibu kwa faili, kwa kutumia uelekezaji upya wa ganda (>), -o au sawa.

    Sio kesi sawa kwa upakiaji wa FTP kwani operesheni hiyo haitoi data yoyote ya majibu kwenye terminal.

    Ikiwa unapendelea "bar" ya maendeleo badala ya mita ya kawaida, -# ni rafiki yako.

    CHAGUO

    -a/--ongeza (FTP) Inapotumika katika upakiaji wa FTP, hii itaambia curl kuambatanisha na faili inayolengwa badala ya kuibatilisha. Ikiwa faili haipo, itaundwa.

    Ikiwa chaguo hili linatumiwa mara mbili, la pili litazima hali ya kuongeza tena. -A/--wakala-mtumiaji (HTTP) Bainisha mfuatano wa Wakala wa Mtumiaji wa kutuma kwa seva ya HTTP. Baadhi ya CGI zilizofanywa vibaya hushindwa ikiwa haijawekwa kuwa "Mozilla/4.0". Ili kusimba nafasi zilizoachwa wazi kwenye mfuatano, zunguka mfuatano huo kwa alama za nukuu moja. Hii inaweza pia kuweka na -H/--kichwa chaguo bila shaka.

    Chaguo hili likiwekwa zaidi ya mara moja, la mwisho ndilo litakalotumika. --anyauth (HTTP) Huambia curl kubaini njia ya uthibitishaji peke yake, na kutumia njia salama zaidi ambayo tovuti ya mbali inadai inakubali. Hii inafanywa kwa kufanya ombi kwanza na kuangalia vichwa vya majibu, na hivyo kushawishi mtandao wa ziada wa kwenda na kurudi. Hii inatumika badala ya kuweka mbinu mahususi ya uthibitishaji, ambayo unaweza kufanya nayo. --msingi, --digest, --ntlm, na --jadili.

    Kumbuka kuwa kutumia --anyauth haipendekezwi ikiwa utapakia kutoka kwa stdin, kwani inaweza kuhitaji data kutumwa mara mbili na kisha mteja lazima aweze kurudisha nyuma. Ikiwa hitaji litatokea wakati wa kupakia kutoka kwa stdin, operesheni ya upakiaji itashindwa.

    Ikiwa chaguo hili linatumiwa mara kadhaa, matukio yafuatayo hayana tofauti. -b/--kidakuzi (HTTP) Pitisha data kwa seva ya HTTP kama kidakuzi. Inadaiwa ni data iliyopokelewa hapo awali kutoka kwa seva kwenye mstari wa "Set-Cookie:". Data inapaswa kuwa katika umbizo "NAME1=VALUE1; NAME2=VALUE2".

    Ikiwa hakuna herufi "=" inatumika kwenye mstari, inachukuliwa kama jina la faili la kutumia kusoma mistari ya vidakuzi iliyohifadhiwa hapo awali kutoka, ambayo inapaswa kutumika katika kipindi hiki ikiwa inalingana. Kutumia njia hii pia kuwezesha "kichanganuzi cha kuki" ambacho kitafanya curl kurekodi kuki zinazoingia pia, ambayo inaweza kuwa muhimu ikiwa unatumia hii pamoja na -L/--mahali chaguo. Fomati ya faili ya kusoma vidakuzi inapaswa kuwa vichwa vya HTTP au umbizo la faili ya kidakuzi cha Netscape/Mozilla.

    KUMBUKA ambayo faili imeainishwa nayo -b/--kidakuzi inatumika tu kama pembejeo. Hakuna vidakuzi vitahifadhiwa kwenye faili. Ili kuhifadhi vidakuzi, tumia -c/--kidakuzi chaguo au unaweza kuhifadhi hata vichwa vya HTTP kwenye faili ukitumia -D/--tupa-kichwa!

    Chaguo hili likiwekwa zaidi ya mara moja, la mwisho ndilo litakalotumika. -B/--tumia-ascii Washa uhamisho wa ASCII unapotumia FTP au LDAP. Kwa FTP, hii inaweza pia kutekelezwa kwa kutumia URL. hiyo inaisha na ";aina=A". Chaguo hili husababisha data iliyotumwa kwa stdout kuwa katika hali ya maandishi kwa mifumo ya win32.

    Ikiwa chaguo hili linatumiwa mara mbili, la pili litazima matumizi ya ASCII. --basic (HTTP) Inaambia curl kutumia uthibitishaji wa Msingi wa HTTP. Hili ndilo chaguo-msingi na chaguo hili kwa kawaida halina maana, isipokuwa ukiitumie kubatilisha chaguo lililowekwa awali ambalo huweka mbinu tofauti ya uthibitishaji (kama vile --ntlm, --digest na --jadili).

    Ikiwa chaguo hili linatumiwa mara kadhaa, matukio yafuatayo hayana tofauti. --ciphers (SSL) Hubainisha ni misimbo gani ya kutumia katika muunganisho. Orodha ya misimbo lazima iwe ikitumia misimbo halali. Soma juu ya maelezo ya orodha ya misimbo ya SSL kwenye URL hii: http://www.openssl.org/docs/apps/ciphers.html

    Ikiwa chaguo hili linatumiwa mara kadhaa, la mwisho litaondoa wengine. --compressed (HTTP) Omba jibu lililobanwa kwa kutumia mojawapo ya algorithms inayoauniwa na libcurl, na urudishe hati ambayo haijabanwa. Chaguo hili likitumiwa na seva ikatuma usimbaji usiotumika, Curl itaripoti hitilafu.

    Ikiwa chaguo hili linatumiwa mara kadhaa, kila tukio litawasha/kuzima. --unganisha-muda umeisha Muda wa juu zaidi katika sekunde ambao unaruhusu muunganisho kwenye seva kuchukua. Hii inapunguza tu awamu ya uunganisho, mara tu curl imeunganisha chaguo hili halitumiki tena. Tazama pia -m/--muda wa juu zaidi chaguo.

    Ikiwa chaguo hili linatumiwa mara kadhaa, la mwisho litatumika. -c/--kidakuzi Bainisha ni faili gani unataka curl kuandika vidakuzi vyote baada ya operesheni iliyokamilika. Curl huandika vidakuzi vyote vilivyosomwa hapo awali kutoka kwa faili maalum pamoja na vidakuzi vyote vilivyopokelewa kutoka kwa seva za mbali. Ikiwa hakuna vidakuzi vinavyojulikana, hakuna faili itakayoandikwa. Faili itaandikwa kwa kutumia umbizo la faili ya kidakuzi cha Netscape. Ukiweka jina la faili kwa dashi moja, "-", vidakuzi vitaandikwa kwa stdout.

    KUMBUKA Ikiwa jarida la kuki haliwezi kuundwa au kuandikiwa, utendakazi wote wa curl hautashindwa au hata kuripoti hitilafu kwa uwazi. Kutumia -v kutaonyeshwa onyo, lakini hiyo ndiyo maoni pekee yanayoonekana unayopata kuhusu hali hii inayoweza kuwa mbaya.

    Ikiwa chaguo hili linatumiwa mara kadhaa, jina la faili maalum la mwisho litatumika. -C/--endelea-saa Endelea/Rejesha iliyotangulia uhamishaji wa faili kwa usawa uliopewa. Uwiano uliotolewa ni idadi kamili ya baiti ambazo zitarukwa kuhesabiwa kuanzia mwanzo wa faili chanzo kabla ya kuhamishiwa lengwa. Ikitumiwa na vipakiwa, amri ya seva ya ftp SIZE haitatumiwa na curl.

    Tumia "-C -" kumwambia curl ili kujua kiotomatiki wapi/jinsi ya kurejesha uhamishaji. Kisha hutumia faili za pato/ingizo ulizopewa kubaini hilo.

    Ikiwa chaguo hili linatumiwa mara kadhaa, la mwisho litatumika. --create-dirs Inapotumiwa pamoja na -o chaguo, curl itaunda safu ya saraka ya ndani inayohitajika kama inavyohitajika. Chaguo hili huunda dirs zilizotajwa na -o chaguo, hakuna kitu kingine. Ikiwa -o jina la faili halitumii dir au ikiwa dirs inazotaja tayari zipo, hakuna dir itaundwa.

    Ili kuunda saraka za mbali unapotumia FTP, jaribu --ftp-create-dirs. --crlf (FTP) Badilisha LF hadi CRLF katika upakiaji. Inafaa kwa MVS (OS/390).

    Ikiwa chaguo hili linatumiwa mara kadhaa, matukio yafuatayo hayana tofauti. -d/--data (HTTP) Hutuma data iliyobainishwa katika ombi la POST kwa seva ya HTTP, kwa njia ambayo inaweza kuiga kana kwamba mtumiaji amejaza fomu ya HTML na kubonyeza kitufe cha kuwasilisha. Kumbuka kuwa data hutumwa kama ilivyoainishwa bila usindikaji wa ziada (na laini zote zimekatwa). Data inatarajiwa kuwa "url-encoded". Hii itasababisha curl kupitisha data kwa seva kwa kutumia programu-tumizi ya aina ya maudhui/x-www-form-urlencoded. Linganisha na -F/-fomu. Ikiwa chaguo hili litatumika zaidi ya mara moja kwenye mstari wa amri sawa, vipande vya data vilivyobainishwa vitaunganishwa pamoja na kutenganisha &-barua. Kutumia "-d name=daniel -d skill=lousy" kungetoa sehemu ya chapisho ambayo inaonekana kama "Hivyo jina=daniel&skill=lousy".

    Ukianza data na herufi @, iliyobaki inapaswa kuwa jina la faili kusoma data kutoka, au - ikiwa unataka curl kusoma data kutoka kwa stdin. Yaliyomo kwenye faili lazima tayari yamesimbwa url. Faili nyingi pia zinaweza kubainishwa. Kuchapisha data kutoka kwa faili inayoitwa "foobar" kungefanywa na --data@foobar".

    Ili kuchapisha data kwa njia ya binary, badala yake unapaswa kutumia --data-binary chaguo.

    -d/--data ni sawa na --data-ascii.

    Ikiwa chaguo hili linatumiwa mara kadhaa, wale wanaofuata kwanza wataongeza data. --data-ascii (HTTP) Hili ni lakabu kwa -d/--data chaguo.

    Ikiwa chaguo hili linatumiwa mara kadhaa, wale wanaofuata kwanza wataongeza data. --data-binary (HTTP) Hii huchapisha data kwa njia sawa na --data-ascii gani, ingawa wakati wa kutumia chaguo hili muktadha mzima wa data iliyotumwa huwekwa kama ilivyo. Ikiwa unataka kuchapisha faili ya binary bila kipengee cha mistari mipya ya faili ya --data-ascii chaguo, hii ni kwa ajili yako.

    Ikiwa chaguo hili linatumiwa mara kadhaa, wale wanaofuata kwanza wataongeza data. --digest (HTTP) Huwasha uthibitishaji wa Digest ya HTTP. Huu ni uthibitishaji unaozuia nenosiri kutumwa kwa waya kwa maandishi wazi. Tumia hii pamoja na kawaida -u/--mtumiaji chaguo la kuweka jina la mtumiaji na nenosiri. Angalia pia --ntlm, --jadili na --anyauth kwa chaguzi zinazohusiana.

    Ikiwa chaguo hili linatumiwa mara kadhaa, matukio yafuatayo hayana tofauti. --disable-eprt (FTP) Mwambie curl kuzima matumizi ya EPRT na amri za LPRT wakati wa kufanya uhamishaji amilifu wa FTP. Kwa kawaida Curl itajaribu kwanza kutumia EPRT, kisha LPRT kabla ya kutumia PORT, lakini kwa chaguo hili, itatumia PORT mara moja. EPRT na LPRT ni viendelezi kwa itifaki asili ya FTP, huenda visifanye kazi kwenye seva zote lakini kuwezesha utendakazi zaidi kwa njia bora kuliko amri ya kawaida ya PORT.

    Ikiwa chaguo hili litatumika mara kadhaa, kila tukio litawasha/kuzima. --disable-epsv (FTP) Mwambie curl kuzima matumizi ya amri ya EPSV wakati wa kufanya uhamishaji wa FTP wa kawaida. Curl kwa kawaida atajaribu kwanza kutumia EPSV kabla ya PASV, lakini kwa chaguo hili, haitajaribu kutumia EPSV.

    Ikiwa chaguo hili litatumika mara kadhaa, kila tukio litawasha/kuzima. -D/--tupa-kichwa Andika vichwa vya itifaki kwa faili maalum.

    Chaguo hili ni rahisi kutumia unapotaka kuhifadhi vichwa ambavyo tovuti ya HTTP inakutumia. Vidakuzi kutoka kwa vichwa vinaweza kusomwa katika ombi la pili la curl kwa kutumia -b/--kidakuzi chaguo! The -c/--kidakuzi Chaguo ni njia bora ya kuhifadhi vidakuzi.

    Inapotumiwa kwenye FTP, mistari ya majibu ya seva ya ftp inachukuliwa kuwa "vichwa" na kwa hivyo huhifadhiwa hapo.

    Ikiwa chaguo hili linatumiwa mara kadhaa, la mwisho litatumika. -e/--mrejeleaji (HTTP) Hutuma maelezo ya "Ukurasa wa Mrejeleo" kwa seva ya HTTP. Hii inaweza pia kuweka na -H/--kichwa bendera bila shaka. Inapotumiwa na -L/--mahali unaweza kuambatisha ";auto" kwa --referer URL kufanya curl kuweka kiotomatiki URL iliyotangulia inapofuata Mahali: kichwa. Mfuatano wa ";auto" unaweza kutumika peke yake, hata kama hutaweka --referer ya awali.

    Ikiwa chaguo hili linatumiwa mara kadhaa, la mwisho litatumika. -- injini Chagua injini ya crypto ya OpenSSL ya kutumia kwa utendakazi wa msimbo. Tumia -- orodha ya injini ili kuchapisha orodha ya injini zinazotumika wakati wa kujenga. Kumbuka kuwa sio injini zote (au hakuna) zinaweza kupatikana kwa wakati wa kukimbia. --environment (RISC OS PEKEE) Huweka anuwai ya anuwai ya mazingira, kwa kutumia majina -w inayoauni chaguo, ili kuruhusu uchimbaji wa habari muhimu kwa urahisi baada ya kukimbia curl.

    Ikiwa chaguo hili litatumika mara kadhaa, kila tukio litawasha/kuzima. --egd-faili (HTTPS) Bainisha jina la njia kwenye soketi ya Daemon ya Kukusanya Entropy. Soketi hutumiwa kupata injini isiyo ya kawaida kwa miunganisho ya SSL. Tazama pia --faili-basi chaguo. -E/-- cheti (HTTPS) Humwambia curl kutumia faili iliyobainishwa ya cheti wakati wa kupata faili iliyo na HTTPS. Cheti lazima kiwe katika umbizo la PEM. Ikiwa nenosiri la hiari halijabainishwa, litaulizwa kwenye kifaa cha kulipia. Kumbuka kuwa cheti hiki ni ufunguo wa faragha na cheti cha faragha kimeunganishwa!

    Ikiwa chaguo hili linatumiwa mara kadhaa, la mwisho litatumika. --aina ya cheti (SSL) Hueleza cheti kilichotolewa kiko katika aina ya cheti. PEM, DER na ENG ni aina zinazotambulika.

    Ikiwa chaguo hili linatumiwa mara kadhaa, la mwisho litatumika. --cacert (HTTPS) Inamwambia curl kutumia faili iliyobainishwa ya cheti ili kuthibitisha programu rika. Faili inaweza kuwa na vyeti vingi vya CA. Cheti lazima kiwe katika umbizo la PEM.

    curl inatambua utofauti wa mazingira unaoitwa "CURL_CA_BUNDLE" ikiwa hiyo imewekwa, na hutumia njia iliyotolewa kama njia ya kifungu cha cert cha CA. Chaguo hili linabatilisha utofauti huo.

    Toleo la windows la curl litatafuta kiotomatiki faili ya certs ya CA inayoitwa "curl-ca-bundle.crt", iwe katika saraka sawa na curl.exe, au katika Saraka ya Sasa ya Kufanya Kazi, au kwenye folda yoyote iliyo kwenye PATH yako.

    Ikiwa chaguo hili linatumiwa mara kadhaa, la mwisho litatumika. --kifuniko (HTTPS) Humwambia curl kutumia saraka maalum ya cheti ili kuthibitisha programu rika. Vyeti lazima viwe katika umbizo la PEM, na saraka lazima iwe imechakatwa kwa kutumia c_rehash inayotolewa na openssl. Kutumia --kifuniko inaweza kuruhusu curl kufanya miunganisho ya https kwa ufanisi zaidi kuliko kutumia --cacert ikiwa --cacert faili ina vyeti vingi vya CA.

    Ikiwa chaguo hili linatumiwa mara kadhaa, la mwisho litatumika. -f/--fail (HTTP) Inashindwa kimyakimya (hakuna pato kabisa) kwenye hitilafu za seva. Hii inafanywa zaidi kama hii ili kuwezesha hati nk ili kukabiliana vyema na majaribio yaliyoshindwa. Katika hali za kawaida seva ya HTTP inaposhindwa kutoa hati, hurejesha hati ya HTML inayosema hivyo (ambayo mara nyingi pia inaelezea kwa nini na zaidi). Bendera hii itazuia curl kutoa hiyo na kurudisha hitilafu 22.

    Ikiwa chaguo hili linatumiwa mara mbili, la pili litazima tena kushindwa kwa kimya. --ftp-account (FTP) Wakati Seva ya FTP inauliza "data ya akaunti" baada ya jina la mtumiaji na nenosiri limetolewa, data hii inatumwa kwa kutumia amri ya ACCT. (Imeongezwa katika 7.13.0)

    Ikiwa chaguo hili linatumiwa mara mbili, la pili litaondoa matumizi ya awali. --ftp-create-dirs (FTP) Wakati URL/operesheni ya FTP inapotumia njia ambayo haipo kwenye seva kwa sasa, tabia ya kawaida ya curl itashindwa. Kwa kutumia chaguo hili, curl itajaribu badala yake kuunda saraka ambazo hazipo. .

    Ikiwa chaguo hili linatumiwa mara mbili, ya pili itazima tena uundaji wa saraka. --ftp-method (FTP) Dhibiti ni njia gani curl inapaswa kutumia kufikia faili kwenye seva ya FTP(S). Hoja ya mbinu inapaswa kuwa mojawapo ya njia mbadala zifuatazo: multicwd curl hufanya operesheni moja ya CWD kwa kila sehemu ya njia katika URL iliyotolewa. Kwa madaraja ya kina hii inamaanisha amri nyingi sana. Hivi ndivyo RFC1738 inavyosema inapaswa kufanywa. Hii ndio tabia chaguo-msingi lakini ya polepole zaidi. nocwd curl haina CWD hata kidogo. curl itafanya SIZE, RETR, STOR nk na kutoa njia kamili ya seva kwa amri hizi zote. Hii ndio tabia ya haraka zaidi. singlecwd curl hufanya CWD moja na saraka kamili inayolengwa na kisha hufanya kazi kwenye faili "kawaida" (kama katika kesi ya multicwd). Hii kwa kiasi fulani inatii viwango kuliko "nocwd" lakini bila adhabu kamili ya "multicwd". --ftp-pasv (FTP) Tumia PASV wakati wa kuhamisha. PASV ni tabia chaguo-msingi ya ndani, lakini kutumia chaguo hili kunaweza kutumiwa kubatilisha chaguo la awali --ftp-port. (Imeongezwa katika 7.11.0)

    Ikiwa chaguo hili linatumiwa mara kadhaa, matukio yafuatayo hayana tofauti.

    Ftp-mbadala-kwa-mtumiaji (FTP) Ikiwa uthibitishaji na amri za USER na PASS hautafaulu, tuma amri hii. Unapounganisha kwenye seva ya Usafiri Salama ya Tumbleweed kupitia FTPS kwa kutumia cheti cha mteja, kutumia "SITE AUTH" kutaambia seva kupata jina la mtumiaji kutoka kwa cheti. (Imeongezwa katika 7.15.5) --ftp-skip-pasv-ip ( FTP) Mwambie curl asitumie anwani ya IP ambayo seva inapendekeza katika jibu lake kwa amri ya PASV ya curl wakati curl inaunganisha muunganisho wa data. Badala yake curl itatumia tena anwani ile ile ya IP ambayo tayari hutumia kwa unganisho la kudhibiti. (Imeongezwa katika 7.14.2)

    Chaguo hili halina athari ikiwa PORT, EPRT au EPSV itatumika badala ya PASV.

    Chaguo hili likitumiwa mara mbili, la pili litatumia tena anwani iliyopendekezwa ya seva. --ftp-ssl (FTP) Jaribu kutumia SSL/TLS kwa muunganisho wa FTP. Hurejesha kwenye muunganisho usio salama ikiwa seva haifanyi hivyo" t inasaidia SSL/TLS. (Imeongezwa katika 7.11.0)

    Ikiwa chaguo hili linatumiwa mara mbili, ya pili itazima tena hii. --ftp-ssl-reqd (FTP) Inahitaji SSL/TLS kwa muunganisho wa FTP. Husitisha muunganisho ikiwa seva haitumii SSL/TLS. (Imeongezwa katika 7.15.5)

    Ikiwa chaguo hili linatumiwa mara mbili, ya pili itazima tena hii. -F/-fomu (HTTP) Hii huruhusu kujikunja kuiga fomu iliyojazwa ambayo mtumiaji amebonyeza kitufe cha kuwasilisha. Hii husababisha kukunja kwa data ya POST kwa kutumia Data ya Aina ya Yaliyomo kuzidisha/fomu kulingana na RFC1867. Hii huwezesha upakiaji wa faili za binary nk. Ili kulazimisha sehemu ya "maudhui" kuwa faili, weka kiambishi awali cha jina la faili kwa ishara ya @. Ili kupata tu sehemu ya yaliyomo kutoka kwa faili, weka kiambishi awali cha jina la faili na herufi<. The difference between @ and < is then that @ makes a file get attached in the post as a file upload, while the < makes a text field and just get the contents for that text field from a file.

    Mfano, kutuma faili yako ya nenosiri kwa seva, ambapo "nenosiri" ni jina la sehemu ya fomu ambayo /etc/passwd itakuwa ingizo:

    Ili kusoma yaliyomo kwenye faili kutoka kwa stdin badala ya faili, tumia - ambapo jina la faili linapaswa kuwa. Hii inaenda kwa wote @ na< constructs.

    Unaweza pia kuwaambia curl aina ya Maudhui ya kutumia kwa kutumia "type=", kwa njia inayofanana na:

    pinda-F" [barua pepe imelindwa];type=text/html" url.com

    pinda-F "jina=daniel;type=text/foo" url.com

    Unaweza pia kubadilisha kwa uwazi uga wa jina la sehemu ya upakiaji wa faili kwa kuweka filename=, kama hii:

    pinda-F "faili=@localfile;filename=nameinpost" url.com

    Tazama mifano na maelezo zaidi katika MWONGOZO.

    Chaguo hili linaweza kutumika mara kadhaa. --umbo-kamba (HTTP) Sawa na --fomu isipokuwa kwamba kamba ya thamani ya parameta iliyotajwa inatumika kihalisi. Anayeongoza "@" na "<" characters, and the ";type=" string in the value have no special meaning. Use this in preference to --fomu ikiwa kuna uwezekano wowote kwamba thamani ya kamba inaweza kusababisha kwa bahati mbaya "@" au "<" features of --fomu. -g/--globoff Chaguo hili huzima "kichanganuzi cha utandawazi cha URL". Unapoweka chaguo hili, unaweza kubainisha URL zilizo na herufi () bila kuzifanya zifasiriwe na curl yenyewe. Kumbuka kuwa herufi hizi si maudhui ya kawaida ya URL kisheria lakini zinapaswa kusimba kulingana na kiwango cha URI. -G/--pata Inapotumika, chaguo hili litafanya data yote ibainishwe -d/--data au --data-binary kutumika katika ombi la HTTP GET badala ya ombi la POST ambalo lingetumika vinginevyo. Data itaongezwa kwa URL na "?" kitenganishi

    Ikitumika pamoja na -I, data ya POST badala yake itaongezwa kwa URL na ombi la HEAD.

    Ikiwa chaguo hili linatumiwa mara kadhaa, matukio yafuatayo hayana tofauti. -h/--saidia Usaidizi wa Matumizi. -H/--kichwa

    (HTTP) Kichwa cha ziada cha kutumia unapopata ukurasa wa wavuti. Unaweza kubainisha idadi yoyote ya vichwa vya ziada. Kumbuka kwamba ikiwa utaongeza kichwa maalum ambacho kina jina sawa na moja ya vile vya ndani ambavyo curl ingetumia, kichwa chako kilichowekwa nje kitatumika badala ya cha ndani. Hii hukuruhusu kufanya vitu ngumu zaidi kuliko curl kawaida hufanya. Haupaswi kuchukua nafasi ya vichwa vilivyowekwa ndani bila kujua vizuri unachofanya. Kubadilisha kichwa cha ndani na kisicho na maudhui upande wa kulia wa koloni kutazuia kichwa hicho kuonekana.

    curl itahakikisha kuwa kila kichwa unachoongeza / kubadilisha kinatumwa na mwisho sahihi wa alama ya mstari, unapaswa hivyo sivyo ongeza kuwa kama sehemu ya yaliyomo kwenye kichwa: usiongeze laini mpya au urejeshaji wa gari, watakuvuruga tu.

    Tazama pia -A/--wakala-mtumiaji na -e/--mrejeleaji chaguzi.

    Chaguo hili linaweza kutumika mara kadhaa kuongeza/kubadilisha/kuondoa vichwa vingi. --ignore-content-length (HTTP) Puuza kichwa cha Urefu wa Maudhui. Hii ni muhimu sana kwa seva zinazoendesha Apache 1.x, ambazo zitaripoti Urefu wa Maudhui usio sahihi kwa faili kubwa kuliko gigabaiti 2. -i/--jumuisha (HTTP) Jumuisha kichwa cha HTTP kwenye pato. Kichwa cha HTTP kinajumuisha vitu kama vile jina la seva, tarehe ya hati, toleo la HTTP na zaidi...

    Ikiwa chaguo hili linatumiwa mara mbili, ya pili italemaza tena kichwa ni pamoja na. --kiolesura Fanya operesheni kwa kutumia kiolesura maalum. Unaweza kuingiza jina la kiolesura, anwani ya IP au jina la mwenyeji. Mfano unaweza kuonekana kama:

    Ikiwa chaguo hili linatumiwa mara kadhaa, la mwisho litatumika. -I/--kichwa (HTTP/FTP/FILE) Leta kichwa cha HTTP pekee! Seva za HTTP zina amri HEAD ambayo hii hutumia kupata chochote ila kichwa cha hati. Inapotumiwa kwenye faili ya FTP au FILE, mkunjo huonyesha ukubwa wa faili na muda wa mwisho wa kurekebisha pekee.

    Ikiwa chaguo hili linatumiwa mara mbili, la pili litazima tena kichwa tu. -j/--junk-session-cookies (HTTP) Wakati curl inaambiwa kusoma vidakuzi kutoka kwa faili fulani, chaguo hili litaifanya itupilie mbali "vidakuzi vyote vya kipindi". Hii kimsingi itakuwa na athari sawa na ikiwa kikao kipya kimeanzishwa. Vivinjari vya kawaida hutupa vidakuzi vya kipindi vimefungwa.

    Ikiwa chaguo hili litatumika mara kadhaa, kila tukio litawasha/kuzima. -k/--insecure (SSL) Chaguo hili huruhusu curl kwa uwazi kutekeleza miunganisho ya SSL "isiyo salama" na uhamishaji. Miunganisho yote ya SSL inajaribiwa kufanywa kuwa salama kwa kutumia kifurushi cha cheti cha CA kilichosakinishwa kwa chaguomsingi. Hii hufanya miunganisho yote kuzingatiwa "isiyo salama" kushindwa isipokuwa -k/--kutokuwa salama hutumika.

    Ikiwa chaguo hili linatumiwa mara mbili, mara ya pili itazima tena. --ufunguo (SSL) Jina la faili la ufunguo wa kibinafsi. Hukuruhusu kutoa ufunguo wako wa faragha katika faili hii tofauti.

    Ikiwa chaguo hili linatumiwa mara kadhaa, la mwisho litatumika. --aina ya ufunguo (SSL) Aina ya faili ya ufunguo wa kibinafsi. Bainisha ni aina gani yako --ufunguo zinazotolewa ufunguo binafsi ni. DER, PEM na ENG zinatumika.

    Ikiwa chaguo hili linatumiwa mara kadhaa, la mwisho litatumika. --krb4 (FTP) Washa uthibitishaji na matumizi ya kerberos4. Ngazi lazima iingizwe na inapaswa kuwa moja ya "wazi", "salama", "siri" au "faragha". Ikiwa unatumia kiwango ambacho sio mojawapo ya haya, "faragha" badala yake itatumika.

    Chaguo hili linahitaji kwamba maktaba ilijengwa kwa usaidizi wa kerberos4. Hii si ya kawaida sana. Tumia -V/--toleo ili kuona ikiwa curl yako inaiunga mkono.

    Ikiwa chaguo hili linatumiwa mara kadhaa, la mwisho litatumika. -K/--usanidi Bainisha ni faili gani ya usanidi ya kusoma hoja za curl kutoka. Faili ya usanidi ni faili ya maandishi ambayo hoja za mstari wa amri zinaweza kuandikwa ambazo zitatumika kana kwamba zimeandikwa kwenye mstari halisi wa amri. Chaguzi na vigezo vyake lazima zielezwe kwenye mstari sawa wa faili ya usanidi. Ikiwa parameta inapaswa kuwa na nafasi nyeupe, kigezo lazima kiingizwe ndani ya nukuu. Ikiwa safu wima ya kwanza ya mstari wa usanidi ni herufi "#", safu iliyobaki itachukuliwa kama maoni.

    Bainisha jina la faili kama "-" kufanya curl kusoma faili kutoka stdin.

    Kumbuka kuwa ili kuweza kubainisha URL katika faili ya usanidi, unahitaji kuibainisha kwa kutumia --url chaguo, na sio kwa kuandika tu URL kwenye mstari wake. Kwa hivyo, inaweza kuonekana sawa na hii:

    Chaguo hili linaweza kutumika mara kadhaa.

    Wakati curl inaalikwa, huwa kila wakati (isipokuwa -q inatumika) hutafuta faili ya usanidi chaguo-msingi na kuitumia ikiwa imepatikana. Faili ya usanidi chaguo-msingi inaangaliwa katika sehemu zifuatazo kwa mpangilio huu:

    1) curl hujaribu kupata "home dir": Kwanza hukagua CURL_HOME na kisha vijiti vya HOME vya mazingira. Ikikosa hivyo, hutumia getpwuid() kwenye mifumo kama unix (ambayo inarudisha dir ya nyumbani ikipewa mtumiaji wa sasa kwenye mfumo wako). Kwenye Windows, basi hukagua utofauti wa APPDATA, au kama suluhu la mwisho "%USERPROFILE%Data ya Maombi".

    2) Kwenye madirisha, ikiwa hakuna faili ya _curlrc kwenye dir ya nyumbani, inakagua moja katika dir sawa curl inayoweza kutekelezwa imewekwa. Kwenye mifumo inayofanana na unix, itajaribu tu kupakia .curlrc kutoka kwa dir ya nyumbani iliyoamuliwa. --kikomo-kiwango Bainisha kiwango cha juu cha uhamishaji unachotaka curl kutumia. Kipengele hiki ni muhimu ikiwa una bomba ndogo na ungependa uhamishaji wako usitumie kipimo data chako chote.

    Kasi iliyotolewa hupimwa kwa baiti/sekunde, isipokuwa kiambishi tamati kimeambatishwa. Kuweka "k" au "K" kutahesabu nambari kama kilobaiti, "m" au M" kuifanya megabaiti huku "g" au "G" ikiifanya gigabaiti. Mifano: 200K, 3m na 1G.

    Ikiwa unatumia pia -Y/--kikomo-kasi chaguo, chaguo hilo litachukua nafasi ya kwanza na linaweza kulemaza kikomo cha viwango kidogo, ili kusaidia kuweka mantiki ya kikomo cha kasi kufanya kazi.

    Ikiwa chaguo hili linatumiwa mara kadhaa, la mwisho litatumika. -l/--orodha-pekee (FTP) Wakati wa kuorodhesha saraka ya FTP, swichi hii hulazimisha mwonekano wa jina pekee. Ni muhimu sana ikiwa unataka kuchanganua yaliyomo kwenye saraka ya FTP kwa kuwa mwonekano wa saraka ya kawaida hautumii mwonekano au umbizo la kawaida.

    Chaguo hili husababisha amri ya FTP NLST kutumwa. Baadhi ya seva za FTP huorodhesha faili tu katika majibu yao kwa NLST; hazijumuishi subdirectories na viungo vya ishara.

    Ikiwa chaguo hili linatumiwa mara mbili, la pili litazima tena orodha tu. --bandari-ya-ndani [-num] Weka nambari unayopendelea au safu ya nambari za mlango wa karibu ili kutumia kwa miunganisho. Kumbuka kuwa nambari za mlango kwa asili ni rasilimali adimu ambayo itakuwa na shughuli nyingi nyakati fulani kwa hivyo kuweka masafa haya kwa kitu chembamba sana kunaweza kusababisha hitilafu zisizo za lazima za kusanidi muunganisho. (Imeongezwa katika 7.15.2) -L/--mahali (HTTP/HTTPS) Ikiwa seva itaripoti kwamba ukurasa ulioombwa umehamishwa hadi mahali tofauti (unaoonyeshwa kwa Mahali: kichwa na msimbo wa majibu 3XX) chaguo hili litafanya curl fanya upya ombi kwenye eneo jipya. Ikiwa hutumiwa pamoja na -i/--pamoja na au -I/--kichwa, vichwa kutoka kwa kurasa zote zilizoombwa vitaonyeshwa. Wakati uthibitishaji unatumiwa, curl hutuma vitambulisho vyake kwa seva pangishi ya kwanza. Ikiwa uelekezaji kwingine utachukua curl hadi kwa seva pangishi tofauti, haitaweza kukatiza mtumiaji+nenosiri. Tazama pia --eneo-inayoaminika juu ya jinsi ya kubadilisha hii. Unaweza kupunguza kiwango cha uelekezaji upya kufuata kwa kutumia --max-redirs chaguo.

    Ikiwa chaguo hili litatumika mara mbili, la pili litazima tena eneo linalofuata. --location-trusted (HTTP/HTTPS) Kama -L/--mahali, lakini itaruhusu kutuma jina + nenosiri kwa wapangishi wote ambao tovuti inaweza kuelekeza kwao. Huenda hii ikaanzisha au isilete ukiukaji wa usalama ikiwa tovuti itakuelekeza upya ufanye tovuti ambayo utatuma maelezo yako ya uthibitishaji (ambayo ni maandishi wazi katika kesi ya uthibitishaji wa Msingi wa HTTP).

    Ikiwa chaguo hili litatumika mara mbili, la pili litazima tena eneo linalofuata. --max-filesize Bainisha ukubwa wa juu zaidi (kwa baiti) wa faili ya kupakua. Ikiwa faili iliyoombwa ni kubwa kuliko thamani hii, uhamishaji hautaanza na curl itarudi na msimbo wa kutoka 63.

    KUMBUKA: Ukubwa wa faili haujulikani kila mara kabla ya upakuaji, na kwa faili kama hizo chaguo hili halina athari hata kama uhamishaji wa faili utaishia kuwa mkubwa kuliko kikomo hiki. Hii inahusu uhamishaji wa FTP na HTTP. -m/--muda wa juu zaidi Muda wa juu zaidi katika sekunde ambao unaruhusu operesheni nzima kuchukua. Hii ni muhimu kwa kuzuia kazi zako za kundi kuning'inia kwa saa kwa sababu ya mitandao ya polepole au viungo kupungua. Tazama pia --unganisha-muda umeisha chaguo.

    Ikiwa chaguo hili linatumiwa mara kadhaa, la mwisho litatumika. -M/--Mwongozo wa mwongozo. Onyesha maandishi makubwa ya usaidizi. -n/--netrc Hufanya curl kuchanganua .netrc faili katika saraka ya nyumbani ya mtumiaji kwa jina la kuingia na nenosiri. Hii kwa kawaida hutumiwa kwa ftp kwenye unix. Ikitumiwa na http, curl itawezesha uthibitishaji wa mtumiaji. Tazama (4) au (1) kwa maelezo juu ya umbizo la faili. Curl hatalalamika ikiwa faili hiyo haina ruhusa zinazofaa (haipaswi kusomeka kwa ulimwengu au kwa kikundi). Tofauti ya mazingira "HOME" inatumiwa kupata saraka ya nyumbani.

    Mfano wa haraka na rahisi sana wa jinsi ya kusanidi a .netrc kuruhusu curl kwa ftp kwa mashine host.domain.com yenye jina la mtumiaji "mwenyewe" na nenosiri "siri" inapaswa kuonekana sawa na:

    machine host.domain.com ingia mwenyewe nenosiri siri

    Ikiwa chaguo hili litatumika mara mbili, la pili litalemaza tena utumiaji wa netrc. --netrc-optional Sawa sana na --netrc, lakini chaguo hili hufanya matumizi ya .netrc hiari na sio lazima kama --netrc hufanya. --negotiate (HTTP) Huwasha uthibitishaji wa GSS-Negotiate. Mbinu ya GSS-Negotiate iliundwa na Microsoft na inatumika katika programu zao za wavuti. Inakusudiwa kimsingi kama usaidizi wa uthibitishaji wa Kerberos5 lakini pia inaweza kutumika pamoja na mbinu zingine za uthibitishaji. Kwa maelezo zaidi angalia rasimu ya IETF draft-brezak-spnego-http-04.txt.

    Chaguo hili linahitaji kwamba maktaba ilijengwa kwa usaidizi wa GSSAPI. Hii si ya kawaida sana. Tumia -V/--toleo ili kuona kama toleo lako linaauni GSS-Negotiate.

    Unapotumia chaguo hili, lazima pia utoe chaguo la uwongo-u/--mtumiaji bandia ili kuamilisha msimbo wa uthibitishaji vizuri. Kutuma "-u:" inatosha kwani jina la mtumiaji na nenosiri kutoka kwa -u chaguo hazitumiki.

    Ikiwa chaguo hili linatumiwa mara kadhaa, matukio yafuatayo hayana tofauti. -N/--no-buffer Inalemaza uakibishaji wa mtiririko wa kutoa. Katika hali za kawaida za kazi, curl itatumia mkondo wa pato wa kawaida ambao utakuwa na athari kwamba itatoa data katika vipande, sio lazima wakati data inafika. Kutumia chaguo hili kutazima uhifadhi huo.

    Chaguo hili likitumika mara mbili, la pili litawasha tena kuakibisha. --ntlm (HTTP) Huwasha uthibitishaji wa NTLM. Mbinu ya uthibitishaji wa NTLM iliundwa na Microsoft na inatumiwa na seva za wavuti za IIS. Ni itifaki ya umiliki, iliyobadilishwa kinyume na watu wajanja na kutekelezwa kwa curl kulingana na juhudi zao. Tabia ya aina hii haipaswi kuidhinishwa, unapaswa kuhimiza kila mtu anayetumia NTLM kubadili mbinu ya uthibitishaji ya umma na iliyoandikwa badala yake. Kama vile Digest.

    Ikiwa unataka kuwezesha NTLM kwa uthibitishaji wa proksi yako, basi tumia --proksi-ntlm.

    Chaguo hili linahitaji kwamba maktaba ilijengwa kwa usaidizi wa SSL. Tumia -V/--toleo ili kuona ikiwa curl yako inasaidia NTLM.

    Ikiwa chaguo hili linatumiwa mara kadhaa, matukio yafuatayo hayana tofauti. -o/--pato Andika matokeo kwa badala ya stdout. Iwapo unatumia () au kuleta hati nyingi, unaweza kutumia "#" ikifuatiwa na nambari katika faili kibainishi. Tofauti hiyo itabadilishwa na mfuatano wa sasa wa URL inayoletwa. Kama katika:

    Unaweza kutumia chaguo hili mara nyingi ulivyo na idadi ya URL.

    Tazama pia --tengeneza-dirs chaguo la kuunda saraka za ndani kwa nguvu. -O/--remote-name Andika towe kwa faili ya karibu inayoitwa kama faili ya mbali tunayopata. (Sehemu ya faili tu ya faili ya mbali inatumiwa, njia imekatwa.)

    Jina la faili la mbali la kutumia kuhifadhi limetolewa kutoka kwa URL iliyotolewa, hakuna kitu kingine chochote.

    Unaweza kutumia chaguo hili mara nyingi ulivyo na idadi ya URL. --pita (SSL) Pitisha kifungu cha maneno kwa ufunguo wa kibinafsi

    Ikiwa chaguo hili linatumiwa mara kadhaa, la mwisho litatumika. --proxy-anyauth Inaambia curl kuchagua mbinu inayofaa ya uthibitishaji wakati wa kuwasiliana na seva mbadala iliyotolewa. Hii itasababisha ombi la ziada/jibu la safari ya kwenda na kurudi. (Imeongezwa katika 7.13.2)

    Ikiwa chaguo hili litatumika mara mbili, la pili litazima tena matumizi ya seva mbadala-uthibitishaji wowote. --proxy-basic Inaambia curl kutumia uthibitishaji wa Msingi wa HTTP wakati unawasiliana na seva mbadala iliyotolewa. Tumia --msingi kwa kuwezesha HTTP Basic na seva pangishi ya mbali. Cha msingi ni njia chaguomsingi ya uthibitishaji ambayo curl hutumia na proksi.

    Chaguo hili likitumiwa mara mbili, la pili litazima tena uthibitishaji wa Msingi wa seva mbadala wa HTTP. --proxy-digest Inaambia curl kutumia uthibitishaji wa HTTP Digest wakati unawasiliana na seva mbadala iliyotolewa. Tumia --digest kwa kuwezesha Digest ya HTTP na seva pangishi ya mbali.

    Chaguo hili likitumiwa mara mbili, la pili litazima tena HTTP Digest ya seva mbadala. --proxy-ntlm Inaambia curl kutumia uthibitishaji wa HTTP NTLM wakati wa kuwasiliana na seva mbadala iliyotolewa. Tumia --ntlm kwa kuwezesha NTLM na seva pangishi ya mbali.

    Chaguo hili likitumiwa mara mbili, la pili litazima tena seva mbadala ya HTTP NTLM. -p/--proxytunnel Wakati proksi ya HTTP inatumiwa ( -x/--proksi), chaguo hili litasababisha itifaki zisizo za HTTP kujaribu kupitisha proksi badala ya kuitumia tu kufanya shughuli zinazofanana na HTTP. Mbinu ya handaki inafanywa kwa ombi la wakala wa HTTP CONNECT na inahitaji kwamba seva mbadala iruhusu muunganisho wa moja kwa moja kwa mkunjo wa nambari ya mlango wa mbali unaotaka kupitisha.

    Chaguo hili likitumiwa mara mbili, la pili litazima tena handaki la wakala. -P/--ftp-bandari

    (FTP) Hugeuza majukumu ya kianzisha/msikilizaji inapounganishwa na ftp. Swichi hii hufanya Curl kutumia amri ya PORT badala ya PASV. Kwa mazoezi, PORT huiambia seva kuunganishwa kwa anwani na mlango maalum wa mteja, wakati PASV inauliza seva kwa anwani ya ip na mlango wa kuunganisha.
    inapaswa kuwa moja ya: kiolesura yaani "eth0" kubainisha ni kiolesura kipi cha anwani ya IP unayotaka kutumia (Unix pekee) anwani ya IP yaani "192.168.10.1" ili kubainisha jina kamili la mwenyeji wa nambari ya IP yaani "my.host.domain" kwa taja mashine - fanya curl kuchukua anwani sawa ya IP ambayo tayari inatumika kwa unganisho la kudhibiti

    Ikiwa chaguo hili linatumiwa mara kadhaa, la mwisho litatumika. Zima matumizi ya PORT na --ftp-pasv. Zima jaribio la kutumia amri ya EPRT badala ya PORT kwa kutumia --lemaza-ept. EPRT ni PORT++ kweli. -q Ikitumika kama kigezo cha kwanza kwenye mstari wa amri, the curlrc config haitasomwa na kutumika. Angalia -K/--usanidi kwa maelezo juu ya njia ya utafutaji ya faili ya usanidi chaguo-msingi. -Q/--nukuu (FTP) Tuma amri ya kiholela kwa seva ya mbali ya FTP. Amri za nukuu hutumwa KABLA ya uhamishaji kufanyika (baada tu ya amri ya awali ya PWD kuwa sahihi). Kufanya amri kuchukua nafasi baada ya uhamisho wa mafanikio, kiambishi awali kwa dashi "-". Kufanya amri kutumwa baada ya libcurl kubadilisha saraka ya kufanya kazi, kabla tu ya amri ya uhamishaji, kiambishi awali amri na "+". Unaweza kutaja kiasi chochote cha amri. Ikiwa seva itarudisha kutofaulu kwa moja ya amri, operesheni nzima itasitishwa. Lazima utume amri sahihi za FTP kisintaksia kama RFC959 inavyofafanua.

    Chaguo hili linaweza kutumika mara kadhaa. --faili-basi (HTTPS) Bainisha jina la njia ya faili iliyo na data itakayochukuliwa kuwa nasibu. Data inatumika kupata injini nasibu kwa miunganisho ya SSL. Tazama pia --egd-faili chaguo. -r/--safu (HTTP/FTP) Rejesha masafa ya baiti (yaani hati sehemu) kutoka kwa seva ya HTTP/1.1 au FTP. Masafa yanaweza kubainishwa kwa njia kadhaa. 0-499 inabainisha baiti 500 za kwanza 500-999 inabainisha baiti 500 za pili -500 inabainisha baiti 500 za mwisho 9500- inabainisha baiti kutoka kwa kukabiliana na 9500 na mbele 0-0,-1 inabainisha baiti ya kwanza na ya mwisho pekee(*)(H) 500-700,600-799 inabainisha baiti 300 kutoka kwa kukabiliana na 500(H) 100-199,500-599 inabainisha safu mbili tofauti za baiti 100(*)(H)

    (*) = KUMBUKA kuwa hii itasababisha seva kujibu kwa jibu la sehemu nyingi!

    Unapaswa pia kufahamu kuwa seva nyingi za HTTP/1.1 hazina kipengele hiki, ili unapojaribu kupata masafa, utapata hati nzima.

    Vipakuliwa vya masafa ya FTP vinaauni tu sintaksia rahisi "anza-komesha" (hiari na mojawapo ya nambari zilizoachwa). Inategemea SIZE ya amri isiyo ya RFC.

    Ikiwa chaguo hili linatumiwa mara kadhaa, la mwisho litatumika. -R/--remote-time Inapotumika, hii itafanya libcurl kujaribu kubaini muhuri wa muda wa faili ya mbali, na ikiwa hiyo inapatikana fanya faili ya ndani kupata muhuri huo wa saa.

    Ikiwa chaguo hili linatumiwa mara mbili, mara ya pili huzima hii tena. --jaribu tena Ikiwa hitilafu ya muda mfupi itarejeshwa wakati curl inajaribu kufanya uhamisho, itajaribu tena nambari hii ya mara kabla ya kukata tamaa. Kuweka nambari hadi 0 hufanya curl usijaribu tena (ambayo ndiyo chaguo-msingi). Hitilafu ya muda mfupi inamaanisha: kuisha kwa muda, msimbo wa majibu wa FTP 5xx au msimbo wa majibu wa HTTP 5xx.

    Wakati curl inakaribia kujaribu tena uhamishaji, itasubiri kwanza sekunde moja na kisha kwa majaribio yote yanayokuja itaongeza muda wa kungoja mara mbili hadi ifikie dakika 10 ambayo itakuwa kuchelewa kati ya majaribio mengine yote. Kwa kutumia --jaribu-kuchelewesha tena unalemaza algorithm hii ya kielelezo cha nyuma. Angalia pia --jaribu tena-muda wa juu zaidi ili kupunguza jumla ya muda unaoruhusiwa kwa majaribio tena. (Imeongezwa katika 7.12.3)

    Ikiwa chaguo hili linatumiwa mara nyingi, tukio la mwisho huamua kiasi. --jaribu-kuchelewesha tena Fanya usingizi wa hali ya juu kiasi hiki cha muda kati ya kila jaribio tena wakati uhamishaji umeshindwa na hitilafu ya muda mfupi (hubadilisha algoriti ya muda wa kurudi nyuma kati ya majaribio tena). Chaguo hili ni la kuvutia tu ikiwa --jaribu tena inatumika pia. Kuweka ucheleweshaji huu hadi sufuri kutafanya curl kutumia muda chaguomsingi wa kuzima. (Imeongezwa katika 7.12.3)

    Ikiwa chaguo hili linatumiwa mara nyingi, tukio la mwisho huamua kiasi. --jaribu tena-muda wa juu zaidi Kipima muda cha kujaribu tena kinawekwa upya kabla ya jaribio la kwanza la kuhamisha. Kujaribu tena kutafanywa kama kawaida (ona --jaribu tena) mradi kipima muda hakijafikia kikomo hiki. Kumbuka kwamba ikiwa kipima muda hakijafikia kikomo, ombi litatumwa na wakati wa kutekeleza, inaweza kuchukua muda mrefu zaidi ya kipindi hiki. Ili kupunguza muda wa juu zaidi wa ombi moja, tumia -m/--muda wa juu zaidi. Weka chaguo hili hadi sufuri ili kutomaliza muda wa kujaribu tena. (Imeongezwa katika 7.12.3)

    Ikiwa chaguo hili linatumiwa mara nyingi, tukio la mwisho huamua kiasi. -s/--modi ya kimya kimya. Usionyeshe mita ya maendeleo au ujumbe wa hitilafu. Hufanya Curl kunyamazishwa.

    Ikiwa chaguo hili linatumiwa mara mbili, la pili litazima tena hali ya kimya. -S/--show-error Inapotumiwa na -s hufanya ujumbe wa makosa ya curl ikiwa itashindwa.

    Ikiwa chaguo hili linatumiwa mara mbili, ya pili itazima tena kosa la kuonyesha. --soksi4 Tumia proksi maalum ya SOCKS4. Ikiwa nambari ya mlango haijabainishwa, inachukuliwa katika bandari 1080. (Imeongezwa katika 7.15.2)

    -x/--proksi

    Ikiwa chaguo hili linatumiwa mara kadhaa, la mwisho litatumika. --soksi5 Tumia proksi maalum ya SOCKS5. Ikiwa nambari ya mlango haijabainishwa, inachukuliwa katika bandari 1080. (Imeongezwa katika 7.11.1)

    Chaguo hili linabatilisha matumizi yoyote ya hapo awali ya -x/--proksi, kwa kuwa ni za kipekee.

    Ikiwa chaguo hili linatumiwa mara kadhaa, la mwisho litatumika. (Chaguo hili lilinakiliwa kimakosa na kutumika kama --soksi bila nambari kuongezwa.) --stderr Elekeza upya maandishi yote kwa stderr kwa faili maalum badala yake. Ikiwa jina la faili ni wazi "-", badala yake limeandikwa kwa stdout. Chaguo hili halina maana wakati "unatumia ganda lenye uwezo mzuri wa kuelekeza upya.

    Ikiwa chaguo hili linatumiwa mara kadhaa, la mwisho litatumika. --tcp-nodelay Washa chaguo la TCP_NODELAY. Angalia (3) ukurasa wa mtu kwa maelezo juu ya chaguo hili. (Imeongezwa katika 7.11.2)

    Ikiwa chaguo hili linatumiwa mara kadhaa, kila tukio hugeuza hili kuwasha/kuzima. -t/--telnet-chaguo Pitisha chaguzi kwa itifaki ya telnet. Chaguzi zinazoungwa mkono ni:

    TTYPE= Inaweka aina ya terminal.

    XDISPLOC= Inaweka eneo la onyesho la X.

    MPYA_ENV= Inaweka tofauti ya mazingira. -T/--pakia-faili Hii huhamisha faili ya ndani iliyobainishwa hadi kwa URL ya mbali. Ikiwa hakuna sehemu ya faili katika URL iliyobainishwa, Curl itaambatisha jina la faili la ndani. KUMBUKA kuwa lazima utumie trailing / kwenye saraka ya mwisho ili kudhibitisha kwa Curl kwamba hakuna jina la faili au curl utafikiri kuwa jina lako la mwisho la saraka ni jina la faili la mbali la kutumia. Hiyo itasababisha operesheni ya upakiaji kushindwa. Ikiwa hii itatumika kwenye seva ya http, amri ya PUT itatumika.

    Tumia jina la faili "-" (dashi moja) kutumia stdin badala ya faili uliyopewa.

    Unaweza kubainisha moja -T kwa kila URL kwenye mstari wa amri. Kila jozi ya -T + URL hubainisha cha kupakia na wapi. curl pia inaauni "globbing" ya -T hoja, kumaanisha kuwa unaweza kupakia faili nyingi kwenye URL moja kwa kutumia mtindo ule ule wa kutandaza URL unaotumika katika URL, kama hii:

    MAFAILI

    ~/.curlrc Faili ya usanidi chaguo-msingi, ona -K/--usanidi kwa maelezo.

    MAZINGIRA

    http_proksi [:port] Huweka seva mbadala kutumia kwa HTTP. HTTPS_PROXY [:port] Huweka seva mbadala kutumia kwa HTTPS. FTP_PROXY [:port] Huweka seva mbadala kutumia kwa FTP. WAKALA_WOTE [:port] Huweka seva mbadala kutumia ikiwa hakuna proksi mahususi ya itifaki iliyowekwa. NO_PROXY orodha ya majina ya seva pangishi ambayo hayafai kupitia seva mbadala yoyote. Ikiwa imewekwa kwa nyota "*" pekee, inalingana na wapangishi wote.

    ONDOA MSIMBO

    Kuna rundo la misimbo tofauti ya hitilafu na ujumbe wao wa hitilafu unaolingana ambao unaweza kuonekana katika hali mbaya. Wakati wa kuandika haya, misimbo ya kutoka ni: 1 Itifaki isiyotumika. Muundo huu wa curl hauna msaada kwa itifaki hii. 2 Imeshindwa kuanzisha. 3 URL mbovu. Sintaksia haikuwa sahihi. Mtumiaji 4 wa URL ameharibika. Sehemu ya mtumiaji ya sintaksia ya URL haikuwa sahihi. 5 Haikuweza kutatua seva mbadala. Sevashi seva mbadala iliyotolewa haikuweza kutatuliwa. 6 Haikuweza kutatua seva pangishi. Kipangishi cha mbali kilichotolewa hakijatatuliwa. 7 Imeshindwa kuunganisha kwa mwenyeji. Jibu 8 la ajabu la seva ya FTP. Seva iliyotuma mkunjo wa data haikuweza kuchanganua. Ufikiaji 9 wa FTP umekataliwa. Seva ilikataza kuingia au ilikataza ufikiaji wa rasilimali fulani au saraka uliyotaka kufikia. Mara nyingi ulijaribu kubadilisha hadi saraka ambayo haipo kwenye seva. . Mtumiaji/nenosiri 10 la FTP si sahihi. Moja au zote mbili hazikukubaliwa na seva. Jibu 11 la ajabu la FTP. Curl hakuweza kuchanganua jibu lililotumwa kwa ombi la PASS. Jibu 12 la ajabu la MTUMIAJI la FTP. Curl haikuweza kuchanganua jibu lililotumwa kwa ombi la USER. 13 FTP jibu la ajabu la PASV, Curl haikuweza kuchanganua jibu lililotumwa kwa ombi la PASV. Umbizo la 14 FTP la ajabu 227. Curl haikuweza kuchanganua mistari 227 ambayo seva ilituma. 15 FTP haiwezi kupata mpangishi. Haikuweza" kutatua IP ya seva pangishi tuliyo nayo katika mstari wa 227. 16 FTP haiwezi kuunganisha tena. Haikuweza kuunganishwa kwa seva pangishi tuliyopata kwenye mstari wa 227. 17 FTP haikuweza kuweka mfumo wa jozi. Haikuweza kubadilisha mbinu ya kuhamisha hadi jozi. 18 Faili ya sehemu. Ni sehemu tu ya faili iliyohamishwa. 19 FTP haikuweza kupakua/kufikia faili iliyotolewa, amri ya RETR (au sawa) haikufaulu. Hitilafu ya kuandika ya FTP 20. Uhamisho uliripotiwa kuwa mbaya na seva. Hitilafu ya nukuu 21 ya FTP. Amri ya nukuu ilileta hitilafu kutoka kwa seva. Ukurasa wa HTTP haujarejeshwa. Url iliyoombwa haikupatikana au ilileta hitilafu nyingine huku msimbo wa hitilafu wa HTTP ukiwa 400 au zaidi. Msimbo huu wa kurejesha huonekana tu ikiwa -f/--kushindwa hutumika. 23 Hitilafu ya kuandika. Curl haikuweza kuandika data kwa mfumo wa faili wa karibu au sawa. 24 Mtumiaji mwenye hitilafu. Jina la mtumiaji limebainishwa vibaya. 25 FTP haikuweza kuhifadhi faili. Seva ilikataa operesheni ya STOR, inayotumika kwa upakiaji wa FTP. 26 Kosa la kusoma. Matatizo mbalimbali ya kusoma. 27 Kutoka kwa kumbukumbu. Ombi la mgao wa kumbukumbu halikufaulu. 28 Muda wa operesheni umeisha. Muda uliowekwa wa kuisha ulifikiwa kulingana na masharti. 29 FTP haikuweza kuweka ASCII. Seva ilirejesha jibu lisilojulikana. 30 FTP PORT imeshindwa. Amri ya PORT imeshindwa. Si seva zote za FTP zinazotumia amri ya PORT, jaribu kuhamisha kwa kutumia PASV badala yake! 31 FTP haikuweza kutumia REST. Amri ya REST imeshindwa. Amri hii inatumika kwa uhamisho wa FTP unaoendelea. 32 FTP haikuweza kutumia SIZE. Amri ya SIZE imeshindwa. Amri ni kiendelezi kwa kielelezo asili cha FTP RFC 959. Hitilafu ya 33 ya HTTP. Masafa ya "amri" haikufanya kazi. 34 hitilafu ya chapisho la HTTP. Hitilafu ya ndani ya kuzalisha baada ya ombi. 35 SSL hitilafu ya kuunganisha. Kupeana mkono kwa SSL kumeshindwa. 36 FTP inaendelea kupakua vibaya. Haikuweza kuendelea na upakuaji ulioghairishwa mapema. 37 FILE haikuweza kusoma faili. Imeshindwa kufungua faili. Ruhusa? 38 LDAP haiwezi kufunga. Uendeshaji wa kuunganisha LDAP haukufaulu. 39 Utafutaji wa LDAP haukufaulu. 40 Maktaba haijapatikana. Maktaba ya LDAP haikupatikana. 41 Kazi haijapatikana. Chaguo za kukokotoa za LDAP zinazohitajika hazikupatikana. 42 Imetolewa kwa kurudisha nyuma simu. Ombi liliiambia curl kukomesha operesheni. 43 Hitilafu ya ndani. Chaguo la kukokotoa liliitwa kwa kigezo kibaya. 44 Hitilafu ya ndani. Shughuli iliitwa kwa mpangilio mbaya. 45 Hitilafu ya kiolesura. Kiolesura maalum kinachotoka hakikuweza kutumika. 46 Nenosiri mbaya limeingizwa. Hitilafu ilionyeshwa wakati nenosiri lilipoingizwa. 47 Maelekezo mengi sana. Wakati wa kufuata uelekezaji kwingine, curl ilifikia kiwango cha juu zaidi. 48 Chaguo la TELNET lisilojulikana limebainishwa. 49 Chaguo la telnet lililoharibika. 51 Cheti cha SSL cha rika la mbali hakikuwa sawa 52 Seva haikujibu chochote, ambacho hapa kinachukuliwa kuwa ni hitilafu. 53 Injini ya crypto ya SSL haijapatikana 54 Haiwezi kuweka injini ya SSL ya crypto kama chaguo-msingi 55 Imeshindwa kutuma data ya mtandao 56 Imeshindwa kupokea data ya mtandao. ilizidi 64 Kiwango cha SSL Iliyoombwa cha FTP imeshindwa 65 Kutuma data kunahitaji kurejeshwa nyuma ambayo imeshindwa 66 Imeshindwa kuanzisha SSL Engine 67 Mtumiaji, nenosiri au sawa na hilo halikukubaliwa na curl imeshindwa kuingia 68 Faili haipatikani kwenye seva ya TFTP 69 Tatizo la ruhusa kwenye seva ya TFTP 70 Nafasi ya diski kwenye seva ya TFTP imetoka 71 Uendeshaji haramu wa TFTP 72 Kitambulisho cha uhamishaji cha TFTP kisichojulikana 73 Faili tayari ipo (TFTP) 74 Hakuna mtumiaji kama huyo (TFTP) 75 Ugeuzaji wa herufi umeshindwa 76 Utendaji wa ubadilishaji wa herufi unahitajika XX Kutaonekana misimbo zaidi ya hitilafu hapa katika matoleo yajayo. . Zilizopo zimekusudiwa kamwe kubadilika.

    Tunawasilisha kwako kozi mpya kutoka kwa timu Codeby- "Upimaji wa kupenya wa Programu za Wavuti kutoka mwanzo." Nadharia ya jumla, utayarishaji wa mazingira ya kufanyia kazi, kufumba na kufumbua tu na uwekaji alama za vidole, Usumbufu unaoendelea, Udhaifu, Unyonyaji Baada ya Unyonyaji, Zana, Uhandisi wa Kijamii na mengi zaidi.


    Chanzo:

    cURL ni kifurushi cha programu kinachojumuisha matumizi ya mstari wa amri na maktaba ya kuhamisha data kwa kutumia syntax ya URL.

    cURL inasaidia itifaki nyingi, ikiwa ni pamoja na DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, Telnet na TFTP.

    Pakia faili tofauti

    Amri ifuatayo itapata yaliyomo kwenye URL na kuionyesha kwenye pato la kawaida (yaani terminal yako).

    Curl https://mi-al.ru/ > mi-al.htm % Jumla % Imepokelewa % Xferd Wastani wa Kasi ya Muda Wakati wa Sasa wa Upakiaji Jumla ya Kasi Iliyotumika Kushoto ​​100 14378 0 14378 0 0 5387 0 --: --:- - 0:00:02 --:--:-- 5387

    Kuhifadhi pato la cURL kwa faili

    • -o(o kesi ya chini) matokeo yatahifadhiwa kwenye faili iliyoainishwa kwenye mstari wa amri
    • -O(herufi kubwa O) jina la faili litachukuliwa kutoka kwa URL na litatumika kuhifadhi data iliyopokelewa.
    $ curl -o mygettext.html http://www.gnu.org/software/gettext/manual/gettext.html

    Ukurasa wa gettext.html sasa utahifadhiwa katika faili inayoitwa 'mygettext.html'. Wakati curl inaendeshwa na -o chaguo, inaonyesha upau wa maendeleo ya upakuaji kama ifuatavyo.

    % Jumla ya % Imepokelewa % Xferd Wastani wa Kasi ya Muda Wakati wa Sasa wa Upakiaji Jumla ya Kasi ya Kushoto Imetumika 66 1215k 66 805k 0 0 33060 0 0:00:37 0:00:24 0:00:13 459000 1k 10k2 0 0 39474 0 0:00:31 0:00:31 --:--:-- 68987

    Unapotumia curl -O (herufi kubwa O), yenyewe itahifadhi yaliyomo kwenye faili inayoitwa ‘gettext.html’ kwenye mashine ya ndani.

    $ curl -O http://www.gnu.org/software/gettext/manual/gettext.html

    Kumbuka: Wakati curl inahitaji kuandika data kwa terminal, inazima upau wa maendeleo ili kuzuia kuchanganyikiwa na data iliyochapishwa. Tunaweza kutumia chaguo za '>'|'-o'|'-O' kuhamisha matokeo hadi kwenye faili.

    Inarejesha faili nyingi mara moja

    Tunaweza kupakua faili nyingi kwa wakati mmoja kwa kubainisha URL zote kwenye mstari wa amri.

    Curl -O URL1 -O URL2

    Amri iliyo hapa chini itapakua index.html na gettext.html na kuzihifadhi kwa majina sawa katika saraka ya sasa.

    Curl -O http://www.gnu.org/software/gettext/manual/html_node/index.html -O http://www.gnu.org/software/gettext/manual/gettext.html

    Tafadhali kumbuka kuwa tunapopakua faili nyingi kutoka kwa seva sawa kama ilivyoonyeshwa hapo juu, curl itajaribu kutumia tena muunganisho.

    Fuata vichwa vya Mahali pa HTTP na -L chaguo

    Kwa chaguo-msingi, CURL haifuati Mahali pa HTTP kwenye vichwa (vielekezo upya). Ukurasa wa wavuti ulioombwa unapohamishwa hadi eneo lingine, jibu linalolingana litatumwa katika vichwa vya Mahali pa HTTP.

    Kwa mfano, mtu anapoandika google.com kwenye kivinjari chake kutoka nchi yake, ataelekezwa kiotomatiki hadi 'google.co.xx'. Hii inafanywa kulingana na kichwa cha Mahali cha HTTP kama inavyoonyeshwa hapa chini.

    Curl https://www.google.com/?gws_rd=ssl 302 Imehamishwa

    302 Imehamishwa

    Hati imehamia hapa.

    Toleo lililo hapo juu linasema kuwa hati iliyoombwa imehamishwa hadi 'http://www.google.co.th/'.

    Unaweza kumwambia curl kufuata uelekezaji kwingine, hii inafanywa kwa kutumia -L chaguo kama inavyoonyeshwa hapa chini. Sasa msimbo wa chanzo wa html utapakuliwa kutoka https://www.google.co.th/?gws_rd=ssl.

    Curl -L https://www.google.com/?gws_rd=ssl

    Kuendelea/Kusasisha upakuaji uliopita

    Kwa kutumia -C chaguo unaweza kuendeleza upakuaji ambao ulisimamishwa kwa sababu fulani. Hii itakuwa muhimu wakati kupakua faili kubwa inashindwa.

    Tukisema '-C -', basi curl itatafuta mahali pa kuanza kupakua kutoka. Tunaweza pia kubainisha '-C<смещение>'. Urekebishaji wa baiti uliobainishwa utarukwa kuanzia mwanzo wa faili chanzo.

    Anzisha upakuaji mkubwa kwa curl na ubonyeze Ctrl-C ili kuusimamisha katikati ya upakuaji.

    $ curl -O http://www.gnu.org/software/gettext/manual/gettext.html ################ 20.1%

    Sindano ilisimamishwa kwa 20.1%. Kwa kutumia “curl -C -” tunaweza kuendelea kupakia kutoka pale tulipoachia. Sasa upakuaji utaendelea kutoka 20.1%.

    Curl -C - -O http://www.gnu.org/software/gettext/manual/gettext.html ################# 21.1%

    Kiwango cha juu cha kiwango cha data

    Unaweza kupunguza kiwango cha uhamishaji data kwa chaguo la -limit-rate. Unaweza kupitisha kasi ya juu kama hoja.

    $ curl --limit-rate 1000B -O http://www.gnu.org/software/gettext/manual/gettext.html

    Amri iliyo hapo juu itapunguza kiwango cha uhamishaji hadi baiti 1000/sekunde. curl inaweza kutumia kasi ya juu katika vilele. Lakini kasi ya wastani itakuwa takriban 1000 byte/sekunde.

    Chini ni upau wa maendeleo kwa amri hapo juu. Unaweza kuona kwamba kasi ya sasa ni karibu 1000 byte.

    % Jumla ya % Imepokea % Xferd Wastani wa Kasi ya Muda Wakati wa Sasa wa Upakiaji Jumla ya Kasi ya Kushoto Imetumika 1 1215k 1 13601 0 0 957 0 0:21:40 0:00:14 0:21:26 999 1 1 1215k 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

    Pakia faili ikiwa tu ilibadilishwa kabla/baada ya muda maalum

    Unaweza kupata faili ambazo zimebadilika baada ya muda fulani kwa kutumia -z chaguo katika curl. Hii itafanya kazi kwa FTP na HTTP.

    $ curl -z 20-Aug-14

    Amri iliyo hapo juu itapakia yy.html ikiwa imerekebishwa hivi majuzi zaidi ya tarehe na wakati uliotolewa.

    Amri iliyo hapo juu itapakia file.html ikiwa imebadilishwa kabla ya tarehe na wakati uliotolewa.

    Andika 'man curl_getdate' ili upate maelezo zaidi kuhusu sintaksia tofauti zinazotumika za semi za tarehe.

    Kupitisha uthibitishaji wa HTTP katika cURL

    Wakati mwingine tovuti huhitaji jina la mtumiaji na nenosiri ili kuona maudhui yao. Kwa kutumia -u chaguo, unaweza kupitisha vitambulisho hivi kutoka kwa cURL hadi kwenye seva ya wavuti kama inavyoonyeshwa hapa chini.

    $ curl -u jina la mtumiaji: nenosiri la URL

    Kumbuka: Kwa chaguo-msingi, curl hutumia uthibitishaji msingi wa HTTP. Tunaweza kubainisha njia zingine za uthibitishaji kwa kutumia -ntlm | -saga.

    Inapakia faili kutoka kwa seva ya FTP

    cURL pia inaweza kutumika kupakua faili kutoka kwa seva za FTP. Ikiwa njia maalum ya FTP ni saraka, basi kwa chaguo-msingi orodha ya faili ndani yake itaonyeshwa.

    $ curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/xss.php

    Amri iliyo hapo juu itapakua faili ya xss.php kutoka kwa seva ya ftp na kuihifadhi kwenye saraka ya ndani.

    $ curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/

    Hapa URL inarejelea saraka. Kwa hivyo, cURL itaorodhesha faili na saraka kwenye URL iliyotolewa.

    Orodhesha/Pakia kwa kutumia masafa.

    CURL inasaidia safu zilizobainishwa katika URLs. Masafa yanapotolewa, faili zinazolingana ndani ya safu hiyo zitapakiwa. Hii itakuwa muhimu wakati wa kupakua vifurushi kutoka kwa tovuti za kioo za FTP.

    $ curl ftp://ftp.uk.debian.org/debian/pool/main//

    Amri hapo juu itaorodhesha vifurushi vyote katika safu a-z kwenye terminal.

    Inapakia faili kwenye seva ya FTP

    Curl pia inaweza kutumika kupakia kwenye seva ya FTP na chaguo la -T.

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

    Amri iliyo hapo juu itapakia faili iitwayo myfile.txt kwenye seva ya FTP. Unaweza pia kupakia faili nyingi kwa wakati mmoja kwa kutumia masafa.

    $ curl -u ftpuser:ftppass -T "(file1,file2)" ftp://ftp.testserver.com

    Kwa hiari tunaweza kutumia "." kupokea kutoka kwa pembejeo ya kawaida na kuipitisha kwa mashine ya mbali.

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

    Amri iliyo hapo juu itapokea pato kutoka kwa mtumiaji kutoka kwa ingizo la kawaida na kuhifadhi yaliyomo kwenye seva ya ftp kama 'myfile_1.txt'.

    Unaweza kubainisha '-T' kwa kila URL, na kila jozi ya faili ya anwani itaamua ni nini cha kupakia wapi

    Maelezo zaidi na chaguo la kitenzi kilichoongezeka na kufuatilia

    Unaweza kujua nini kinaendelea kwa kutumia -v chaguo. Chaguo -v huwezesha hali ya maongezi na itachapisha maelezo.

    Curl -v https://www.google.co.th/?gws_rd=ssl

    Amri hapo juu itatoa zifuatazo

    * URL Iliyoundwa upya kwa: https://www.google.co.th/?gws_rd=ssl * Jina la mpangishaji HAIKUPATIKANA kwenye akiba ya DNS * Inajaribu 27.123.17.49... * Imeunganishwa kwa www.google.co.th (27.123. 17.49) bandari 80 (#0) > PATA / HTTP/1.1 > Ajenti wa Mtumiaji: curl/7.38.0 > Mpangishi: www.google.co.th > Kubali: */* >< 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 ... ... ...

    Ikiwa unahitaji maelezo zaidi, basi unaweza kutumia -trace chaguo. Chaguo la -trace litawezesha utupaji kamili wa data zote zinazoingia/ zinazotoka kwa faili fulani

    => Tuma kichwa, baiti 169 (0xa9) 0000: 47 45 54 20 2f 20 48 54 54 50 2f 31 2e 31 0d 0a GET / HTTP/1.1.. 0010: 55 74 6 6e 0 63 75 72 6c Mtumiaji-Wakala: curl .. 0060: 2e 32 2e 33 2e 34 20 6c 69 62 69 64 6e 2f 31 2e .2.3.4 libidn/1. 0070: 31 35 20 6c 69 62 73 73 68 32 2f 31 2e 32 2e 36 15 libssh2/1.2.6 0080: 0d 0a 48 6f 73 74 77 6 20 7 6 7 Mwenyeji: www.goog 0090 : 6c 65 2e 63 6f 2e 69 6e 0d 0a 41 63 63 65 70 74 le.co.xx..Kubali 00a0: 3a 20 2a 2f 2a 0d 0a 0d 0d 0d 0a = 0 = 0 = HTTP 0 = 0 = 0 = 1 = 0 = HTTP = 0 = 0 = 0 = 0 = 1 = 0 = 0 = 0. , kudhani karibu baada ya mwili<= Recv header, 17 bytes (0x11) 0000: 48 54 54 50 2f 31 2e 30 20 32 30 30 20 4f 4b 0d HTTP/1.0 200 OK. 0010: 0a

    Chaguo za kitenzi na kufuatilia zilizoongezeka zinafaa wakati curl inashindwa kwa sababu fulani na hatujui ni kwa nini.

    Tunapata ufafanuzi wa neno na tafsiri yake kwa kutumia itifaki ya DICT

    Unaweza kutazama orodha ya kamusi zinazopatikana kama hii:

    Curl dict://dict.org/show:db

    Unaweza kupata tafsiri ya neno kutoka Kiingereza hadi Kirusi kama hii:

    Curl dict://dict.org/d:girl:fd-eng-rus 220 pan.alephnull.com dictd 1.12.1/rf kwenye Linux 3.14-1-amd64 <[barua pepe imelindwa]> 250 sawa 150 Ufafanuzi 1 umetolewa 151 "girl" fd-eng-rus "English-Russian FreeDict Dictionary ver. 0.3" girl /gəːl/ girl. 250 sawa 221 kwaheri

    Habari zaidi juu ya DICT inaweza kupatikana kwa kusoma RFC2229.

    Kwa kutumia proksi kupakua faili

    Tunaweza kuwaambia cURL kutumia proksi kwa shughuli fulani, hii inafanywa na -x chaguo. Tunahitaji kuweka seva pangishi ya seva mbadala na mlango.

    $ curl -x proxysever.test.com:3128 https://www.google.co.in/?gws_rd=ssl

    Kutuma barua pepe kwa kutumia itifaki ya SMTP katika curl

    cURL pia inaweza kutumika kutuma barua pepe kwa kutumia itifaki ya SMTP. Unahitaji kutaja kutoka kwa anwani, anwani na anwani ya IP ya seva kama inavyoonyeshwa hapa chini.

    $ curl --mail-from [barua pepe imelindwa]--mail-rcpt [barua pepe imelindwa] smtp://mailserver.com

    Wakati amri imeingizwa, mtumiaji ataanza kusubiri data kuingizwa kwa barua. Unapomaliza kuandika ujumbe wako, andika. (dot) kama mstari wa mwisho na barua pepe itatumwa mara moja.

    Mada: Kujaribu Hii ni barua ya majaribio.

    Mdhamini ni mpatanishi anayeaminika kati ya Washiriki wakati wa muamala.



    Tunawasilisha kwako kozi mpya kutoka kwa timu Codeby- "Upimaji wa kupenya wa Programu za Wavuti kutoka mwanzo." Nadharia ya jumla, utayarishaji wa mazingira ya kufanyia kazi, kufumba na kufumbua tu na uwekaji alama za vidole, Usumbufu unaoendelea, Udhaifu, Unyonyaji Baada ya Unyonyaji, Zana, Uhandisi wa Kijamii na mengi zaidi.


    CURL ni ya nini?

    • cURL ni nzuri kwa kuiga vitendo vya mtumiaji kwenye kivinjari.

    Mfano halisi wa vitendo: unahitaji kuanzisha upya router yako (modem) ili kubadilisha anwani ya IP. Ili kufanya hivyo, unahitaji: ingia kwenye router, nenda kwenye ukurasa wa matengenezo na ubofye kitufe cha "Reboot". Ikiwa hatua hii inahitaji kufanywa mara kadhaa, basi utaratibu lazima urudiwe. Kubali, hutaki kufanya utaratibu huu kwa mikono kila wakati. cURL hukuruhusu kugeuza yote haya. Kwa amri chache tu za cURL unaweza kufikia idhini na kukamilisha kazi kwenye router.

    • cURL ni muhimu kwa kurejesha data kutoka kwa tovuti kwenye mstari wa amri.

    Mfano mwingine wa vitendo: tunataka kutekeleza maonyesho ya takwimu za jumla kwa tovuti kadhaa. Ikiwa tunatumia cURL, basi hii inakuwa kazi ndogo kabisa: kwa kutumia cURL tunathibitisha kwenye huduma ya ukusanyaji wa takwimu (ikiwa inahitajika), kisha (tena kwa kutumia amri za cURL) tunapata kurasa zinazohitajika, kuchanganua data tunayohitaji; utaratibu unarudiwa kwa tovuti zetu zote, basi tunaongeza na kuonyesha matokeo ya mwisho.

    Wale. kesi za kutumia cURL ni halisi kabisa, ingawa, kwa wengi, cURL inahitajika na waandaaji wa programu wanaoitumia kwa programu zao.

    cURL inasaidia itifaki nyingi na njia za uidhinishaji, inaweza kuhamisha faili, inafanya kazi kwa usahihi na vidakuzi, inasaidia vyeti vya SSL, proksi na mengi zaidi.

    cURL katika PHP na mstari wa amri

    Tunaweza kutumia cURL kwa njia kuu mbili: katika hati za PHP na kwenye mstari wa amri.

    Ili kuwezesha cURL katika PHP kwenye seva, unahitaji kufuta mstari katika faili ya php.ini

    Kiendelezi=php_curl.dll

    Na kisha uwashe tena seva.

    Kwenye Linux unahitaji kusakinisha kifurushi cha curl.

    Kwenye Debian, Ubuntu au Linux Mint:

    $ sudo apt-get install curl

    Kwenye Fedora, CentOS au RHEL:

    $ sudo yum kusakinisha curl

    Ili kuona wazi tofauti katika matumizi katika PHP na kwenye mstari wa amri, tutafanya kazi sawa mara mbili: kwanza katika hati ya PHP, na kisha kwenye mstari wa amri. Hebu tujaribu kutochanganyikiwa.

    Inarejesha data kwa kutumia cURL

    Kurejesha data kwa kutumia cURL katika PHP

    Mfano katika PHP:

    Kila kitu ni rahisi sana:

    url_lengwa- anwani ya tovuti ambayo inatuvutia. Baada ya anwani ya tovuti, unaweza kuweka koloni na kuongeza anwani ya bandari (ikiwa bandari ni tofauti na ile ya kawaida).

    curl_init- huanzisha kipindi kipya na kurudisha kifafanuzi, ambacho kwa mfano wetu kimepewa kigezo $ch.

    Kisha tunatekeleza ombi kwa kutumia kitendakazi cha cURL curl_exec, ambayo kielezi hupitishwa kama kigezo.

    Kila kitu ni mantiki sana, lakini wakati hati hii inatekelezwa, yaliyomo kwenye tovuti yataonyeshwa kwenye ukurasa wetu. Lakini vipi ikiwa hatutaki kuonyesha yaliyomo, lakini tunataka kuiandika kwa kutofautisha (kwa usindikaji au uchanganuzi unaofuata).

    Wacha tuongeze kidogo kwenye hati yetu:

    0) ( echo "Curl error: " . curl_error($ch); ) curl_close($ch); ?>

    Tuna mstari curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);.

    curl_settop- huweka chaguzi. Orodha kamili ya chaguzi inaweza kupatikana kwenye ukurasa huu: http://php.net/manual/ru/function.curl-setopt.php

    $response_data = curl_exec($ch);

    Sasa thamani ya hati imepewa tofauti ya $response_data, ambayo shughuli zaidi zinaweza kufanywa. Kwa mfano, unaweza kuonyesha yaliyomo yake.

    Ikiwa (curl_errno($ch) > 0) ( echo "Curl error: " . curl_error($ch); )

    tumikia kwa utatuzi ikiwa makosa yatatokea.

    Kurejesha data kwa kutumia cURL kwenye mstari wa amri

    Kwenye mstari wa amri, chapa tu

    Curl mi-al.ru

    wapi badala ya mi-al.ru- anwani ya tovuti yako.

    Ikiwa unahitaji kunakili data kwa kutofautisha badala ya kuonyesha matokeo kwenye skrini, basi fanya hivi:

    Temp=`curl mi-al.ru`

    Hata hivyo, baadhi ya data bado inaonyeshwa:

    Ili kuwazuia kuonyeshwa, ongeza ufunguo -s:

    Temp=`curl -s mi-al.ru`

    Unaweza kuona kile kilichorekodiwa:

    Mwangwi $temp | kidogo

    Uthibitishaji wa msingi na HTTP

    Uthibitishaji, kwa urahisi, ni kuingiza jina la mtumiaji na nenosiri.

    Uthibitishaji wa kimsingi ni uthibitishaji unaotegemea seva. Kwa hili, faili mbili zinaundwa: .htaccess Na .htpasswd

    Yaliyomo kwenye faili ya .htaccess ni kitu kama hiki

    AuthName "Kwa watumiaji waliojiandikisha pekee!" AuthType Basic inahitaji mtumiaji halali AuthUserFile /home/freeforum.biz/htdocs/.htpassw

    Yaliyomo kwenye faili ya .htpasswd ni kitu kama hiki:

    Mial:CRdiI.ZrZQRRc

    Wale. kuingia na nenosiri hash.

    Unapojaribu kufikia folda iliyolindwa na nenosiri, kivinjari kitaonyesha kitu kama hiki:

    Uthibitishaji wa HTTP ni kesi tunapoingiza kuingia na nenosiri katika fomu kwenye tovuti. Ni uthibitishaji huu ambao hutumiwa wakati wa kuingia kwenye barua, vikao, nk.

    Uthibitishaji wa msingi wa cURL (PHP)

    Kuna tovuti http://62.113.208.29/Update_FED_DAYS/ ambayo inatuhitaji kuingia:

    Wacha tujaribu maandishi yetu ya awali:

    0) ( echo "Curl error: " . curl_error($ch); ) mwingine ( echo $response_data; ) curl_close($ch); ?>

    Ingawa maandishi yanaamini kuwa hakuna makosa, hatupendi matokeo hata kidogo:

    Ongeza mistari miwili:

    Curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); curl_setopt($ch, CURLOPT_USERPWD, "ru-board:ru-board");

    Mstari wa kwanza tunaweka aina ya uthibitishaji - msingi. Mstari wa pili una jina na nenosiri lililotenganishwa na koloni (kwa upande wetu, jina na nenosiri ni sawa - ru-bodi). Ilibadilika kama hii:

    0) ( echo "Curl error: " . curl_error($ch); ) mwingine ( echo $response_data; ) curl_close($ch); ?>

    Uthibitishaji wa msingi wa cURL (kwenye mstari wa amri)

    Kitu kimoja kinaweza kupatikana kwenye mstari wa amri na mstari mmoja:

    Curl -u ru-board:ru-board http://62.113.208.29/Update_FED_DAYS/

    Sikusahau kutaja aina ya uthibitishaji, ni kwamba katika cURL aina ya msingi ya uthibitishaji ndio chaguo msingi.

    Kila kitu kilifanyika haraka sana kwenye mstari wa amri kwamba, kutokana na kuchanganyikiwa, niliandika programu ifuatayo. Anaunganisha kwenye tovuti na kupakua sasisho jipya zaidi:

    Temp=`curl -s -u ru-board:ru-board http://62.113.208.29/Sasisha_FED_DAYS/ | grep -E -o "Sasisha_FED_201(1).(2).(2).7z" | umoja | mkia -n 1`; curl -o $temp -u ru-board:ru-board http://62.113.208.29/Update_FED_DAYS/$temp

    Kwa amri chache zaidi unaweza kuongeza:

    • kufungua kumbukumbu kwenye saraka maalum;
    • kuzindua sasisho za ConsultantPlus (hizi ni sasisho zake);
    • unaweza kuangalia ikiwa sasisho la hivi karibuni linalopatikana tayari limepakuliwa au jipya limeonekana;
    • ongeza yote kwa Cron kwa sasisho za kila siku.

    cURL ya uthibitishaji wa HTTP

    Uthibitishaji wa HTTP cURL katika PHP

    Tunahitaji kujua:

    • anwani ya mahali pa kutuma data ya uthibitishaji
    • njia ya kutuma GET au POST
    • Ingia
    • nenosiri

    Wakati mwingine data hii haitoshi. Hebu tufikirie.

    Anwani ambapo unahitaji kutuma data inaweza kuchukuliwa kutoka kwa fomu ya uthibitishaji. Kwa mfano:

    Tunaangalia mali kitendo. Wale. ukurasa wa mwisho ni login.php. Tunahitaji anwani kamili, kwa mfano hii http://188.35.8.64:8080/login.php

    Hapa tunapata pia njia ya kutuma: mbinu="chapisho"

    Ninajua pia kuingia na nenosiri: admin na qwerasdfzxcv

    Ikiwezekana, hii sio kipanga njia changu (na sijui ni nani), kwa hivyo ikiwa unataka kunikasirisha, basi huna haja ya kufanya chochote kichafu kwenye router hii.

    Wale. Mfuatano hutumwa kwa seva kutoka kwa fomu kwa kutumia mbinu ya POST. Kinadharia, hati yetu ya awali, ambayo tuliongeza mstari mpya, inapaswa kufanya kazi. Wale. uthibitishaji lazima kutokea.

    0) ( echo "Curl error: " . curl_error($ch); ) mwingine ( ) curl_close($ch); ?>

    Mstari mpya katika hati

    curl_setopt($ch, CURLOPT_POSTFIELDS, "LOGIN_USER=admin&LOGIN_PASSWD=qwerasdfzxcv");

    Hapa curl_settop- kazi ambayo tayari inajulikana kwetu kwa kuweka chaguzi za cURL, CURLOPT_POSTFIELDS- hii ndiyo jina la chaguo tunaloweka. CURLOPT_POSTFIELDS ina data zote zinazohamishwa kwa kutumia mbinu ya POST. Naam, mstari yenyewe LOGIN_USER=admin&LOGIN_PASSWD=qwerasdfzxcv- hii ndio data ambayo tunasambaza.

    Ikiwa unachunguza kwa makini fomu, utaona kwamba pia ina mashamba yaliyofichwa. Na data inaweza kuchakatwa au kuongezwa kwa JavaScript.Unaweza kusoma haya yote, lakini napendelea njia rahisi zaidi.

    Ninatumia Wireshark. Mpango huu umeundwa ili kunusa (kuzuia) trafiki. Na ni ndani yake kwamba ni rahisi sana kuona ni nini hasa kinachopitishwa kwenye tovuti.

    Tazama video hii ndogo:

    Wale. na anwani ambapo data huhamishiwa, nilikisia sawa. Lakini kamba iliyopitishwa iligeuka kuwa ngumu zaidi.

    Niliingiza paramu sahihi, na pia nilibadilisha hati ili sio tu kuingia, lakini pia kupokea kitu kutoka kwa kipanga njia:

    0) ( echo "Curl error: " . curl_error($ch); ) mwingine ( $target_url2 = "http://188.35.8.64:8080/bsc_wlan.php"; $ch2 = curl_init($target_url2); curl_setopt($ ch2, CURLOPT_RETURNTRANSFER, 1); $response_data2 = curl_exec($ch2); preg_match("|f.ssid.value = "(.*)";|", $response_data2, $results2); $results2 = str_replace("f .ssid.value = "", "", $matokeo2); $matokeo2 = str_replace("";", "", $matokeo2); mwangwi "jina la mtandao wa Wi-fi: $matokeo2
    "; preg_match("|f_wpa.wpapsk1.value(.*)";|", $response_data2, $matokeo3); $matokeo3 = str_replace("f_wpa.wpapsk1.value", "", $matokeo3); $matokeo3 = str_replace("="", "", $matokeo3); $matokeo3 = str_replace("";", "", $matokeo3); echo "Nenosiri la mtandao wa Wi-Fi: $matokeo3"; ) curl_close($ch); ?>

    Kwa njia, ikiwa mmiliki anasasisha nenosiri (lakini hajasasisha firmware), basi nenosiri jipya linaweza kutazamwa kila wakati kwenye http://188.35.8.64:8080/model/__show_info.php?REQUIRE_FILE=/var/etc /httpsswd

    (Huu ni udhaifu unaojulikana sana katika vipanga njia vya D-Link DIR-300, D-Link DIR-320 na D-Link DAP-1353).

    Uthibitishaji wa HTTP cURL kwenye mstari wa amri

    Tayari tunajua anwani kamili, pamoja na kamba ya kupitishwa. Kwa hivyo ni rahisi:

    Curl --data "ACTION_POST=LOGIN&FILECODE=&VERIFICATION_CODE=&LOGIN_USER=admin&LOGIN_PASSWD=qwerasdfzxcv&login=Log+In+&VER_CODE=" http://188.35.8.64:8080/login.php

    Nadhani kila kitu kiko wazi, kwani tayari tumezingatia tarehe hizi za mwisho. Ikiwa mtu haelewi, waulize kwenye maoni.

    Mfano wa kutumia cURL kupata na kuchanganua data itakuwa seti ifuatayo ya amri:

    Curl -s --data "ACTION_POST=LOGIN&FILECODE=&VERIFICATION_CODE=&LOGIN_USER=admin&LOGIN_PASSWD=qwerasdfzxcv&login=Log+In+&VER_CODE=" http://188.35.8.64:8080/login.php "&dev/dev/ " && echo "jina la mtandao wa Wi-Fi" && curl -s http://188.35.8.64:8080/bsc_wlan.php | grep -E "f.ssid.value = "(.)*";" | sed "s/f.ssid.value = "//" | sed "s/";//" && echo "nenosiri la mtandao wa Wi-Fi" && curl -s http://188.35.8.64:8080/bsc_wlan.php | grep -E "f_wpa.wpapsk1.(.)*";" | sed "s/f_wpa.wpapsk1.value//" | sed "s/";//" | sed "s/="//"

    Kesi ngumu za idhini: AJAX, JQuery, JavaScript, n.k.

    Itakuwa sahihi zaidi kuandika kichwa hiki kama ifuatavyo: Kesi za uidhinishaji "Ngumu". Wale. Weka neno "ngumu" katika alama za nukuu. Wanaonekana kuwa ngumu tu kwa mtazamo wa kwanza, wakati haijulikani wazi: wapi kutuma hutokea, ni majina gani ya shamba, ni nini hasa hutumwa, nk.

    Lakini, kwa kweli, zote zinakuja kwa njia za POST au GET. Ili kuelewa ni nini hasa kinachotumwa, unaweza kuhifadhi ukurasa na fomu kwenye diski yako na kuongeza kazi ili kuonyesha data inayozalishwa kwa kutuma kwa kifungo cha kuwasilisha. Au hata rahisi zaidi - kama mimi, Wireshark.

    Ikiwa data ni sahihi, lakini uthibitishaji haufanyiki, basi unahitaji kuchimba kwa njia zifuatazo:

    • weka kamba sahihi ya kielekezaji
    • weka kamba "sahihi" ya wakala wa mtumiaji.

    Haya yote yanaweza kufanywa kwa kutumia njia za msingi za cURL, lakini sitaingia kwenye hilo. Somo lilikuwa tayari la kutosha, lakini pia nilitaka kuonyesha hila kadhaa na cURL.

    Vidokezo na mbinu cURL

    cURL na kupokea vidakuzi pamoja na CURLOPT_COOKIEJAR

    Nadhani tayari ni wazi kwamba cURL hushughulikia vidakuzi kwa usahihi - huzihifadhi, huzitumia wakati seva inaziomba, nk. Lakini wakati mwingine vidakuzi vinahitaji kuhifadhiwa. Kuna chaguo kwa hii inayoitwa CURLOPT_COOKIEJAR, lakini si rahisi kila wakati kuitumia. Hii ndio hila yetu ya kwanza imejitolea.

    Wakati mwingine, kutokana na jinsi PHP inavyosanidiwa kwenye seva, chaguo kama vile CURLOPT_COOKIEJAR (hukuruhusu kuhifadhi vidakuzi vilivyopokelewa kwenye faili) na CURLOPT_COOKIEFILE (hukuruhusu kutumia vidakuzi kutoka kwenye faili) hazipatikani kwetu. Kwa sababu wanasema kwamba kwa kutumia chaguzi hizi tunaweza kuiba faili yoyote kutoka kwa seva zao. Hapa kuna suluhisho la shida hii:

    1) Hatutumii CURLOPT_FOLLOWLOCATION

    2) Tumia curl_setopt($ch, CURLOPT_HEADER, 1)

    3) Kusanya vidakuzi kutoka kwa kichwa kama hii:

    Preg_match_all("|Set-Cookie: (.*);|U", $content, $matokeo); $cookies = implode(";", $matokeo);

    4) Weka kwa kutumia curl_setopt($ch, CURLOPT_COOKIE, $cookies);

    Ncha ya pili. Tunaweza kugeuka kutoka kwa washambuliaji hadi kuwa wahasiriwa. Ili kuepuka kuwa mwathirika wa shambulio la mtu wa kati, tunafanya hivi.

    Tafadhali, kila mtu, acheni kuweka mipangilio ya CURLOPT_SSL_VERIFYPEER kuwa sivyo au 0. Ikiwa usakinishaji wako wa PHP hauna seti iliyosasishwa ya cheti cha mizizi CA, pakua moja kutoka kwa tovuti ya curl na uihifadhi kwenye seva yako:

    Kisha weka njia katika faili yako ya php.ini, kwa mfano kwenye Windows:

    Curl.cainfo=c:phpcacert.pem

    Kuzima CURLOPT_SSL_VERIFYPEER kunaruhusu shambulio la mtu wa kati (MITM), ambalo hatutaki!

    Kweli, kidokezo cha mwisho kwa leo. Je! unajua kwamba idadi kubwa ya maombi ya curl ya asynchronous inawezekana?

    Kwa hili unaweza kutumia curl_multi_init. Maelezo na nambari ya mfano katika hati rasmi http://php.net/manual/ru/function.curl-multi-init.php

    Kuhusu cURL kwenye mstari wa amri

    Mwanaume curl

    Sehemu ya pili ya somo pia imeandaliwa kwa kusoma kwa Kirusi cURL: "".

    Mdhamini ni mpatanishi anayeaminika kati ya Washiriki wakati wa muamala.


    Maisha ya msanidi wa wavuti yamefunikwa na ugumu. Haipendezi hasa wakati chanzo cha matatizo haya haijulikani. Je, hili ni tatizo la kutuma ombi, au kwa jibu, au kwa maktaba ya watu wengine, au ni hitilafu ya API ya nje? Kuna rundo la gadgets mbalimbali ambayo inaweza kufanya maisha yetu rahisi. Hapa kuna zana za mstari wa amri ambazo mimi binafsi naona kuwa za thamani sana.

    cURL
    cURL ni mpango wa kuhamisha data juu ya itifaki mbalimbali, sawa na wget. Tofauti kuu ni kwamba kwa chaguo-msingi wget huhifadhi kwenye faili, wakati cURL inatoka kwa safu ya amri. Hii inafanya kuwa rahisi sana kutazama maudhui ya tovuti. Kwa mfano, hapa kuna jinsi ya kupata IP yako ya nje ya sasa:

    $ curl ifconfig.me 93.96.141.93
    Chaguo -i(onyesha vyeo) na -I(onyesha vichwa pekee) fanya cURL kuwa zana bora ya kutatua majibu ya HTTP na kuchambua ni nini hasa seva inakutumia:

    $ curl -I habrahabr.ru HTTP/1.1 200 Sawa Seva: nginx Tarehe: Alhamisi, 18 Ago 2011 14:15:36 GMT Content-Type: text/html; charset=utf-8 Muunganisho: endelea kuishi Weka-hai: timeout=25
    Kigezo -L Pia ni muhimu, inalazimisha cURL kufuata maelekezo kwingine kiotomatiki. cURL inasaidia uthibitishaji wa HTTP, vidakuzi, kuelekeza kupitia proksi za HTTP, mipangilio ya mwongozo kwenye vichwa, na mengi zaidi.

    Kuzingirwa
    Kuzingirwa ni chombo cha kupima mzigo. Kwa kuongeza, ina chaguo rahisi -g, ambayo inafanana sana na curl -iL, lakini kwa kuongeza inakuonyesha pia vichwa vya ombi vya http. Huu hapa ni mfano kutoka google.com (baadhi ya vichwa vimeondolewa kwa ufupi):

    $ kuzingirwa -g www.google.com GET / HTTP/1.1 Mwenyeji: www.google.com User-Agent: JoeDog/1.00 (X11; I; Siege 2.70) Muunganisho: funga HTTP/1.1 302 Mahali palipopatikana: http:// www.google.co.uk/ Content-Type: text/html; charset=UTF-8 Seva: gws Urefu wa Maudhui: 221 Muunganisho: funga GET / HTTP/1.1 Mpangishi: www.google.co.uk User-Agent: JoeDog/1.00 (X11; I; Siege 2.70) Muunganisho: funga HTTP/ 1.1 200 Sawa Aina ya Maudhui: maandishi/html; charset=ISO-8859-1 X-XSS-Protection: 1; mode=block Muunganisho: funga
    Lakini kile Siege ni nzuri sana ni upimaji wa mzigo. Kama alama ya Apache ab, inaweza kutuma maombi mengi sambamba kwenye tovuti na kuona jinsi inavyoshughulikia trafiki. Mfano ufuatao unaonyesha jinsi tunavyojaribu Google kwa hoja 20 kwa sekunde 30 na kisha kuchapisha matokeo:

    $ kuzingirwa -c20 www.google.co.uk -b -t30s ... Kuondoa kuzingirwa kwa seva... kumekamilika. Miamala: Miamala 1400 Upatikanaji: 100.00 % Muda uliopita: sekunde 29.22 Data imehamishwa: 13.32 MB Muda wa kujibu: sekunde 0.41 Kiwango cha ununuzi: 47.91 trans/sec Mapitio: 0.46 MB/sekunde5 Muamala mrefu:04 Utumizi wa muda mrefu:00 Umekamilika 19. shughuli est: 4.08 Muamala mfupi zaidi: 0.08
    Moja ya vipengele muhimu zaidi vya Kuzingirwa ni kwamba inaweza kufanya kazi sio tu na anwani moja, lakini pia na orodha ya URL kutoka kwa faili. Hii ni nzuri kwa majaribio ya upakiaji kwa sababu unaweza kuiga trafiki halisi ya tovuti badala ya kugonga URL sawa tena na tena. Kwa mfano, hapa kuna jinsi ya kutumia Siege kupakia seva kwa kutumia anwani kutoka kwa logi yako ya Apache:

    $ cut -d " " -f7 /var/log/apache2/access.log > urls.txt $ siege -c -b -f urls.txt
    Ngrep
    Kwa uchanganuzi mkubwa wa trafiki, kuna Wireshark na maelfu ya mipangilio, vichungi na usanidi. Pia kuna toleo la mstari wa amri tshark. Lakini kwa kazi rahisi, ninaona utendaji wa Wireshark kuwa wa ziada. Kwa hivyo isipokuwa ninahitaji silaha yenye nguvu, mimi hutumia . Inakuruhusu kufanya vivyo hivyo na pakiti za mtandao kama grep hufanya na faili.

    Kwa trafiki ya wavuti, karibu kila wakati utataka kutumia parameta -W kuhifadhi umbizo la kamba pamoja na chaguo -q, ambayo huficha habari isiyohitajika kuhusu pakiti zisizolingana. Hapa kuna amri ya mfano ambayo inakata pakiti zote na GET au POST amri:

    Ngrep -q -W byline "^(GET|POST) .*"
    Unaweza kuongeza kichujio cha ziada cha pakiti, kwa mfano, na mwenyeji fulani, anwani ya IP au bandari. Hapa kuna kichujio cha trafiki yote kwenda na kutoka google.com, port 80, ambayo ina neno "tafuta".

    Ngrep -q -W byline "tafuta" mwenyeji www.google.com na port 80

    cURL ni zana maalum ambayo imeundwa kuhamisha faili na data kwa kutumia syntax ya URL. Teknolojia hii inasaidia itifaki nyingi kama vile HTTP, FTP, TELNET na zingine nyingi. cURL iliundwa awali kuwa zana ya safu ya amri. Kwa bahati kwetu, maktaba ya cURL inasaidiwa na lugha ya programu ya PHP. Katika makala hii tutaangalia baadhi ya kazi za juu za cURL, na pia kugusa matumizi ya vitendo ya ujuzi uliopatikana kwa kutumia PHP.

    Kwa nini cURL?

    Kwa kweli, kuna njia chache mbadala za sampuli za yaliyomo kwenye ukurasa wa wavuti. Katika visa vingi, haswa kwa sababu ya uvivu, nilitumia kazi rahisi za PHP badala ya cURL:

    $ content = file_get_contents("http://www.nettuts.com"); // au $lines = faili ("http://www.nettuts.com"); // au faili ya kusoma("http://www.nettuts.com");

    Walakini, vipengele hivi havina unyumbufu wowote na vina idadi kubwa ya mapungufu katika suala la kushughulikia makosa, nk. Zaidi ya hayo, kuna kazi fulani ambazo huwezi kukamilisha kwa vipengele hivi vya kawaida: mwingiliano wa vidakuzi, uthibitishaji, uwasilishaji wa fomu, upakiaji wa faili, n.k.

    cURL ni maktaba yenye nguvu ambayo inasaidia itifaki nyingi tofauti, chaguo, na hutoa maelezo ya kina kuhusu maombi ya URL.

    Muundo wa msingi

    • Uanzishaji
    • Ugawaji wa vigezo
    • Utekelezaji na kuleta matokeo
    • Kufungua kumbukumbu

    // 1. uanzishaji $ch = curl_init(); // 2. bainisha vigezo, ikijumuisha url curl_setopt($ch, CURLOPT_URL, "http://www.nettuts.com"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 0); // 3. pata HTML kama matokeo $output = curl_exec($ch); // 4. funga uunganisho curl_close($ch);

    Hatua #2 (hiyo ni, kupiga curl_setopt()) itajadiliwa zaidi katika nakala hii kuliko hatua zingine zote, kwa sababu. Katika hatua hii, mambo yote ya kuvutia zaidi na muhimu ambayo unahitaji kujua hutokea. Katika cURL kuna idadi kubwa ya chaguo tofauti ambazo lazima zibainishwe ili kuweza kusanidi ombi la URL kwa njia makini zaidi. Hatutazingatia orodha nzima, lakini tutazingatia tu kile ninachoona kuwa muhimu na muhimu kwa somo hili. Unaweza kusoma kila kitu kingine mwenyewe ikiwa mada hii inakuvutia.

    Hitilafu katika Kukagua

    Kwa kuongezea, unaweza pia kutumia taarifa za masharti ili kujaribu ikiwa operesheni imekamilika kwa mafanikio:

    // ... $output = curl_exec($ch); ikiwa ($output === FALSE) ( echo "cURL Error: " . curl_error($ch); ) // ...

    Hapa nakuomba utambue jambo muhimu sana: lazima tutumie "=== uongo" kwa kulinganisha, badala ya "== uongo". Kwa wale ambao hawajui, hii itatusaidia kutofautisha kati ya matokeo tupu na thamani ya boolean ya uwongo, ambayo itaonyesha hitilafu.

    Kupokea taarifa

    Hatua nyingine ya ziada ni kupata data kuhusu ombi la cURL baada ya kutekelezwa.

    // ... curl_exec($ch); Maelezo ya $ = curl_getinfo($ch); echo "Ilichukua". $info["total_time"] . "sekunde kwa url". $info["url"]; //...

    Safu iliyorejeshwa ina habari ifuatayo:

    • "url"
    • "aina_ya_maudhui"
    • "http_code"
    • "ukubwa_wa_kichwa"
    • "omba_saizi"
    • "wakati wa faili"
    • "ssl_verify_result"
    • "elekeza_hesabu upya"
    • "jumla_muda"
    • "namelookup_time"
    • "connect_time"
    • "pretransfer_time"
    • "pakia_ya ukubwa"
    • "size_download"
    • "kasi_kupakua"
    • "kupakia_kasi"
    • "download_content_length"
    • "upload_content_length"
    • "starttransfer_time"
    • "elekeza_wakati"

    Ugunduzi wa kuelekeza upya kulingana na kivinjari

    Katika mfano huu wa kwanza, tutaandika msimbo ambao unaweza kutambua uelekezaji upya wa URL kulingana na mipangilio mbalimbali ya kivinjari. Kwa mfano, baadhi ya tovuti huelekeza upya vivinjari vya simu ya mkononi, au kifaa kingine chochote.

    Tutatumia chaguo la CURLOPT_HTTPHEADER kufafanua vichwa vyetu vya HTTP vinavyotoka, ikijumuisha jina la kivinjari cha mtumiaji na lugha zinazopatikana. Hatimaye tutaweza kubainisha ni tovuti zipi zinazotuelekeza kwenye URL tofauti.

    // jaribu URL $urls = safu("http://www.cnn.com", "http://www.mozilla.com", "http://www.facebook.com"); // vivinjari vya majaribio $browsers = safu("standard" => safu ("user_agent" => "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5 .6 (.NET CLR 3.5.30729)", "language" => "en-us,en;q=0.5"), "iphone" => safu ("user_agent" => "Mozilla/5.0 (iPhone; U ; CPU kama Mac OS X; sw) AppleWebKit/420+ (KHTML, kama Gecko) Version/3.0 Mobile/1A537a Safari/419.3", "language" => "en"), "french" => safu ("wakala_wa_mtumiaji" => "Mozilla/4.0 (pambamba; MSIE 7.0; Windows NT 5.1; GTB6; .NET CLR 2.0.50727)", "language" => "fr,fr-FR;q=0.5")); foreach ($urls as $url) ( echo "URL: $url\n"; foreach ($browsers as $test_name => $browser) ( $ch = curl_init(); // bainisha url curl_setopt($ch, CURLOPT_URL , $url); // bainisha vichwa vya kivinjari curl_setopt($ch, CURLOPT_HTTPHEADER, array("User-Agent: ($browser["user_agent"])", "Accept-Language: ($browser["language"] )" )); // hatuhitaji yaliyomo kwenye ukurasa curl_setopt($ch, CURLOPT_NOBODY, 1); // tunahitaji kupata vichwa vya HTTP curl_setopt($ch, CURLOPT_HEADER, 1); // rudisha matokeo badala yake of output curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $output = curl_exec($ch); curl_close($ch); // je, kulikuwa na uelekezaji upya wa HTTP? ikiwa (preg_match("!Mahali: (.*)!", $output, $matches)) ( echo " $test_name: inaelekeza kwa $matches\n"; ) vinginevyo ( echo "$test_name: no redirection\n"; ) ) echo "\n\n"; )

    Kwanza, tunabainisha orodha ya URL za tovuti ambazo tutaangalia. Kwa usahihi zaidi, tunahitaji anwani za tovuti hizi. Kisha tunahitaji kufafanua mipangilio ya kivinjari ili kujaribu kila moja ya URL hizi. Baada ya hayo, tutatumia kitanzi ambacho tutapitia matokeo yote yaliyopatikana.

    Ujanja tunaotumia katika mfano huu kuweka mipangilio ya cURL utaturuhusu kupata sio maudhui ya ukurasa, lakini vichwa vya HTTP pekee (zilizohifadhiwa katika $output). Ifuatayo, kwa kutumia regex rahisi, tunaweza kuamua ikiwa kamba "Mahali:" ilikuwepo kwenye vichwa vilivyopokelewa.

    Unapoendesha nambari hii, unapaswa kupata kitu kama hiki:

    Kuunda ombi la POST kwa URL maalum

    Wakati wa kuunda ombi la GET, data iliyotumwa inaweza kupitishwa kwa URL kupitia "kamba ya hoja". Kwa mfano, unapotafuta kwenye Google, neno la utafutaji linawekwa kwenye upau wa anwani wa URL mpya:

    Http://www.google.com/search?q=ruseller

    Huhitaji kutumia cURL kuiga ombi hili. Ikiwa uvivu utakushinda kabisa, tumia kitendakazi cha "file_get_contents()" ili kupata matokeo.

    Lakini jambo ni kwamba baadhi ya fomu za HTML hutuma maombi ya POST. Data ya fomu hizi husafirishwa kupitia mwili wa ombi la HTTP, na si kama katika kesi ya awali. Kwa mfano, ikiwa ulijaza fomu kwenye jukwaa na kubofya kitufe cha kutafuta, basi kuna uwezekano mkubwa kwamba ombi la POST litafanywa:

    Http://codeigniter.com/forums/do_search/

    Tunaweza kuandika hati ya PHP ambayo inaweza kuiga aina hii ya ombi la URL. Kwanza hebu tuunde faili rahisi ya kukubali na kuonyesha data ya POST. Hebu tuite post_output.php:

    Chapisha_r($_POST);

    Kisha tunaunda hati ya PHP kufanya ombi la cURL:

    $url = "http://localhost/post_output.php"; $post_data = safu ("foo" => "bar", "query" => "Nettuts", "action" => "Wasilisha"); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // zinaonyesha kuwa tuna ombi la POST curl_setopt($ch, CURLOPT_POST, 1); // ongeza vigezo curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); $output = curl_exec($ch); curl_close($ch); echo pato la $;

    Unapoendesha hati hii unapaswa kupata matokeo kama haya:

    Kwa hivyo, ombi la POST lilitumwa kwa hati ya post_output.php, ambayo nayo hutoa safu ya superglobal $_POST, maudhui ambayo tulipata kwa kutumia cURL.

    Inapakia faili

    Kwanza, hebu tuunde faili ili kuizalisha na kuituma kwa upload_output.php faili:

    Chapisha_r($_FILES);

    Na hapa kuna nambari ya maandishi ambayo hufanya utendakazi hapo juu:

    $url = "http://localhost/upload_output.php"; $post_data = safu ("foo" => "bar", // faili ya kupakia "upload" => "@C:/wamp/www/test.zip"); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); $output = curl_exec($ch); curl_close($ch); echo pato la $;

    Unapotaka kupakia faili, unachotakiwa kufanya ni kuipitisha kama kibadilishaji cha kawaida cha chapisho, kinachotanguliwa na alama ya @. Unapoendesha hati iliyoandikwa, utapata matokeo yafuatayo:

    CURL nyingi

    Mojawapo ya nguvu kuu za cURL ni uwezo wa kuunda vidhibiti "nyingi" vya cURL. Hii hukuruhusu kufungua muunganisho kwa URL nyingi kwa wakati mmoja na kwa usawa.

    Katika toleo la classic la ombi la cURL, utekelezaji wa hati umesimamishwa, na inasubiri kukamilika kwa ombi la ombi la URL, baada ya hapo hati inaweza kuendelea. Ikiwa unakusudia kuingiliana na rundo zima la URL, hii itasababisha uwekezaji mkubwa wa wakati, kwani katika toleo la kawaida unaweza kufanya kazi na URL moja tu kwa wakati mmoja. Walakini, tunaweza kurekebisha hali hii kwa kutumia washughulikiaji maalum.

    Wacha tuangalie nambari ya mfano niliyochukua kutoka kwa php.net:

    // unda rasilimali kadhaa za cURL $ch1 = curl_init(); $ch2 = curl_init(); // bainisha URL na vigezo vingine curl_setopt($ch1, CURLOPT_URL, "http://lxr.php.net/"); curl_setopt($ch1, CURLOPT_HEADER, 0); curl_setopt($ch2, CURLOPT_URL, "http://www.php.net/"); curl_setopt($ch2, CURLOPT_HEADER, 0); //unda kidhibiti cha cURL nyingi $mh = curl_multi_init(); //ongeza vishikilizi kadhaa curl_multi_add_handle($mh,$ch1); curl_multi_add_handle($mh,$ch2); $ active = null; //execute fanya ( $mrc ​​​​= curl_multi_exec($mh, $active); ) huku ($mrc == CURLM_CALL_MULTI_PERFORM); wakati ($active && $mrc ​​​​== CURLM_OK) ( if (curl_multi_select($mh) != -1) ( fanya ( $mrc ​​​​= curl_multi_exec($mh, $active); ) wakati ($mrc == CURLM_CALL_MULTI_PERFORM); ) ) //closing curl_multi_remove_handle($mh, $ch1); curl_multi_remove_handle($mh, $ch2); curl_multi_close($mh);

    Wazo ni kwamba unaweza kutumia vidhibiti vingi vya cURL. Kwa kutumia kitanzi rahisi, unaweza kufuatilia maombi ambayo bado hayajakamilika.

    Kuna vitanzi viwili kuu katika mfano huu. Kitanzi cha kwanza cha kufanya wakati huita curl_multi_exec(). Chaguo hili la kukokotoa halizuiliki. Huendesha haraka iwezekanavyo na kurudisha hali ya ombi. Alimradi thamani iliyorejeshwa ni 'CURLM_CALL_MULTI_PERFORM' ya mara kwa mara, hii inamaanisha kuwa kazi bado haijakamilika (kwa mfano, vichwa vya http kwa sasa vinatumwa kwa URL); Ndiyo maana tunaendelea kuangalia thamani hii ya kurejesha hadi tupate matokeo tofauti.

    Katika kitanzi kinachofuata tunaangalia hali wakati variable $ active = "kweli". Ni parameta ya pili kwa kazi ya curl_multi_exec(). Thamani ya tofauti hii itakuwa "kweli" mradi tu mabadiliko yoyote yaliyopo yanatumika. Ifuatayo tunaita kazi ya curl_multi_select(). Utekelezaji wake "umezuiwa" wakati kuna angalau muunganisho mmoja unaotumika, hadi jibu lipokewe. Hili linapotokea, tunarudi kwenye kitanzi kikuu ili kuendelea kutekeleza hoja.

    Sasa hebu tutumie ujuzi huu kwa mfano ambao utakuwa muhimu sana kwa idadi kubwa ya watu.

    Kuangalia viungo katika WordPress

    Hebu fikiria blogu iliyo na idadi kubwa ya machapisho na ujumbe, ambayo kila moja ina viungo vya rasilimali za nje za mtandao. Baadhi ya viungo hivi huenda tayari vimekufa kwa sababu mbalimbali. Ukurasa unaweza kuwa umefutwa au tovuti haifanyi kazi kabisa.

    Tutaunda hati ambayo itachambua viungo vyote na kupata tovuti zisizopakia na kurasa 404, na kisha kutupa ripoti ya kina.

    Acha niseme mara moja kwamba hii sio mfano wa kuunda programu-jalizi ya WordPress. Hii ni uwanja mzuri wa majaribio kwa majaribio yetu.

    Hebu hatimaye tuanze. Kwanza tunahitaji kupata viungo vyote kutoka kwa hifadhidata:

    // usanidi $db_host = "localhost"; $db_user = "mzizi"; $db_pass = ""; $db_name = "wordpress"; $excluded_domains = safu("localhost", "www.mydomain.com"); $max_connections = 10; // uanzishaji wa vigezo $url_list = safu(); $working_urls = safu(); $dead_urls = safu(); $not_found_urls = safu(); $ active = null; // unganisha kwenye MySQL ikiwa (!mysql_connect($db_host, $db_user, $db_pass)) ( die("Haikuweza kuunganisha: " . mysql_error()); ) ikiwa (!mysql_select_db($db_name)) ( die("Ingeweza usichague db: " . mysql_error()); ) // chagua machapisho yote yaliyochapishwa ambayo yana viungo $q = "CHAGUA post_content KUTOKA kwa wp_posts WAPI post_content KAMA "%href=%" NA post_status = "publish" AND post_type = "post " "; $r = mysql_query($q) au kufa(mysql_error()); wakati ($d = mysql_fetch_assoc($r)) ( // tafuta viungo kwa kutumia misemo ya kawaida ikiwa (preg_match_all("!href=\"(.*?)\"!", $d["post_content"], $ mechi) ) ( foreach ($matches as $url) ( $tmp = parse_url($url); ikiwa (in_array($tmp["host"], $excluded_domains)) (endelea; ) $url_list = $url; ) ) / / ondoa nakala $url_list = array_values(array_unique($url_list)); ikiwa (!$url_list) ( die("Hakuna URL ya kuangalia"); )

    Kwanza, tunatoa data ya usanidi kwa mwingiliano na hifadhidata, kisha tunaandika orodha ya vikoa ambavyo hazitashiriki katika hundi ($excluded_domains). Pia tunafafanua nambari inayoonyesha idadi ya upeo wa miunganisho ya wakati mmoja ambayo tutatumia kwenye hati yetu ($max_connections). Kisha tunajiunga na hifadhidata, chagua machapisho ambayo yana viungo, na kuyakusanya katika safu ($url_list).

    Nambari ifuatayo ni ngumu kidogo, kwa hivyo pitia kutoka mwanzo hadi mwisho:

    // 1. kishughulikiaji nyingi $mh = curl_multi_init(); // 2. ongeza seti ya URL za ($i = 0; $i< $max_connections; $i++) { add_url_to_multi_handle($mh, $url_list); } // 3. инициализация выполнения do { $mrc = curl_multi_exec($mh, $active); } while ($mrc == CURLM_CALL_MULTI_PERFORM); // 4. основной цикл while ($active && $mrc == CURLM_OK) { // 5. если всё прошло успешно if (curl_multi_select($mh) != -1) { // 6. делаем дело do { $mrc = curl_multi_exec($mh, $active); } while ($mrc == CURLM_CALL_MULTI_PERFORM); // 7. если есть инфа? if ($mhinfo = curl_multi_info_read($mh)) { // это значит, что запрос завершился // 8. извлекаем инфу $chinfo = curl_getinfo($mhinfo["handle"]); // 9. мёртвая ссылка? if (!$chinfo["http_code"]) { $dead_urls = $chinfo["url"]; // 10. 404? } else if ($chinfo["http_code"] == 404) { $not_found_urls = $chinfo["url"]; // 11. рабочая } else { $working_urls = $chinfo["url"]; } // 12. чистим за собой curl_multi_remove_handle($mh, $mhinfo["handle"]); // в случае зацикливания, закомментируйте данный вызов curl_close($mhinfo["handle"]); // 13. добавляем новый url и продолжаем работу if (add_url_to_multi_handle($mh, $url_list)) { do { $mrc = curl_multi_exec($mh, $active); } while ($mrc == CURLM_CALL_MULTI_PERFORM); } } } } // 14. завершение curl_multi_close($mh); echo "==Dead URLs==\n"; echo implode("\n",$dead_urls) . "\n\n"; echo "==404 URLs==\n"; echo implode("\n",$not_found_urls) . "\n\n"; echo "==Working URLs==\n"; echo implode("\n",$working_urls); function add_url_to_multi_handle($mh, $url_list) { static $index = 0; // если у нас есть ещё url, которые нужно достать if ($url_list[$index]) { // новый curl обработчик $ch = curl_init(); // указываем url curl_setopt($ch, CURLOPT_URL, $url_list[$index]); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_NOBODY, 1); curl_multi_add_handle($mh, $ch); // переходим на следующий url $index++; return true; } else { // добавление новых URL завершено return false; } }

    Hapa nitajaribu kuelezea kila kitu kwa undani. Nambari zilizo kwenye orodha zinalingana na nambari kwenye maoni.

    1. 1. Unda kidhibiti nyingi;
    2. 2. Tutaandika kitendakazi cha add_url_to_multi_handle() baadaye kidogo. Kila inapoitwa, usindikaji wa url mpya utaanza. Hapo awali, tunaongeza URL 10 ($max_connections);
    3. 3. Ili kuanza, lazima tuendeshe kazi ya curl_multi_exec(). Alimradi inarejesha CURLM_CALL_MULTI_PERFORM, bado tuna jambo la kufanya. Tunahitaji hii hasa ili kuunda miunganisho;
    4. 4. Inayofuata inakuja kitanzi kikuu, ambacho kitafanya kazi kwa muda mrefu kama tuna angalau uhusiano mmoja wa kazi;
    5. 5. curl_multi_select() hutegemea utafutaji wa URL ukamilike;
    6. 6. Kwa mara nyingine tena, tunahitaji kupata cURL kufanya kazi fulani, yaani kuleta data ya majibu ya kurudisha;
    7. 7. Taarifa imethibitishwa hapa. Kama matokeo ya kutekeleza ombi, safu itarejeshwa;
    8. 8. Safu iliyorejeshwa ina kidhibiti cha cURL. Tutaitumia kuchagua taarifa kuhusu ombi tofauti la cURL;
    9. 9. Ikiwa kiungo kilikuwa kimekufa, au hati imepitwa na wakati, basi hatupaswi kutafuta msimbo wowote wa http;
    10. 10. Ikiwa kiungo kiliturudishia ukurasa wa 404, basi msimbo wa http utakuwa na thamani 404;
    11. 11. Vinginevyo, tuna kiungo cha kufanya kazi mbele yetu. (Unaweza kuongeza hundi za ziada kwa msimbo wa makosa 500, nk ...);
    12. 12. Kisha tunaondoa kidhibiti cha cURL kwa sababu hatuhitaji tena;
    13. 13. Sasa tunaweza kuongeza url nyingine na kuendesha kila kitu tulichozungumza hapo awali;
    14. 14. Katika hatua hii, script inakamilisha kazi yake. Tunaweza kuondoa kila kitu tusichohitaji na kutoa ripoti;
    15. 15. Hatimaye, tutaandika kitendakazi ambacho kitaongeza url kwenye kidhibiti. Tofauti tuli ya $index itaongezwa kila wakati chaguo hili la kukokotoa linapoitwa.

    Nilitumia maandishi haya kwenye blogi yangu (na viungo vingine vilivyovunjika ambavyo niliongeza kwa makusudi ili kuijaribu) na nikapata matokeo yafuatayo:

    Kwa upande wangu, hati ilichukua chini ya sekunde 2 kutambaa kupitia URL 40. Ongezeko la utendaji ni muhimu wakati wa kufanya kazi na URL nyingi zaidi. Ukifungua miunganisho kumi kwa wakati mmoja, hati inaweza kutekeleza mara kumi haraka.

    Maneno machache kuhusu chaguo zingine muhimu za cURL

    Uthibitishaji wa HTTP

    Ikiwa URL ina uthibitishaji wa HTTP, basi unaweza kutumia hati ifuatayo kwa urahisi:

    $url = "http://www.somesite.com/members/"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // taja jina la mtumiaji na nenosiri curl_setopt($ch, CURLOPT_USERPWD, "jina langu la mtumiaji:nenosiri langu"); // ikiwa uelekezaji kwingine unaruhusiwa curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // kisha uhifadhi data yetu katika cURL curl_setopt($ch, CURLOPT_UNRESTRICTED_AUTH, 1); $output = curl_exec($ch); curl_close($ch);

    Upakiaji wa FTP

    PHP pia ina maktaba ya kufanya kazi na FTP, lakini hakuna kinachokuzuia kutumia zana za cURL hapa:

    // fungua faili $file = fopen("/path/to/file", "r"); // url inapaswa kuwa na maudhui yafuatayo $url = "ftp://username: [barua pepe imelindwa]:21/path/to/new/file"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_UPLOAD, 1); curl_setopt($ch, CURLOPT_INFILE, $fp); curl_setopt($ch, CURLOPT_INFILESIZE, saizi ya faili("/njia/to/faili")); // bainisha ASCII mod curl_setopt($ch, CURLOPT_FTPASCII, 1); $output = curl_exec ($ ch); curl_close($ch);

    Kwa kutumia Wakala

    Unaweza kutekeleza ombi lako la URL kupitia proksi:

    $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,"http://www.example.com"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // taja anwani curl_setopt($ch, CURLOPT_PROXY, "11.11.11.11:8080"); // ikiwa unahitaji kutoa jina la mtumiaji na nenosiri curl_setopt($ch, CURLOPT_PROXYUSERPWD,"user:pass"); $output = curl_exec($ch); curl_close($ch);

    Vitendaji vya kupiga simu

    Pia inawezekana kubainisha chaguo la kukokotoa ambalo litaanzishwa hata kabla ya ombi la cURL kukamilika. Kwa mfano, wakati maudhui ya majibu yanapakia, unaweza kuanza kutumia data bila kusubiri ipakie kikamilifu.

    $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,"http://net.tutsplus.com"); curl_setopt($ch, CURLOPT_WRITEFUNCTION,"progress_function"); curl_exec($ch); curl_close($ch); kazi progress_function($ch,$str) ( echo $str; return strlen($str); )

    Chaguo la kukokotoa kama hili LAZIMA lirudishe urefu wa mfuatano, ambao ni sharti.

    Hitimisho

    Leo tumejifunza jinsi unavyoweza kutumia maktaba ya cURL kwa madhumuni yako ya ubinafsi. Natumaini ulifurahia makala hii.

    Asante! Kuwa na siku njema!