Curl_setopt – Nastavuje možnosť pre reláciu CURL. PHP CURL - funkcie a príklady použitia Curl z príkazového riadku
Prečítajte si tiež
CURL je nástroj príkazového riadka na prijímanie alebo odosielanie údajov pomocou syntaxe URL.
Ak pracujete v helpdesk, mali by ste byť schopní používať príkazy cURL na odstraňovanie problémov s webovými aplikáciami. cURL je multiplatformový nástroj pre Windows, MAC a UNIX.
Nižšie sú uvedené niektoré bežne používané príklady syntaxe.
1. Skontrolujte, či je možné pripojiť adresu URL
Ak používate systém UNIX a pokúšate sa pripojiť k externej adrese URL, najskôr skontrolujte, či máte prístup k prostriedku cez curl . Ak to chcete urobiť, použite nasledujúci príkaz:
# curl yoururl.com
2. Uloženie URL/URI výstupu do súboru
# curl yoururl.com > yoururl.html
Napríklad:
# curl 74.125.68.100 >/tmp/google.html
Vyššie uvedený príklad uloží všetok obsah z hostiteľa 74.125.68.100 do súboru /tmp/google.html.
3. Zobrazte hlavičku požiadavky a odpovede
Ak sa chcete uistiť, že dostanete očakávanú hlavičku požiadavky a odpovede, použite nasledujúci príkaz:
# curl -v yoururl.com
Napríklad:
# curl -v 74.125.68.100 * O pripojení () k portu 74.125.68.100 80 (#0) * Skúšam 74.125.68.100... * Pripojené k portu 74.125.68.100 (74.125.68.10) > 74.125.68.10 / HTTP/1.1 > User-Agent: curl/7.29.0 >Hostiteľ: 74.125.68.100 >Prijať: */* >< HTTP/1.1 200 OK
Ak chcete vedieť, ako dlho trvá sťahovanie pri určitej rýchlosti, použite nasledujúci príkaz: # curl --limit-rate 2000B Napríklad: # curl --limit-rate 2000B 74.125.68.100 Ak potrebujete skontrolovať, či je možné použiť proxy server, použite nasledujúcu syntax: # curl --proxyyourproxy:port http://yoururl.com Ak chcete vyriešiť konkrétny problém, môžete použiť Curl na vloženie údajov do hlavičky. Zvážte nasledujúci príklad žiadosti s typom obsahu: # curl --header "Typ obsahu: application/json" http://yoururl.com Žiadame curl, aby odovzdal Content-Type ako application/json v hlavičke požiadavky. K požiadavke môžete pridať hlavičku pomocou syntaxe -header. # curl --header “X-CustomHeader: GeekFlare” http://yoururl.com Napríklad: # curl -v --header "X-CustomHeader: GeekFlare" 74.125.68 * O pripojení() k portu 74.125.68.100 80 (#0) * Pokus o 74.125.68.100... * Pripojené k 74.125.648.10 68.100) port 80 (#0) > GET / HTTP/1.1 > User-Agent: curl/7.29.0 >Hostiteľ: 74.125.68.100 >Prijať: */* > X-CustomHeader: GeekFlare >< HTTP/1.1 200 OK
Ak chcete rýchlo skontrolovať hlavičku odpovede, môžete na to použiť nasledujúcu syntax. # curl --head http://yoururl.com # curl -I 74.125.68.100 HTTP/1.1 200 OK Dátum: Nedeľa, 18. január 2015 08:31:22 GMT Expires: -1 Cache-Control: private, max-age=0 Content-Type: text/html; charset=ISO-8859-1 Set-Cookie: NID=67=SpnXKTDUhw7QGakIeLxmDSF; expires=Po, 20-Jul-2015 08:31:22 GMT; cesta=/; doména=.; HttpOnly P3P: CP="Toto nie je zásada P3P! Viac informácií nájdete na stránke http://www.google.com/support/accounts/bin/answer.py?hl=sk&answer=151657." Server: gws X-XSS-Protection: 1; mode=block X-Frame-Options: SAMEORIGIN Alternate-Protocol: 80:quic,p=0.02 Transfer-Encoding: chunked Accept-Ranges: none Vary: Accept-Encoding # Ak potrebujete získať prístup k https URL, ktorá vyvoláva chybu certifikátu z dôvodu nesúladu názvu hostiteľa, môžete použiť nasledujúcu syntax. curl --insecure https://yoururl.com Ak sa chcete pripojiť k adrese URL pomocou iba SSL V2/V3 alebo TLS, použite nasledujúcu syntax. Pre pripojenie pomocou SSLV2: # curl --sslv2 https://yoururl.com Pre pripojenie pomocou SSLV3: # curl --sslv3 https://yoururl.com Pre pripojenie cez TLS: # curl --tlsv1 https://yoururl.com Pomocou cURL si môžete stiahnuť súbor z ftp servera zadaním používateľského mena a hesla. # curl -u user:password -O ftp://ftpurl/style.css Vždy môžete použiť "-v" s ľubovoľnou syntaxou na výstup v podrobnom režime. Áno, je to možné. CURL môžete spustiť na diaľku pomocou nasledujúcich nástrojov. Connect-timeout --cookie --data --header --head --location --max-time --proxy --request --user --url --user-agent Príklad výstupu: Tvorca príkazového riadka cURL – Umožňuje vám vytvoriť príkaz cURL, ktorý môžete použiť na zadávanie informácií do používateľského rozhrania. Často musíme sťahovať rôzne súbory z internetu, napríklad spustiteľné programové súbory, súbory skriptov, zdrojové archívy. Nie vždy to však treba robiť cez prehliadač. V mnohých situáciách je oveľa jednoduchšie vykonávať všetky akcie prostredníctvom terminálu. Pretože týmto spôsobom môžete automatizovať proces. Na druhej strane musia webmasteri z času na čas otestovať dostupnosť webových stránok, skontrolovať odoslané a prijaté hlavičky a mnoho ďalšieho. Na vyriešenie takýchto problémov a problémov podobného rozsahu môžete použiť pomôcku curl. Umožňuje vám riešiť oveľa širšiu škálu problémov, vrátane simulácie akcií používateľov na stránke. V tomto článku sa pozrieme na to, ako používať curl, čo to je a prečo je tento program potrebný. Curl je v skutočnosti viac než len pomôcka príkazového riadka pre Linux alebo Windows. Ide o súbor knižníc, ktoré implementujú základné možnosti práce s URL stránkami a prenosu súborov. Knižnica podporuje prácu s protokolmi: FTP, FTPS, HTTP, HTTPS, TFTP, SCP, SFTP, Telnet, DICT, LDAP, ako aj POP3, IMAP a SMTP. Je to skvelé na simuláciu akcií používateľov na stránkach a iných operácií s adresami URL. Podpora knižnice curl bola pridaná do mnohých rôznych programovacích jazykov a platforiem. Pomôcka curl je nezávislý obal pre túto knižnicu. Práve na túto pomôcku sa zameriame v tomto článku. Predtým, ako prejdeme k popisu toho, ako možno použiť príkaz curl linux, pozrime sa na samotný nástroj a jeho hlavné možnosti, ktoré budeme potrebovať. Syntax nástroja je veľmi jednoduchá: $ odkaz možnosti curl Teraz sa pozrime na hlavné možnosti: V žiadnom prípade to nie sú všetky možnosti pre curl linux, ale sú tu uvedené základy, ktoré budete musieť použiť. Prebrali sme všetko, čo súvisí s teóriou práce s utilitou curl, teraz je čas prejsť na prax a pozrieť sa na príklady príkazu curl. Najčastejšou úlohou je toto. Stiahnutie súboru je veľmi jednoduché. Ak to chcete urobiť, jednoducho odovzdajte názov súboru alebo html stránku obslužnému programu v parametroch: curl https://raw.githubusercontent.com/curl/curl/master/README.md Tu vás však čaká jedno prekvapenie: celý obsah súboru sa odošle na štandardný výstup. Ak ho chcete zapísať do ľubovoľného súboru, použite: curl -o readme.txt https://raw.githubusercontent.com/curl/curl/master/README.md A ak chcete, aby sa výsledný súbor volal rovnako ako súbor na serveri, použite možnosť -O: curl -O https://raw.githubusercontent.com/curl/curl/master/README.md curl -# -C - -O https://cdn.kernel.org/pub/linux/kernel/v4.x/testing/linux-4.11-rc7.tar.xz V prípade potreby môžete jedným príkazom stiahnuť niekoľko súborov: curl -O https://raw.githubusercontent.com/curl/curl/master/README.md -O https://raw.githubusercontent.com/curl/curl/master/README Ďalšia vec, ktorá môže byť pre správcu užitočná, je stiahnuť súbor iba vtedy, ak bol upravený: curl -z 21-Dec-17 https://raw.githubusercontent.com/curl/curl/master/README.md -O https://raw.githubusercontent.com/curl/curl/master/README Rýchlosť sťahovania môžete obmedziť na požadovaný limit, aby ste nepreťažili sieť pomocou voľby -Y: curl --limit-rate 50 000 -O https://cdn.kernel.org/pub/linux/kernel/v4.x/testing/linux-4.11-rc7.tar.xz Tu musíte zadať počet kilobajtov za sekundu, ktoré je možné stiahnuť. Môžete tiež ukončiť pripojenie, ak rýchlosť nie je dostatočná, použite na to možnosť -Y: curl -Y 100 -O https://raw.githubusercontent.com/curl/curl/master/README.md curl -T login.txt ftp://speedtest.tele2.net/upload/ Alebo skontrolujte, či je súbor odoslaný cez HTTP, existuje na to špeciálna služba: curl -T ~/login.txt http://posttestserver.com/post.php V odpovedi vám obslužný program povie, kde nájdete stiahnutý súbor. Metódou POST môžete odosielať nielen súbory, ale aj ľubovoľné údaje. Pripomínam, že tento spôsob sa používa na odosielanie údajov rôznych foriem. Na odoslanie takejto požiadavky použite voľbu -d. Na testovanie použijeme rovnakú službu: curl -d "field1=val&fileld2=val1"http://posttestserver.com/post.php Ak nie ste spokojní s touto možnosťou odoslania, môžete predstierať odoslanie formulára. Existuje možnosť -F: curl -F "password=@pass;type=text/plain" http://posttestserver.com/post.php Tu odovzdáme pole hesla s formulárom ako obyčajný text, rovnakým spôsobom môžete zadať niekoľko parametrov. Cookies používajú webové stránky na ukladanie určitých informácií na strane užívateľa. Môže to byť potrebné napríklad pri autentifikácii. Cookies môžete prijímať a odosielať pomocou curl. Ak chcete uložiť prijaté súbory cookie do súboru, použite možnosť -c: curl -c cookie.txt http://posttestserver.com/post.php Potom môžete poslať súbor cookie curl späť: curl -b cookie.txt http://posttestserver.com/post.php Nie vždy nevyhnutne potrebujeme obsah stránky. Niekedy môžu byť zaujímavé len titulky. Ak chcete zobraziť iba ich, existuje možnosť -I: curl -I https://site A voľba -H vám umožňuje poslať niekoľko alebo viac na server, napríklad môžete odovzdať hlavičku If-Modified-Since, takže stránka sa vráti iba vtedy, ak bola upravená: Ak server vyžaduje jeden z bežných typov autentifikácie, ako napríklad HTTP Basic alebo FTP, curl túto úlohu zvládne veľmi ľahko. Ak chcete zadať podrobnosti autentifikácie, jednoducho ich zadajte oddelené dvojbodkou vo voľbe -u: curl -u ftpuser:ftppass -T - ftp://ftp.testserver.com/myfile_1.txt Autentifikácia na HTTP serveroch bude vykonaná rovnakým spôsobom. Ak potrebujete na sťahovanie súborov použiť proxy server, je to tiež veľmi jednoduché. Stačí zadať adresu proxy servera vo voľbe -x: curl -x proxysever.test.com:3128 http://google.co.in V tomto článku sme sa pozreli na to, ako používať curl, prečo je tento nástroj potrebný a jeho hlavné možnosti. Napriek svojej podobnosti sú veľmi odlišné. Príkaz curl linux je určený skôr na analýzu a simuláciu rôznych akcií na serveri, zatiaľ čo wget je vhodnejší na sťahovanie súborov a prehľadávanie stránok. CURL je softvérový balík pozostávajúci z nástroja príkazového riadka a knižnice na prenos údajov pomocou syntaxe URL. CURL podporuje mnoho protokolov vrátane DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, Telnet a TFTP. Nahrajte samostatný súbor
Curl https://mi-al.ru/ > mi-al.htm % Celkom % Prijatých % Xferd Priemerná rýchlosť Čas Čas Čas Aktuálne predĺženie Odovzdanie Celkom Spotrebované Doľava Rýchlosť 100 14378 0 14378 0 0 5387 0 --: --:- - 0:00:02 --:--:-- 5387 $ curl -o mygettext.html http://www.gnu.org/software/gettext/manual/gettext.html Stránka gettext.html sa teraz uloží do súboru s názvom 'mygettext.html'. Keď curl spustíte s voľbou -o, zobrazí sa indikátor priebehu sťahovania nasledovne. % Celkom % Prijaté % Xferd Priemerná rýchlosť Čas Čas Čas Aktuálne predĺženie Odovzdanie Celkom Spotrebované Zostávajúca rýchlosť 0 0 39474 0 0:00:31 0:00:31 --:--:-- 68987 Keď použijete curl -O (veľké písmená O), sám uloží obsah do súboru s názvom „gettext.html“ na lokálnom počítači. $ curl -O http://www.gnu.org/software/gettext/manual/gettext.html Poznámka: Keď curl potrebuje zapísať údaje do terminálu, deaktivuje indikátor priebehu, aby sa predišlo zámene s vytlačenými údajmi. Na prenos výsledkov do súboru môžeme použiť voľby '>'|'-o'|'-O'. Obnovenie viacerých súborov naraz
Curl -O URL1 -O URL2 Nasledujúci príkaz stiahne index.html aj gettext.html a uloží ich s rovnakými názvami do aktuálneho adresára. Curl -O http://www.gnu.org/software/gettext/manual/html_node/index.html -O http://www.gnu.org/software/gettext/manual/gettext.html Upozorňujeme, že keď stiahneme viacero súborov z rovnakého servera, ako je uvedené vyššie, curl sa pokúsi znova použiť pripojenie. Postupujte podľa hlavičiek umiestnenia HTTP s možnosťou -L
Curl https://www.google.com/?gws_rd=ssl Vyššie uvedený výstup hovorí, že požadovaný dokument bol presunutý do „ Skryté pred hosťami Skryté pred hosťami Curl -L https://www.google.com/?gws_rd=ssl Pomocou voľby -C môžete pokračovať v sťahovaní, ktoré bolo z nejakého dôvodu zastavené. Bude to užitočné, keď sťahovanie veľkých súborov zlyhá. $ curl -O http://www.gnu.org/software/gettext/manual/gettext.html ############## 20,1 % Injekcia bola zastavená na 20,1 %. Pomocou „curl -C -“ môžeme pokračovať v načítavaní od miesta, kde sme prestali. Teraz bude sťahovanie pokračovať z 20,1 %. Curl -C - -O http://www.gnu.org/software/gettext/manual/gettext.html ############### 21,1 % $ curl --limit-rate 1000B -O http://www.gnu.org/software/gettext/manual/gettext.html Vyššie uvedený príkaz obmedzí prenosovú rýchlosť na 1000 bajtov za sekundu. curl môže používať vyššie rýchlosti v špičkách. Priemerná rýchlosť však bude približne 1 000 bajtov za sekundu. % Celkom % Prijaté % Xferd Priemerná rýchlosť Čas Čas Čas Aktuálne predĺženie Odovzdanie Celková vyčerpaná rýchlosť 1 1215 k 1 13601 0 0 957 0 0:21:40 0:00:14 0:21:26 999 1 1215 k 1 1460 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 Vyššie uvedený príkaz načíta súbor yy.html iba vtedy, ak bol zmenený novšie ako daný dátum a čas. Vyššie uvedený príkaz načíta súbor.html, ak bol upravený pred daným dátumom a časom. Napíšte 'man curl_getdate' a dozviete sa viac o rôznych podporovaných syntaxách pre výrazy dátumu. Odovzdanie overenia HTTP v cURL
$ curl -u užívateľské meno:heslo URL Poznámka: V predvolenom nastavení curl používa základnú autentifikáciu HTTP. Ďalšie metódy autentifikácie môžeme nastaviť pomocou –ntlm | -tráviť.4. Sťahujte maximálnou rýchlosťou
5. Použitie proxy na pripojenie
6. Kontrola adresy URL zadaním názvu
7. Pridajte ďalšiu hlavičku
8. Otvorte iba hlavičku odpovede
9. Pripojte adresu HTTPS/SSLURL a ignorujte všetky chyby certifikátu SSL
10. Pripojte sa pomocou špecifického protokolu (SSL/TLS)
11. Nahrajte súbor z FTP servera
Používanie cURL online
Online CURL je kompaktný nástroj na extrakciu online adresy URL a pridanie nasledujúcich parametrov.príkaz curl
Ako používať curl?
Limit rýchlosti
Prenos súborov
Odosielanie údajov POST
Odosielanie a prijímanie cookies
Prenos a analýza hlavičky
overenie kučery
Pomocou proxy
závery
Nasledujúci príkaz získa obsah adresy URL a zobrazí ju na štandardnom výstupe (t. j. váš terminál).
Výsledok príkazu curl môžeme uložiť do súboru pomocou volieb -o/-O.
Zadaním všetkých adries URL na príkazovom riadku môžeme stiahnuť viacero súborov naraz.
V predvolenom nastavení CURL nesleduje umiestnenie HTTP v hlavičkách (presmerovania). Keď sa požadovaná webová stránka presunie na iné miesto, príslušná odpoveď bude odoslaná v hlavičkách HTTP Location.
Napríklad, keď niekto zadá do prehliadača google.com zo svojej krajiny, bude automaticky presmerovaný na google.co.xx. Toto sa vykonáva na základe hlavičky HTTP Location, ako je uvedené nižšie. 302 Presunuté
Dokument sa presunul sem.
Môžete povedať curl, aby sledoval presmerovania, to sa vykonáva pomocou voľby -L, ako je uvedené nižšie. Teraz sa stiahne zdrojový kód html
Ak povieme '-C -', potom curl vyhľadá, odkiaľ obnoviť sťahovanie. Môžeme tiež špecifikovať '-C<смещение>'. Zadaný bajtový offset sa preskočí od začiatku zdrojového súboru.
Spustite veľké sťahovanie pomocou curl a stlačte Ctrl-C, aby ste ho zastavili uprostred sťahovania.
Rýchlosť prenosu dát môžete obmedziť pomocou možnosti –limit-rate. Ako argument môžete uviesť maximálnu rýchlosť.
Nižšie je lišta priebehu pre vyššie uvedený príkaz. Môžete vidieť, že aktuálna rýchlosť je okolo 1000 bajtov.
Súbory, ktoré sa po určitom čase zmenili, môžete získať pomocou voľby -z v curl. Toto bude fungovať pre FTP aj HTTP.
Niekedy webové stránky vyžadujú na zobrazenie svojho obsahu používateľské meno a heslo. Pomocou voľby -u môžete odovzdať tieto poverenia z cURL na webový server, ako je uvedené nižšie.
cURL možno použiť aj na sťahovanie súborov z FTP serverov. Ak je zadaná cesta FTP adresár, predvolene sa zobrazí zoznam súborov v ňom.
$ curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/xss.php
Vyššie uvedený príkaz stiahne súbor xss.php z ftp servera a uloží ho do lokálneho adresára.
$ curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/
Tu URL odkazuje na adresár. Preto cURL vypíše súbory a adresáre na danej URL.
CURL podporuje rozsahy špecifikované v URL. Po zadaní rozsahu sa načítajú zodpovedajúce súbory v tomto rozsahu. Bude to užitočné pri sťahovaní balíkov z FTP mirrorov.
$ curl ftp://ftp.uk.debian.org/debian/pool/main//
Vyššie uvedený príkaz zobrazí zoznam všetkých balíkov v rozsahu a-z v termináli.
Nahrávanie súborov na FTP server
Curl možno použiť aj na nahrávanie na FTP server s voľbou -T.
$ curl -u ftpuser:ftppass -T myfile.txt ftp://ftp.testserver.com
Vyššie uvedený príkaz odovzdá súbor s názvom myfile.txt na server FTP. Môžete tiež nahrať viacero súborov naraz pomocou rozsahov.
$ curl -u ftpuser:ftppass -T "(súbor1,súbor2)" ftp://ftp.testserver.com
Voliteľne môžeme použiť „.“ prijímať zo štandardného vstupu a odovzdávať ho vzdialenému stroju.
$ curl -u ftpuser:ftppass -T - ftp://ftp.testserver.com/myfile_1.txt
Vyššie uvedený príkaz prijme výstup od užívateľa zo štandardného vstupu a uloží obsah na ftp server ako 'myfile_1.txt'.
Pre každú adresu URL môžete zadať „-T“ a každý pár adresa-súbor určí, čo sa kam nahrať
Viac informácií so zvýšenou výrečnosťou a možnosťou sledovania
Čo sa deje, môžete zistiť pomocou voľby -v. Voľba -v umožňuje verbálny režim a vytlačí podrobnosti.
Curl -v https://www.google.co.th/?gws_rd=ssl
Vyššie uvedený príkaz vypíše nasledovné
* Prestavaná adresa URL na: https://www.google.co.th/?gws_rd=ssl * Názov hostiteľa sa NENAšiel vo vyrovnávacej pamäti DNS * Pokus 27.123.17.49... * Pripojené k www.google.co.th (27.123. 17.49) port 80 (#0) > GET / HTTP/1.1 > User-Agent: curl/7.38.0 > Hostiteľ: www.google.co.th > Accept: */* >< 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 ... ... ...
Ak potrebujete podrobnejšie informácie, môžete použiť možnosť –trace. Voľba –trace umožní úplný výpis sledovania všetkých prichádzajúcich/odchádzajúcich údajov pre daný súbor
Navrhujem hovoriť trochu o programovacom jazyku PHP a konkrétne sa dotknúť témy rozšírení CURL, t.j. schopnosť komunikovať s rôznymi servermi pomocou rôznych protokolov zo samotného skriptu PHP.
Predtým, než sa začneme zaoberať curlingom, rád by som vám to pripomenul jazyk PHP Už sme sa toho dotkli napríklad v materiáli o nahrávaní do Excelu v PHP alebo možnosti autentifikácie v PHP a teraz si povieme niečo o možnosti posielať požiadavky do PHP.
Čo je CURL?
CURL- toto je knižnica PHP funkcie, pomocou ktorého môžete odosielať požiadavky, napríklad HTTP, z PHP skriptu. CURL podporuje protokoly ako HTTP, HTTPS, FTP a iné. Odoslať HTTP požiadavky Môžete použiť metódy GET, POST, PUT.
CURL môže byť užitočné v prípadoch, keď potrebujete zavolať vzdialený skript a získať výsledok alebo jednoducho uložiť HTML kód volanej stránky, vo všeobecnosti si každý nájde svoje využitie, ale ide o to, že môžete posielať požiadavky, kým skript je spustený.
Pripojenie knižnice CURL v PHP
Aby ste mohli používať knižnicu CURL, musíte ju zodpovedajúcim spôsobom pripojiť.
Poznámka! Ako príklad použijeme PHP 5.4.39 na Windows 7 a ako webový server použijeme Apache 2.2.22.
Prvá vec, ktorú musíte urobiť, je skopírovať knižnice ssleay32.dll, libeay32.dll, libssh2.dll sú umiestnené v adresári s PHP, v systéme Windows adresár, a to v C:\Windows\System32.
Potom pripojte knižnicu php_curl.dll k php.ini, t.j. odkomentujte nasledujúci riadok
Knižnica nie je pripojená
;extension=php_curl.dllKnižnica pripojená
Prípona=php_curl.dll
To je všetko, reštartujte Apache, zavolajte funkciu phpinfo() a ak je pripojenie úspešné, mali by ste mať sekciu curl
Ak tam nie je, znamená to len jednu vec: knižnica sa nenačítala, najčastejším dôvodom je, že vyššie uvedené knižnice DLL neboli skopírované do systémového adresára Windows.
Príklad CURL – vyžiadanie si vzdialenej stránky na zobrazenie na obrazovke
IN v tomto príklade len sa opýtame odstránená stránka cez protokol HTTP metódou GET a zobraziť jej obsah na obrazovke.
Máme v ňom test adresára 2 súbor PHP sú to test_curl.php a test.php, kde test_curl.php je skript, v ktorom budeme používať curl, a test.php je vzdialený skript, ktorý zavoláme. Kód som podrobne okomentoval.
Kód test_curl.php
Kód test.php
Nadpis 1Н1>"; prestávka; prípad 2: echo"<Н2>Nadpis 2Н2>"; prestávka; prípad 3: echo"<Н3>Nadpis 3Н3>"; prestávka; ) ) ?>
Výsledkom je, že ak spustíte test_curl.php, na obrazovke uvidíte správu „Nadpis 1“, môžete experimentovať s odovzdávaním parametrov id ( v tomto prípade 2 alebo 3).
Príklad CURL - volanie vzdialeného skriptu a získanie výsledku
Teraz skúsme zavolať skript a získať výsledok, aby sme ho mohli neskôr spracovať, napríklad použite metódu POST. Názvy súborov nechajme rovnaké.
Kód test_curl.php
Kód test.php
A ak spustíme test_curl.php, tak sa na obrazovke zobrazí 111, t.j. 1.11 získaný ako výsledok prístupu k vzdialenému skriptu, vynásobený 100.
Teraz si povieme niečo o funkciách a ich konštantách.
Bežne používané funkcie a konštanty CURL
- curl_init - Inicializuje reláciu;
- curl_close - Zatvorí reláciu;
- curl_exec - Vykoná požiadavku;
- curl_errno - Vráti kód chyby;
- curl_setopt – Nastavuje parameter pre reláciu, napríklad:
- CURLOPT_HEADER – hodnota 1 znamená, že hlavičky by sa mali vrátiť;
- CURLOPT_INFILESIZE - parameter na určenie očakávanej veľkosti súboru;
- CURLOPT_VERBOSE - hodnota 1 znamená, že CURL zobrazí podrobné správy o všetkých vykonaných operáciách;
- CURLOPT_NOPROGRESS – vypne indikátor priebehu operácie, hodnota 1;
- CURLOPT_NOBODY – ak nepotrebujete dokument, ale potrebujete len hlavičky, tak nastavte hodnotu na 1;
- CURLOPT_UPLOAD - pre nahranie súboru na server;
- CURLOPT_POST – vykoná požiadavku metódou POST;
- CURLOPT_FTPLISTONLY - získanie zoznamu súborov v adresári FTP servery, hodnota 1;
- CURLOPT_PUT — vykoná požiadavku pomocou metódy PUT, hodnota 1;
- CURLOPT_RETURNTRANSFER - vráti výsledok bez jeho odoslania do prehliadača, hodnota 1;
- CURLOPT_TIMEOUT – maximálny čas vykonania v sekundách;
- CURLOPT_URL – určenie adresy kontaktu;
- CURLOPT_USERPWD - reťazec s užívateľským menom a heslom v tvare :;
- CURLOPT_POSTFIELDS – údaje pre požiadavku POST;
- CURLOPT_REFERER - nastavuje hodnotu HTTP hlavičky “Referer:”;
- CURLOPT_USERAGENT - nastavuje hodnotu HTTP hlavičky “User-Agent:”;
- CURLOPT_COOKIE — obsah hlavičky „Cookie:“, ktorá bude odoslaná s požiadavkou HTTP;
- CURLOPT_SSLCERT - názov súboru s certifikátom vo formáte PEM;
- CURLOPT_SSL_VERIFYPEER – hodnota 0 na zakázanie overovania certifikátu vzdialený server(predvolené 1);
- CURLOPT_SSLCERTPASSWD — heslo pre súbor certifikátu.
- curl_getinfo - Vracia informácie o operácii, druhý parameter môže byť konštanta označujúca, čo presne treba zobraziť, napríklad:
- CURLINFO_EFFECTIVE_URL – posledná použitá adresa URL;
- CURLINFO_HTTP_CODE - posledný prijatý HTTP kód;
- CURLINFO_FILETIME — dátum úpravy načítaného dokumentu;
- CURLINFO_TOTAL_TIME — čas vykonania operácie v sekundách;
- CURLINFO_NAMELOOKUP_TIME — čas rozlíšenia názvu servera v sekundách;
- CURLINFO_CONNECT_TIME — čas strávený nadviazaním spojenia v sekundách;
- CURLINFO_PRETRANSFER_TIME — čas, ktorý uplynul od začiatku operácie do pripravenosti na skutočný prenos dát, v sekundách;
- CURLINFO_STARTTRANSFER_TIME — čas v sekundách, ktorý uplynul od začiatku operácie do prenosu prvého bajtu údajov;
- CURLINFO_REDIRECT_TIME — čas strávený presmerovaním v sekundách;
- CURLINFO_SIZE_UPLOAD - počet bajtov pri nahrávaní;
- CURLINFO_SIZE_DOWNLOAD - počet bajtov pri sťahovaní;
- CURLINFO_SPEED_DOWNLOAD - priemerná rýchlosť sťahovania;
- CURLINFO_SPEED_UPLOAD - priemerná rýchlosť sťahovania;
- CURLINFO_HEADER_SIZE - celková veľkosť všetkých prijatých hlavičiek;
- CURLINFO_REQUEST_SIZE - celková veľkosť všetkých odoslaných požiadaviek;
- CURLINFO_SSL_VERIFYRESULT - výsledok kontroly požadovaného SSL certifikátu nastavením parametra CURLOPT_SSL_VERIFYPEER;
- CURLINFO_CONTENT_LENGTH_DOWNLOAD - veľkosť sťahovaného dokumentu, načítaná z hlavičky Content-Length;
- CURLINFO_CONTENT_LENGTH_UPLOAD - veľkosť nahrávaných údajov;
- CURLINFO_CONTENT_TYPE – obsah prijatej hlavičky Content-type alebo NULL, ak táto hlavička nebola prijatá.
Viac o funkciách CURL a ich konštantách sa dozviete na oficiálnej stránke PHP -
Skutočný praktický príklad: ak chcete zmeniť IP adresu, musíte reštartovať router (modem). Ak to chcete urobiť, musíte: prihlásiť sa do smerovača, prejsť na stránku údržby a kliknúť na tlačidlo „Reštartovať“. Ak je potrebné túto akciu vykonať niekoľkokrát, potom sa musí postup zopakovať. Súhlasíte s tým, že túto rutinu nechcete zakaždým robiť manuálne. cURL vám toto všetko umožňuje automatizovať. Pomocou niekoľkých príkazov cURL môžete dosiahnuť autorizáciu a dokončiť úlohu na smerovači.
- cURL je užitočné na získavanie údajov z webových stránok v príkazový riadok.
Tie. prípady použitia cURL sú celkom reálne, hoci vo väčšine prípadov cURL potrebujú programátori, ktorí ho používajú pre svoje programy.
CURL podporuje mnoho protokolov a autorizačných metód, dokáže prenášať súbory, správne pracuje s cookies, podporuje SSL certifikáty, proxy a mnohé ďalšie.
cURL v PHP a príkazovom riadku
CURL môžeme použiť dvoma hlavnými spôsobmi: v PHP skriptoch a na príkazovom riadku.
Ak chcete povoliť cURL v PHP na serveri, musíte odkomentovať riadok v súbore php.ini
Prípona=php_curl.dll
A potom reštartujte server.
V systéme Linux musíte nainštalovať balík curl.
Na Debiane, Ubuntu alebo Linux Mint:
$ sudo apt-get install curl
Na Fedore, CentOS alebo RHEL:
$ sudo yum install curl
Aby sme jasne videli rozdiel v používaní v PHP a na príkazovom riadku, vykonáme rovnaké úlohy dvakrát: najprv v skripte PHP a potom na príkazovom riadku. Skúsme sa nenechať zmiasť.
Načítanie údajov pomocou cURL
Získavanie údajov pomocou cURL v PHP
Príklad v PHP:
Všetko je veľmi jednoduché:
$target_url- adresa stránky, ktorá nás zaujíma. Za adresu lokality môžete vložiť dvojbodku a pridať adresu portu (ak sa port líši od štandardného).
curl_init- inicializuje novú reláciu a vráti handle, ktorý je v našom príklade priradený k premennej $ch.
Potom vykonáme požiadavku pomocou funkcie cURL curl_exec, ktorému sa odovzdá deskriptor ako parameter.
Všetko je veľmi logické, ale po spustení tohto skriptu sa obsah stránky zobrazí na našej stránke. Čo však v prípade, ak nechceme obsah zobraziť, ale chceme ho zapísať do premennej (na následné spracovanie alebo analýzu).
Pridajme trochu k nášmu skriptu:
0) ( echo "Chyba curlingu: " . curl_error($ch); ) curl_close($ch); ?>
Máme líniu curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);.
curl_setopt- nastavuje možnosti. Úplný zoznam možnosti nájdete na tejto stránke:
Skryté pred hosťami
$response_data = curl_exec($ch);
Teraz je hodnota skriptu priradená k premennej $response_data, s ktorou je možné vykonávať ďalšie operácie. Môžete napríklad zobraziť jeho obsah.
Stehy
If (curl_errno($ch) > 0) ( echo "Curl error: " . curl_error($ch); )
slúžia na ladenie v prípade výskytu chýb.
Načítanie údajov pomocou cURL na príkazovom riadku
Na príkazovom riadku stačí zadať
kde namiesto toho mi-al.ru- adresa vašej webovej stránky.
Ak potrebujete skopírovať údaje do premennej namiesto zobrazenia výsledku na obrazovke, postupujte takto:
Temp="curl mi-al.ru"
Niektoré údaje sa však stále zobrazujú:
Ak chcete zabrániť ich zobrazeniu, pridajte kľúč -s:
Temp="curl -s mi-al.ru"
Môžete vidieť, čo bolo zaznamenané:
Echo $temp | menej
Základná a HTTP autentifikáciaAutentifikácia, zjednodušene povedané, je zadanie používateľského mena a hesla.
Základná autentifikácia je autentifikácia na strane servera. Na tento účel sa vytvoria dva súbory: .htaccess A .htpasswd
Obsah súboru .htaccess je približne takýto
AuthName "Len pre registrovaných užívateľov!" AuthType Basic vyžaduje platného používateľa AuthUserFile /home/freeforum.biz/htdocs/.htpassw
Obsah súboru .htpasswd je približne takýto:
Mial:CRdiI.ZrZQRRc
Tie. hash prihlasovacieho mena a hesla.
Keď sa pokúsite o prístup k priečinku chránenému heslom, prehliadač zobrazí niečo takéto:
HTTP autentifikácia je prípad, keď zadáme prihlasovacie meno a heslo do formulára na webovej stránke. Práve toto overenie sa používa pri prihlasovaní do pošty, na fórach atď.
Základné overenie cURL (PHP)
Existuje webová stránka
Skryté pred hosťami
Skúsme náš úvodný skript:
0) ( echo "Curl error: " . curl_error($ch); ) else ( echo $response_data; ) curl_close($ch); ?>
Hoci skript verí, že nejde o žiadnu chybu, výstup sa nám vôbec nepáči:
Pridajte dva riadky:
Curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); curl_setopt($ch, CURLOPT_USERPWD, "ru-board:ru-board");
V prvom riadku nastavíme typ autentifikácie – základné. Druhý riadok obsahuje meno a heslo oddelené dvojbodkou (v našom prípade je meno a heslo rovnaké - ru-board). Dopadlo to takto:
0) ( echo "Curl error: " . curl_error($ch); ) else ( echo $response_data; ) curl_close($ch); ?> Skúsme: 30946 Skvelé! Základná autentifikácia cURL (na príkazovom riadku) To isté sa dá dosiahnuť na príkazovom riadku jedným riadkom: curl -u ru-board:ru-board http://62.113.208.29/Update_FED_DAYS/
Nezabudol som špecifikovať typ autentifikácie, ide len o to, že v cURL je základný typ autentifikácie predvolený.
Na príkazovom riadku všetko fungovalo tak rýchlo, že som z frustrácie napísal nasledujúci program. Pripojí sa k stránke a stiahne najnovšiu aktualizáciu:
Temp=`curl -s -u ru-board:ru-board http://62.113.208.29/Update_FED_DAYS/ | grep -E -o "Aktualizovať_FED_201(1).(2).(2).7z" | uniq | chvost -n 1'; curl -o $temp -u ru-board:ru-board http://62.113.208.29/Update_FED_DAYS/$temp
Pomocou niekoľkých ďalších príkazov môžete pridať:
- rozbalenie archívu do určeného adresára;
- spustenie aktualizácií ConsultantPlus (sú to jeho aktualizácie);
- môžete skontrolovať, či už bola stiahnutá najnovšia dostupná aktualizácia alebo sa objavila nová;
- pridajte to všetko do Cron pre denné aktualizácie.
Autentifikácia HTTP cURL v PHP
Potrebujeme vedieť:
- adresu, kam sa majú zaslať autentifikačné údaje
- spôsob odoslania GET alebo POST
- Prihlásiť sa
- heslo
Adresu, na ktorú je potrebné odoslať údaje, môžete získať z overovacieho formulára. Napríklad: