PHP CURL - funkcie a príklady použitia. Písanie požiadaviek HTTP s príkladmi Curl Curl linux

cURL je nástroj, ktorý vám umožňuje interakciu s rôznymi servermi a podporuje mnoho protokolov: HTTP, FTP, TELNET a iné.CURL je pôvodne nástroj príkazového riadka. Našťastie pre nás PHP podporuje knižnicu cURL. V tomto článku sa pozrieme na netriviálne príklady práce s cURL.

Prečo cURL?

V skutočnosti existuje mnoho iných spôsobov, ako odoslať požiadavku na iný server, napríklad na získanie obsahu stránky. Mnoho ľudí, väčšinou z lenivosti, používa namiesto cURL jednoduché funkcie PHP:

$ content = file_get_contents ("http://www.example.com"); // alebo $ lines = file ("http://www.example.com"); // alebo readfile ("http://www.example.com");

Neumožňujú však efektívne odstraňovanie chýb. Existuje aj množstvo úloh, ktoré vôbec nedokážu – napríklad práca s cookies, autorizácia, odosielanie požiadaviek, sťahovanie súborov.

cUrl je výkonný nástroj, ktorý podporuje mnoho protokolov a poskytuje kompletné informácie o požiadavke.

Základy KURL

Skôr než prejdeme ku komplexným príkladom, pozrime sa na základnú štruktúru požiadavky cURL v PHP. Ak chcete vykonať požiadavku cURL v PHP, musíte urobiť 4 hlavné kroky:

  1. Inicializácia.
  2. Možnosti nastavenia.
  3. Vykonanie žiadosti.
  4. Čistenie zdrojov.
// 1.inicializácia $ ch = curl_init (); // 2. nastavenie možností vrátane adresy URL curl_setopt ($ ch, CURLOPT_URL, "http://www.google.com"); curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ ch, CURLOPT_HEADER, 0); // 3. vykoná požiadavku a dostane odpoveď $ output = curl_exec ($ ch); // 4. vymazanie zdrojov curl_close ($ ch);

Z väčšej časti sa v tomto článku budeme zaoberať krokom č. 2, pretože tu sa odohráva hlavná mágia. Zoznam možností cURL je veľmi rozsiahly, takže dnes nebudeme zvažovať všetky možnosti, ale použijeme tie, ktoré sú užitočné pri riešení konkrétnych problémov.

Chyby sledovania

V prípade potreby môžete pridať nasledujúce riadky sledovania chýb:

// ... výstup $ = curl_exec ($ ch); if ($ output === FALSE) (echo "cURL Error:". curl_error ($ ch);) // ...

Všimnite si, že používame "===" namiesto "==", pretože je potrebné rozlíšiť prázdnu odpoveď servera od boolovskej hodnoty FALSE, ktorá je vrátená v prípade chyby.

Získavanie informácií o žiadosti

Ďalším voliteľným krokom je získanie informácií o požiadavke cURL po jej vykonaní.

// ... curl_exec ($ ch); $ info = curl_getinfo ($ ch); ozvena "Vzala". $ info ["celkový_čas"]. "sekundy pre url". $ info ["url"]; //...

V dôsledku toho získate pole s nasledujúcimi informáciami:

  • "URL"
  • "Druh obsahu"
  • "Http_code"
  • "veľkosť_hlavičky"
  • "veľkosť_požiadavky"
  • "Filetime"
  • "Ssl_verify_result"
  • "Počet_presmerovaní"
  • "Celkový čas"
  • "Namelookup_time"
  • "Connect_time"
  • "Pretransfer_time"
  • "Size_upload"
  • "Size_download"
  • "Rýchlosť_sťahovania"
  • "Rýchlosť_nahrávania"
  • "Dĺžka_obsahu na stiahnutie"
  • "dĺžka_nahrávaného_obsahu"
  • "Starttransfer_time"
  • "čas_presmerovania"

Sledovanie presmerovaní v závislosti od prehliadača

V tomto príklade napíšeme skript, ktorý bude definovať presmerovania na základe rôznych nastavení prehliadača. Niektoré stránky napríklad presmerujú mobilných návštevníkov, návštevníkov z iných krajín.

Použijeme možnosť CURLOPT_HTTPHEADER na nastavenie vlastných hlavičiek vrátane User-Agent a jazyka a uvidíme, kam nás stránky presmerujú.

// URL $ urls = pole ("http://www.cnn.com", "http://www.mozilla.com", "http://www.facebook.com"); // prehliadače $ browsers = array ("standard" => array ("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) "," jazyk "=>" en-us, en; q = 0,5 "), "iphone "=> pole (" user_agent "=>" Mozilla / 5.0 (iPhone; U; CPU ako Mac OS X; en) AppleWebKit / 420 + (KHTML, ako Gecko) Verzia / 3.0 Mobile / 1A537a Safari / 419.3 "," jazyk "=>" en "), francúzsky "=> pole (" user_agent "= > "Mozilla / 4.0 (kompatibilné; MSIE 7.0; Windows NT 5.1; GTB6; .NET CLR 2.0.50727)", "jazyk" => "fr, fr-FR; q = 0,5")); foreach ($ urls ako $ url) (echo "URL: $ url \ n"; foreach ($ prehliadačov ako $ test_name => $ prehliadač) ($ ch = curl_init (); // nastaviť curl_setopt ($ ch, CURLOPT_URL, $ url); // zadajte prehliadač a použitý jazyk curl_setopt ($ ch, CURLOPT_HTTPHEADER, pole ("User-Agent: ($ browser [" user_agent "])", "Accept-Language: ($ browser [" jazyk "]) ")); // nepotrebujeme obsah stránky curl_setopt ($ ch, CURLOPT_NOBODY, 1); // potrebujeme iba hlavičky curl_setopt ($ ch, CURLOPT_HEADER, 1); // vráti výsledok namiesto výstup curl_setopt ($ ch, CURLOPT_RETURNTRANSFER , 1); výstup $ = curl_exec ($ ch); curl_close ($ ch); // definovať presmerovania v hlavičkách HTTP? If (preg_match ("! Umiestnenie: (. *)!", $ Výstup, $ sa zhoduje)) ( echo "$ test_name: presmeruje na $ zhody \ n";) else (echo "$ test_name: žiadne presmerovanie \ n";)) echo "\ n \ n";)

V slučke kontrolujeme prehliadače pre každú adresu URL. Najprv nastavíme možnosti pre našu požiadavku: URL a testovaný prehliadač a jazyk.

Pretože nastavili sme špeciálnu možnosť, výsledok požiadavky bude obsahovať iba HTTP hlavičky. Jednoduchým regulárnym výrazom môžeme skontrolovať, či odpoveď obsahuje reťazec „Location:“.

Výsledok spustenia skriptu:

URL: http://www.cnn.com štandard: presmeruje na http://edition.cnn.com/ iphone: presmeruje na http://edition.cnn.com/ french: presmeruje na http: //edition.cnn .com / URL: http://www.mozilla.com štandard: presmeruje na https://www.mozilla.org/firefox/ iphone: presmeruje na https://www.mozilla.org/firefox/ french: presmeruje na https://www.mozilla.org/firefox/ URL: http://www.facebook.com štandard: presmeruje na https://www.facebook.com/ iphone: presmeruje na http://m.facebook.com /?refsrc=http%3A%2F%2Fwww.facebook.com%2F&_rdr francúzština: žiadne presmerovanie

Odosielanie žiadostí POST

Pri vykonávaní požiadaviek GET môžu byť údaje odovzdané v reťazci dotazu. Keď napríklad vyhľadávate na stránkach Google, vaša žiadosť sa odovzdá v adrese URL:

http://www.google.com/search?q=google

Na získanie výsledku tohto dotazu nepotrebujete ani cURL, môžete byť leniví a použiť "file_get_contents ()".

Niektoré formuláre HTML však používajú metódu POST. V tomto prípade sa údaje odosielajú v tele správy žiadosti, nie v samotnej adrese URL.

Napíšme skript, ktorý bude odosielať požiadavky POST. Najprv si vytvorme jednoduchý PHP súbor, ktorý bude akceptovať tieto požiadavky a vráti doň zaslané dáta. Nazvime to post_output.php:

$ url = "http: //localhost/post_output.php"; $ post_data = pole ("foo" => "bar", "query" => "FooBar", "akcia" => "Odoslať"); $ ch = curl_init (); curl_setopt ($ ch, CURLOPT_URL, $ url); curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, 1); // urobte požiadavku POST curl_setopt ($ ch, CURLOPT_POST, 1); // pridanie údajov curl_setopt ($ ch, CURLOPT_POSTFIELDS, $ post_data); $ output = curl_exec ($ ch); curl_close ($ ch); echo $ výstup;

Tento skript vypíše:

Pole (=> bar => FooBar => Odoslať)

Tento skript odoslal požiadavku POST do súboru post_output.php. ktorý vyhodil obsah poľa $ _POST a túto odpoveď sme dostali pomocou cURL.

Nahrávanie súborov

Rovnako ako v predchádzajúcom príklade, vytvorte súbor, ktorý bude prijímať požiadavky, upload_output.php:

Print_r ($ _ FILES);

A samotný skript, ktorý sťahuje súbory:

$ url = "http: //localhost/upload_output.php"; $ post_data = pole ("foo" => "bar", // súbor na nahranie "nahrať" => "@ / tmp / desert.jpg"); $ 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 $ výstup;

Ak chcete nahrať súbor, všetko, čo musíte urobiť, je zadať cestu k nemu, rovnako ako normálny parameter požiadavky POST, pričom na začiatok vložíte znak „@“. Výsledok skriptu:

Pole (=> Pole (=> púšť.jpg => aplikácia / oktet-stream => / tmp / phpAhEvXy => 0 => 845941))

Viacnásobné cURL

Jednou z pokročilých funkcií cURL v PHP je schopnosť vykonávať viacero požiadaviek súčasne a asynchrónne.

Za normálnych podmienok sa skript zastaví a čaká na dokončenie požiadavky. A ak potrebujete vykonať veľa dotazov, môže to trvať veľa času. budete podávať konzistentné výkony. Toto obmedzenie sa dá obísť:

// vytvorenie handlerov $ ch1 = curl_init (); $ ch2 = curl_init (); // nastavenie možností 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); // vytvorenie viacnásobného cURL handle $ mh = curl_multi_init (); // pridanie handlerov curl_multi_add_handle ($ mh, $ ch1); curl_multi_add_handle ($ mh, $ ch2); $ beží = null; // vykoná požiadavky do (curl_multi_exec ($ mh, $ beží);) while ($ beží> 0); // voľné zdroje curl_multi_remove_handle ($ mh, $ ch1); curl_multi_remove_handle ($ mh, $ ch2); curl_multi_close ($ mh);

Myšlienka je, že môžete vytvoriť viacero deskriptorov cURL, zreťaziť ich pod jeden multideskriptor a spustiť ich asynchrónne.

Po prvé, všetko je rovnaké ako pri bežnej požiadavke cURL - vytvorí sa deskriptor ( curl_init () ), parametre sú nastavené ( curl_setopt () ). Ďalej sa vytvorí multideskriptor ( curl_multi_init () ) a pridajú sa predtým vytvorené bežné deskriptory ( curl_multi_add_handle () ). Namiesto obvyklého volania curl_exec () budeme opakovane volať curl_multi_exec () táto funkcia nás informuje o počte aktívnych spojení pomocou druhého parametra - $ beží. Cyklus teda beží, kým sa $ running rovná 0. A samozrejme po skončení práce je potrebné uvoľniť zdroje.

V tomto príklade jednoducho vypíšeme výsledok požiadaviek na STDOUT. Pozrime sa na netriviálny prípad použitia viacerých cURL.

Kontrola externých odkazov vo WordPress

Predstavte si blog s množstvom príspevkov obsahujúcich odkazy na externé stránky. Niektoré z týchto odkazov nemusia fungovať.

Napíšme skript, ktorý nájde všetky nefunkčné odkazy a ukáže nám ich.

Najprv musíme stiahnuť všetky externé odkazy z databázy:

// CONFIG $ db_host = "localhost"; $ db_user = "root"; $ db_pass = ""; $ db_name = "wordpress"; $ vylúčené_domény = pole ("localhost", "site"); $ max_connections = 10; $ zoznam_url = pole (); $ working_urls = pole (); $ dead_urls = pole (); $ not_found_urls = pole (); $ aktívny = null; // pripojenie k MySQL if (! mysql_connect ($ db_host, $ db_user, $ db_pass)) (die ("Nedá sa pripojiť:". mysql_error ());) if (! mysql_select_db ($ db_name)) (die ("Mohol by nevyberajte db: ". mysql_error ());) // zoberte všetky príspevky s odkazmi v texte $ q =" VYBERTE post_content FROM wp_posts KDE post_content LIKE "% href =%" AND post_status = "publish" AND post_type = "post " "; $ r = mysql_query ($ q) alebo zomrieť (mysql_error ()); while ($ d = mysql_fetch_assoc ($ r)) (// zhromaždiť všetky odkazy pomocou bežného vzoru if (preg_match_all ("/ href = \" (. *?) \ "/", $ d ["post_content"], $ zhody )) (foreach ($ sa zhoduje s $ url) (// filtrovanie nechcených domén $ tmp = parse_url ($ url); if (isset ($ tmp ["hostiteľ"]) && in_array ($ tmp ["hostiteľ"], $ vylúčené_domény)) (pokračovať;) // zostaviť $ url_list = $ url;))) // odstrániť duplikáty $ url_list = array_values ​​​​(array_unique ($ url_list)); if (! $ url_list) (die ("Žiadna adresa URL na kontrolu"));)

V tejto časti skriptu jednoducho vytiahneme všetky externé odkazy z databázy. Poďme ich skontrolovať:

$ mh = curl_multi_init (); // 1. pridajte odkazy pre ($ i = 0; $ i< $max_connections; $i++) { add_url_to_multi_handle($mh, $url_list); } // основной цикл do { curl_multi_exec($mh, $curRunning); // 2. один из потоков завершил работу if ($curRunning != $running) { $mhinfo = curl_multi_info_read($mh); if (is_array($mhinfo) && ($ch = $mhinfo["handle"])) { // 3. один из запросов выполнен, можно получить информацию о нем $info = curl_getinfo($ch); // 4. нерабочая ссылка if (!$info["http_code"]) { $dead_urls = $info["url"]; // 5. 404? } else if ($info["http_code"] == 404) { $not_found_urls = $info["url"]; // 6. верная ссылка } else { $working_urls = $info["url"]; } // 7. удаляем отработавший дескриптор curl_multi_remove_handle($mh, $mhinfo["handle"]); curl_close($mhinfo["handle"]); // 8. добавим новый урл add_url_to_multi_handle($mh, $url_list); $running = $curRunning; } } } while ($curRunning >0); curl_multi_close ($ mh); echo "== Mŕtve adresy URL == \ n"; echo implode ("\ n", $ dead_urls). "\ n \ n"; echo "== 404 adries URL == \ n"; echo implode ("\ n", $ not_found_urls). "\ n \ n"; echo "== Pracovné adresy URL == \ n"; echo implode ("\ n", $ pracovné_url); echo "\ n \ n"; // 9. pridá deskriptor s danou url funkciou add_url_to_multi_handle ($ mh, $ url_list) (static $ index = 0; // ak ešte existujú odkazy if (isset ($ url_list [$ index])) (// všetko je ako obvykle $ ch = curl_init (); // nastaviť možnosti curl_setopt ($ ch, CURLOPT_URL, $ url_list [$ index]); // vrátiť namiesto zobrazenia výsledku curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, 1); // povoliť presmeruje curl_setopt ($ ch, CURLOPT_FOLLOWLOCATION, 1); // získajte iba hlavičky, aby ste ušetrili čas curl_setopt ($ ch, CURLOPT_NOBODY, 1); // pridajte do multideskriptora curl_multi_add_handle ($ mh, $ ch); $ index ++ ;))

Pozrime sa na kód podrobnejšie (číslovanie zodpovedá komentárom v kóde):

  1. Pridávame počiatočný počet deskriptorov, aby sme nepreťažili systém vláknami. Suma je riadená premennou $ max_connections.
  2. Premenná $ curRunning ukladá počet spustených vlákien, $ spustených - predchádzajúca hodnota, ak sa nerovnajú, potom jedno z vlákien skončilo.
  3. Dostávame informácie o vyplnenej žiadosti.
  4. Ak server neodpovedá, odkaz nefunguje.
  5. Odpoveď servera je 404.
  6. Inak odkaz funguje.
  7. Žiadosť bola dokončená, zdroje sa uvoľňujú.
  8. Pridajme do multideskriptoru novú adresu URL.
  9. Funkcia add_url_to_multi_handle () pridá do multideskriptoru nový deskriptor s danou url.

Spustíme skript:

Mŕtve adresy URL == xample1234.com/ == 404 adries URL == www.google.com/dsfasdfafd == Pracovné adresy URL == ru.php.net/manual/ru/function.time.php www.cssbuttongenerator.com/ csslint. net / codex.wordpress.org/Plugin_API/Action_Reference fortawesome.github.io/Font-Awesome/ fortawesome.github.io/Font-Awesome/ www.oracle.com/technetwork/java/javafx/downloads/index.html kódex. wordpress.org/Plugin_API/Filter_Reference codex.wordpress.org/Roles_and_Capabilities code.google.com/p/google-api-php-client/wiki/OAuth2#Google_APIs_Console jplayer.org/ code.google.com/p/google-api -php-client / developers.google.com/+/ accounts.google.com/ServiceLogin?service=devconsole&passive=1209600&continue=https%3A%2F%2Fcode.google.com%2Fapis%2Fconsole%2F&followup=https%3A%2F % 2Fcode.google.com% 2Fapis% 2Fconsole% 2F daneden.github.io/animate.css/ github.com/daneden/animate.css ru2.php.net/manual/ru/function.autoload.php www.google. com / recaptcha / api / verifikovať phpunit.de/ phpunit.de/manual/current/en/phpunit-book.html

Kontrola trvala asi 2 sekundy. Spustením 10 vlákien súčasne sa výkon zvýši 10-krát v porovnaní s bežnými požiadavkami cURL. Ak chcete získať obsah odpovede servera, použite funkciu curl_multi_getcontent ($ ch) kde $ ch je deskriptor získaný z curl_multi_info_read () .

Ďalšie funkcie cURL v PHP

HTTP overenie

Ak požiadavka HTTP vyžaduje autentifikáciu, použite nasledujúci kód:

$ url = "http://www.somesite.com/members/"; $ ch = curl_init (); curl_setopt ($ ch, CURLOPT_URL, $ url); curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, 1); // odoslanie užívateľského mena a hesla curl_setopt ($ ch, CURLOPT_USERPWD, "myusername: mypassword"); // ak sú povolené presmerovania curl_setopt ($ ch, CURLOPT_FOLLOWLOCATION, 1); // cURL odošle heslo a po presmerovaní curl_setopt ($ ch, CURLOPT_UNRESTRICTED_AUTH, 1); $ output = curl_exec ($ ch); curl_close ($ ch);

FTP upload

PHP má svoju vlastnú knižnicu na prácu s FTP, ale môžete použiť aj cURL:

// prečítanie súboru $ file = fopen ("/ cesta / k / súboru", "r"); // url už obsahuje požadované údaje $ url = "ftp: // meno používateľa: [chránený e-mailom]: 21 / cesta / k / novému / súboru "; $ ch = curl_init (); curl_setopt ($ ch, CURLOPT_URL, $ url); curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, 1); // možnosti curl_setopt ($ ch, CURLOPT_UPLOAD 1 ); curl_setopt ($ ch, CURLOPT_INFILE, $ fp); curl_setopt ($ ch, CURLOPT_INFILESIZE, veľkosť súboru ("/ cesta / k / súboru")); curl_setopt ($ ch, CURLOPT_FTPASCII, 1); $ (výstup = $ curl_exec ch curl_close ($ ch);

Pomocou proxy

Žiadosti možno podať prostredníctvom konkrétneho zástupcu:

$ ch = curl_init (); curl_setopt ($ ch, CURLOPT_URL, "http://www.example.com"); curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, 1); // adresa proxy curl_setopt ($ ch, CURLOPT_PROXY, "11.11.11.11:8080"); // ak sa vyžaduje autorizácia curl_setopt ($ ch, CURLOPT_PROXYUSERPWD, "user: pass"); $ output = curl_exec ($ ch); curl_close ($ ch);

Funkcie spätného volania

Spätné volania je možné využiť počas realizácie požiadavky, bez čakania na jej dokončenie. Napríklad, keď sa načítava odpoveď servera, môžeme použiť už prijaté dáta bez toho, aby sme čakali na úplné načítanie.

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

Funkcia spätného volania musí vrátiť dĺžku reťazca, aby požiadavka fungovala správne.

Pri každom prijatí ďalšej časti odpovede servera sa zavolá spätné volanie.

Záver

V tomto článku sme sa zaoberali pokročilými funkciami cURL v PHP. Keď budete nabudúce musieť zadať požiadavky na adresy URL, použite cURL.

Knižnica CURL (Client URLs) vám umožňuje prenášať súbory na vzdialený počítač pomocou rôznych internetových protokolov. Má veľmi flexibilnú konfiguráciu a umožňuje vykonávať takmer akúkoľvek vzdialenú požiadavku.

CURL podporuje protokoly HTTP, HTTPS, FTP, FTPS, DICT, TELNET, LDAP, FILE a GOPHER, ako aj HTTP-post, HTTP-put, cookies, FTP uploady, nepretržité prerušené prenosy súborov, heslá, čísla portov, certifikáty SSL , Kerberos a proxy.

Pomocou CURL môže webový server fungovať ako úplný klient pre akúkoľvek službu založenú na HTTP, ako je XML-RPC, SOAP alebo WebDAV.

Vo všeobecnosti sa používanie knižnice skladá zo štyroch krokov:

  1. Vytvorenie zdroja CURL pomocou funkcie curl_init.
  2. Nastavenie parametrov pomocou funkcie curl_setopt.
  3. Vykonanie požiadavky pomocou funkcie curl_exec.
  4. Uvoľnenie zdroja CURL pomocou funkcie curl_close.

Jednoduchý príklad použitia CURL

// Inicializácia knižnice curl
if ($ ch = @ curl_init ())
{
// Nastavte adresu URL požiadavky
@ curl_setopt ($ ch, CURLOPT_URL, "http://server.com/");
// Ak je pravda, CURL obsahuje hlavičky vo výstupe
@
// Kam umiestniť výsledok dotazu:
// false - do štandardného výstupného toku,
// true - ako návratová hodnota funkcie curl_exec.
@
// Maximálna doba čakania v sekundách
@
// Nastavte hodnotu poľa User-agent
@ curl_setopt ($ ch, CURLOPT_USERAGENT, "PHP Bot (http://blog.yousoft.ru)");
// Vykonať požiadavku
$ data = @ curl_exec ($ ch);
// Zobrazenie prijatých údajov
echo $ dáta;
// Rozlíšenie zdrojov
@ curl_close ($ ch);
}
?>

Príklad použitia požiadavky GET

$ ch = curl_init ();
// Požiadavka GET je špecifikovaná v reťazci URL
curl_setopt ($ ch, CURLOPT_URL, "http://server.com/?s=CURL");
curl_setopt ($ ch, CURLOPT_HEADER, false);
curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt ($ ch, CURLOPT_CONNECTTIMEOUT, 30);

$ data = curl_exec ($ ch);
curl_close ($ ch);
?>

Odoslanie požiadavky GET sa nelíši od prijatia stránky. Je dôležité poznamenať, že reťazec dotazu je vytvorený takto:

Http://server.com/index.php?name1=value1&name2=value2&name3=value3

kde http://server.com/index.php je adresa stránky, nameX je názov premennej, valueX je hodnota premennej.

Príklad použitia požiadavky POST

$ ch = curl_init ();
curl_setopt ($ ch, CURLOPT_URL, "http://server.com/index.php");
curl_setopt ($ ch, CURLOPT_HEADER, false);
curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, true);
// Musíte výslovne uviesť, že bude existovať požiadavka POST
curl_setopt ($ ch, CURLOPT_POST, true);
// Tu sa odovzdávajú hodnoty premenných
curl_setopt ($ ch, CURLOPT_POSTFIELDS, "s = CURL");
curl_setopt ($ ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt ($ ch, CURLOPT_USERAGENT, "PHP Bot (http://mysite.ru)");
$ data = curl_exec ($ ch);
curl_close ($ ch);
?>

Odoslanie požiadavky POST sa príliš nelíši od odoslania požiadavky GET. Všetky základné kroky zostávajú rovnaké. Premenné sú tiež nastavené v pároch: meno1 = hodnota1 & meno2 = hodnota2.

Príklad autorizácie HTTP

// HTTP autorizácia
$ url = "http://server.com/protected/";
$ ch = curl_init ();


curl_setopt ($ ch, CURLOPT_USERPWD, "mojepouzivatelske meno: mojeheslo");
$ vysledok = curl_exec ($ ch);
curl_close ($ ch);
echo $ výsledok;
?>

Ukážka relácie FTP

$ fp = fopen (__FILE__, "r");
$ url = "ftp: // používateľské meno: [chránený e-mailom]: 21 / cesta / k / novému súboru.php ";
$ 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_FTPASCII, 1);
curl_setopt ($ ch, CURLOPT_INFILESIZE, veľkosť súboru (__FILE__));
$ vysledok = curl_exec ($ ch);
curl_close ($ ch);
?>

Ak máte problémy s používaním cURL, musíte pred volaním curl_close pridať nasledujúce riadky, aby ste získali správu o poslednej vykonanej požiadavke:

print_r (curl_getinfo ($ ch));
echo "číslo chyby cURL:". curl_errno ($ ch). "
" ;
echo "cURL error:". curl_error ($ ch). "
" ;
curl_close ($ ch);
?>

21 odpovedí

Možno už máte kučeru

Možno nebudete musieť nič sťahovať:

  • Ak používate Windows 10 verzie 1803 alebo vyššej, váš operačný systém sa dodáva s kópiou curl už nakonfigurovanou a pripravenou na použitie.
  • Ak máte ezoterickejšie potreby (napríklad potrebujete zostavy cygwin, zostavy tretích strán, libcurl, hlavičkové súbory, zdroje atď.), použite sprievodcu sťahovaním curl. Po zodpovedaní piatich otázok sa vám zobrazí zoznam odkazov na stiahnutie.

    Extrakcia a úprava kučier

    Nájdite curl.exe v stiahnutom balíku; pravdepodobne je pod košom \.

    Vyberte si miesto na pevnom disku, ktoré bude slúžiť ako trvalý domov pre kučery:

    • Ak si chcete vytvoriť curl svoj vlastný priečinok, urobí to C: \ Program Files \ curl \ alebo C: \ curl \.
    • Ak máte veľa voľne spustiteľných súborov a nechcete do PATH pridávať veľa samostatných priečinkov, použite na tento účel jeden priečinok, napríklad C: \ Program Files \ tools \ alebo C: \ tools \.

    Umiestnite curl.exe do priečinka. A nikdy nepresúvajte priečinok ani jeho obsah.

    Potom budete chcieť sprístupniť curl kdekoľvek na príkazovom riadku. Ak to chcete urobiť, pridajte priečinok do PATH takto:

    1. Kliknite na ponuku Štart systému Windows 10. Začnite písať prostredie.
    2. Uvidíte výsledok vyhľadávania. Upravte systémové premenné prostredia... Vyberte toto.
    3. Otvorí sa okno Vlastnosti systému. Kliknite na tlačidlo Premenné prostredia na spodku.
    4. Vyberte premennú Cesta v časti Systémové premenné (spodné pole). Kliknite na tlačidlo Zmeniť.
    5. Kliknite na " Pridať" a vložte cestu do priečinka, kde sa nachádza curl.exe.
    6. Kliknite na dobre, ak je to potrebné. Zatvorte otvorené okná konzoly a znova ich otvorte, aby získali novú PATH.

    Teraz si vychutnajte písanie curl na ľubovoľnom príkazovom riadku. Čas na zábavu!

    Ak chcete spustiť curl z príkazového riadku

    a) Kliknite pravým tlačidlom myši na ikonu „Tento počítač“.

    b) Vyberte "Vlastnosti"

    d) Prejdite na kartu [Rozšírené] – tlačidlo „Premenné prostredia“.

    e) V časti „Systémová premenná“ vyberte „Cesta“ a „Upraviť“

    f) Pridajte bodkočiarku a za ňou cestu, kam ste vložili súbor curl.exe (napr. D: \ software \ curl)

Teraz môžete spustiť z príkazového riadku zadaním:

Curl www.google.com

Počnúc Windowsom 10 verzie 1803 (a staršej, s Insider build 17063), už nebudete inštalovať curl. Windows obsahuje svoj vlastný curl.exe (a tar.exe) v C: \ Windows \ System32 \, ku ktorému máte prístup priamo z vášho bežného CMD.

C: \ Users \ vonc> C: \ Windows \ System32 \ curl.exe --version curl 7.55.1 (Windows) libcurl / 7.55.1 WinSSL Release-Date: Protokoly: dict súbor ftp ftps http https imap imaps pop3 pop3s smtp smtps telnet tftp Vlastnosti: AsynchDNS IPv6 Largefile SSPI Kerberos SPNEGO NTLM SSL C: \ Users \ vonc> C: \ Windows \ System32 \ tar.exe --version bsdtar 3.3.2 - libarchive 3.3.2 zlib / 1.2.5.f- ipp

Pravdepodobne stojí za zmienku, že Powershell v3 a novší obsahuje cmdlet Invoke-WebRequest, ktorý má určité možnosti curlingu. Za zmienku pravdepodobne stoja aj rutiny cmdlet New-WebServiceProxy a Invoke-RestMethod.

Nie som si istý, či vám budú fungovať alebo nie, ale hoci nie som Windows, musím povedať, že sa mi zdá, že objektovo založený prístup, ktorý používa PS, je oveľa jednoduchší na prácu s nástrojmi ako curl, wget atď. . Možno by stálo za to si ich pozrieť

Môžete si vytvoriť najnovšiu verziu curl, openssl, libssh2 a zlib v 3 jednoduchých krokoch podľa tohto návodu.

Curl je vytvorený staticky, takže nemusíte šíriť potrebný dynamický runtime.

Môžete si tiež stiahnuť predpripravenú verziu (x86 a x64).

Hľadal som proces sťahovania Curl a každý, kde povedali, skopíruje súbor curl.exe v System32 ale neposkytli priamy odkaz. tak si tu môžete užiť curl.exeľahko dovnútra priečinok bin jednoducho

rozbaľte ho a potom prejdite do priečinka bin, kde získate súbor exe

Myslel som, že napíšem presne to, čo som urobil (Windows 10, 64-bit):

Vyberte spustiteľný súbor curl.

Vyberte Win64.

Vyberte si všestranné.

Vyberte si kohokoľvek.

curl verzia: 7.53.1 - SSL povolené SSH povolené. Poďakovanie: Viktor Shakats. Tento balík je spustiteľný typ curl. Tento odkaz vám poskytne predkompilovaný binárny súbor curl (alebo v niektorých prípadoch pomocou informácií uvedených na stránke, na ktorú vás tento odkaz zavedie). Môžete alebo nemusíte nainštalovať libcurl ako zdieľanú knižnicu / DLL. Súbor je zabalený pomocou 7zip. 7zip je formát na archiváciu súborov.

Kliknite na stiahnutie.

V priečinku sťahovania by ste mali mať súbor curl-7.53.1-win64-mingw.7z.

Nainštalujte si 7-Zip, ak ho nemáte.

Kliknite pravým tlačidlom myši, 7-Zip, rozbaľte sem. Skopírujte a prilepte extrahovaný súbor niekde ako Z: \ Tools \

Ak sa pozriete do priečinka bin, uvidíte curl.exe. Ak naň dvakrát kliknete, okno rýchlo zabliká a zmizne. Ak ho chcete spustiť, musíte použiť príkazový riadok. Prejdite do priečinka bin a napíšte curl a potom svoje možnosti na vytvorenie požiadavky. Musíte použiť dvojité úvodzovky... Jednoduché úvodzovky nebudú fungovať so zvlnením v systéme Windows.

Teraz musíte do vlastnej premennej Path pridať zvlnenie, aby ste na spustenie programu nemuseli prechádzať do správneho priečinka. Prejdite na Tento počítač, Počítač, Vlastnosti systému, Rozšírené nastavenia systému, prihláste sa ako správca (nie ste správca, však? Nie?). Premenné prostredia, Systémové premenné, pozrite sa na zoznam a vyberte cestu, potom Upraviť, potom Nové, potom napr.

Z: \ Nástroje \ curl-7.53.1-win64-MinGW \ Bin

Ak chcete, môžete pridať spätné lomítko, myslím, že na tom nezáleží. Stláčajte navigačné tlačidlo nahor, až kým nebude v hornej časti zoznamu a ľahko ho uvidíte z predchádzajúcej obrazovky. Kliknite na OK, OK, OK, potom otvorte príkazový riadok a môžete spustiť curl zadaním curl z ľubovoľného priečinka ako každý používateľ. Nezabudnite na dvojité úvodzovky.

Toto je odpoveď, ktorú by som chcel dostať.

Tento inštalačný program mi to uľahčil http://www.confusedbycode.com/curl/

„CURL pre Windows môžete nainštalovať len niekoľkými kliknutiami. Stačí stiahnuť a spustiť inštalačný program z tabuľky nižšie a kliknúť na tlačidlo Inštalovať.“ Predvolená inštalácia zahŕňa.

(PHP 4> = 4.0.2, PHP 5, PHP 7)

curl_setopt - Nastavuje parameter pre reláciu CURL

Zoznam parametrov

CURL deskriptor odvodený z curl_init ().

Nastaviteľný parameter CURLOPT_XXX.

Hodnota opcie.

bool:

Parameter Poznámky
CURLOPT_AUTOREFERER PRAVDA pre automatické nastavenie poľa Referent: v požiadavkách presmerovaných hlavičkou miesto:.
CURLOPT_BINARYTRANSFER PRAVDA vrátiť surovú odpoveď pri použití konštanty CURLOPT_RETURNTRANSFER. Od PHP 5.1.3 už táto možnosť nie je potrebná: pri použití možnosti sa vždy vráti nespracovaný výstup CURLOPT_RETURNTRANSFER.
CURLOPT_COOKIESESSION PRAVDA aby dal aktuálnej relácii pokyn na spustenie nových súborov cookie „relácie“. To spôsobí, že libcurl bude ignorovať všetky cookies "relácie", ktoré by mal načítať z predchádzajúcej relácie. V predvolenom nastavení libcurl vždy ukladá a načítava všetky súbory cookie bez ohľadu na to, či ide o „reláciu“ alebo nie. Súbory cookie „relácie“ sú súbory cookie bez dátumu vypršania platnosti, ktoré by mali existovať iba pre aktuálnu „reláciu“.
CURLOPT_CERTINFO PRAVDA na výstup informácií o certifikáte SSL na streamovanie STDERR s bezpečnými spojeniami. Pridané v cURL 7.19.1. Dostupné od PHP 5.3.2. Pre správnu činnosť vyžaduje zapnutú možnosť CURLOPT_VERBOSE.
CURLOPT_CONNECT_ONLY PRAVDA povie knižnici, aby vykonala potrebné overenie proxy a nastavenie pripojenia, ale neprenášala údaje. Táto možnosť je dostupná pre HTTP, SMTP a POP3. Pridané 7.15.2. Dostupné od PHP 5.5.0.
CURLOPT_CRLF PRAVDA na konverziu zakončení riadkov Unix na CRLF.
CURLOPT_DNS_USE_GLOBAL_CACHE PRAVDA používať globálnu vyrovnávaciu pamäť DNS. Táto možnosť nie je bezpečná pre vlákna a je predvolene povolená.
CURLOPT_FAILONERROR PRAVDA pre podrobné hlásenie o zlyhaní, ak je prijatý kód HTTP väčší alebo rovný 400. Predvolené správanie vráti stránku ako zvyčajne, pričom kód ignoruje.
CURLOPT_FILETIME PRAVDA pokúsiť sa získať dátum úpravy odstráneného dokumentu. Túto hodnotu možno získať pomocou parametra CURLINFO_FILETIME z funkcie curl_getinfo ().
CURLOPT_FOLLOWLOCATION PRAVDA sledovať ľubovoľný nadpis "Poloha:" odoslaný serverom vo svojej odpovedi (všimnite si, že sa to deje rekurzívne, PHP bude nasledovať všetky odoslané hlavičky "Poloha:", okrem prípadu, keď je nastavená konštanta CURLOPT_MAXREDIRS).
CURLOPT_FORBID_REUSE PRAVDA vynútiť zatvorenie pripojenia po dokončení spracovania, aby sa nedalo znova použiť.
CURLOPT_FRESH_CONNECT PRAVDA vynútiť použitie nového pripojenia namiesto pripojenia vo vyrovnávacej pamäti.
CURLOPT_FTP_USE_EPRT PRAVDA používať EPRT (a LPRT) s aktívnym sťahovaním cez FTP. Použite FALSE aby ste zakázali EPRT a LPRT a používali iba PORT.
CURLOPT_FTP_USE_EPSV PRAVDA na úvodnú skúšku príkazu EPSV pri prenosoch FTP. Ak príkaz zlyhá, vráti sa späť na PASV. Inštalovať v FALSE zakázať EPSV.
CURLOPT_FTP_CREATE_MISSING_DIRS PRAVDA na vytvorenie chýbajúcich adresárov, ak operácia FTP zistí neexistujúcu cestu.
CURLOPT_FTPAPPEND PRAVDA na zapísanie odstráneného súboru na koniec namiesto prepísania existujúceho súboru.
CURLOPT_TCP_NODELAY Natrvalo určuje, či sa má voľba TCP_NODELAY nastaviť alebo vymazať (1 = nastavené, 0 = vymazané). V predvolenom nastavení je táto možnosť vymazaná. K dispozícii od PHP 5.2.1 pre verzie vytvorené pomocou knižnice libcurl 7.11.2 alebo novšej.
CURLOPT_FTPASCII Alias CURLOPT_TRANSFERTEXT... Namiesto toho ho použite.
CURLOPT_FTPLISTONLY PRAVDA vrátiť iba zoznam mien z adresára FTP.
CURLOPT_HEADER PRAVDA na zahrnutie hlavičiek do výstupu.
CURLINFO_HEADER_OUT PRAVDA na sledovanie reťazca dopytu deskriptora. Dostupné od PHP 5.1.3. Predpona CURLINFO_ používané účelovo.
CURLOPT_HTTPGET PRAVDA pre resetovanie metódy HTTP požiadavky na metódu GET. Keďže GET je predvolená hodnota, tento parameter je potrebný len vtedy, ak bola predtým zmenená metóda požiadavky.
CURLOPT_HTTPPROXYTUNNEL PRAVDA tunelovať cez zadaný HTTP proxy.
CURLOPT_MUTE PRAVDAúplne zakázať správy funkcie cURL. Odstránené v cURL 7.15.5 (možno použiť možnosť CURLOPT_RETURNTRANSFER)
CURLOPT_NETRC PRAVDA na prečítanie súboru ~ / .netrc pre prihlasovacie meno a heslo pre vzdialenú lokalitu, ku ktorej sa nadväzuje spojenie.
CURLOPT_NOBODY PRAVDA na vylúčenie tela odpovede z výstupu. Metóda požiadavky je nastavená na HEAD. Zmena tohto parametra v FALSE nezmení späť na GET.
CURLOPT_NOPROGRESS

PRAVDA na prepísanie indikátora priebehu pri prenosoch cURL.

Komentujte:

PHP automaticky nastaví tento parameter na PRAVDA, zmeňte ho len na účely ladenia.

CURLOPT_NOSIGNAL PRAVDA ignorovať akúkoľvek funkciu cURL, ktorá posiela signály do PHP procesu. Táto možnosť je predvolene povolená vo viacvláknových SAPI, aby možnosti časového limitu fungovali správne.
CURLOPT_POST PRAVDA použiť bežný HTTP POST. Táto metóda POST používa obvyklé bežne používané vo formulároch HTML.
CURLOPT_PUT PRAVDA na odovzdanie súboru pomocou metódy HTTP PUT. Použitý súbor je potrebné nastaviť pomocou možností CURLOPT_INFILE a CURLOPT_INFILESIZE.
CURLOPT_RETURNTRANSFER PRAVDA vrátiť výsledok prenosu ako reťazec z curl_exec () namiesto priameho výstupu do prehliadača.
CURLOPT_SAFE_UPLOAD PRAVDA zakázať podporu prefixov @ pre nahrané súbory v CURLOPT_POSTFIELDSčo znamená, že hodnoty prešli z @ môžu byť bezpečne prenášané ako polia. Namiesto predpony môžete použiť možnosť CURLFile d. Pridané v PHP 5.5.0 s predvoleným nastavením FALSE... V PHP 5.6.0 je predvolená hodnota PRAVDA.
CURLOPT_SSL_VERIFYPEER FALSE aby cURL prestal kontrolovať hostiteľský certifikát. Alternatívne overené certifikáty je možné zadať pomocou parametra CURLOPT_CAINFO alebo adresár s certifikátmi určenými parametrom CURLOPT_CAPATH. Predvolená hodnota je PRAVDA od cURL 7.10. Distribúcia je štandardne nainštalovaná od cURL 7.10.
CURLOPT_TRANSFERTEXT PRAVDA na použitie režimu ASCII na prenosy FTP. Pri použití LDAP sa údaje namiesto HTML vrátia ako obyčajný text. V systémoch Windows stream STDOUT nie je nastavený na binárny režim.
CURLOPT_UNRESTRICTED_AUTH PRAVDA pokračovať v odosielaní prihlasovacieho mena a hesla počas presmerovaní (pri použití CURLOPT_FOLLOWLOCATION), aj keď sa zmení názov hostiteľa.
CURLOPT_UPLOAD PRAVDA na prípravu na nahranie súboru na server.
CURLOPT_VERBOSE PRAVDA na zobrazenie dodatočných informácií. Zapisuje výstup do streamu STDERR, alebo súbor určený parametrom CURLOPT_STDERR.

Pre nasledujúce hodnoty parametra voľby musí byť parameter value typu celé číslo:

Parameter Hodnota nastavenej hodnoty Poznámky
CURLOPT_BUFFERSIZE Veľkosť vyrovnávacej pamäte použitej na každé čítanie. Neexistuje však žiadna záruka, že táto žiadosť bude dokončená. Pridané vo verzii cURL 7.10.
CURLOPT_CLOSEPOLICY Jedna zo stálic CURLCLOSEPOLICY_ *.

Komentujte:

Táto možnosť bola zastaraná, pretože nebola nikdy implementovaná v cURL a nefungovala.

Odstránené v PHP 5.6.0.
CURLOPT_CONNECTTIMEOUT Počet sekúnd čakania pri pokuse o pripojenie. Použite 0 na nekonečné čakanie.
CURLOPT_CONNECTTIMEOUT_MS Počet milisekúnd, ktoré sa majú čakať pri pokuse o pripojenie. Použite 0 na nekonečné čakanie. Ak je libcurl skompilovaný pomocou štandardného nástroja na prekladanie názvov systému, potom časový limit pripojenia uplynie na celú sekundu s minimálnym časovým limitom 1 sekunda. Pridané vo verzii cURL 7.16.2. Dostupné od PHP 5.2.3.
CURLOPT_DNS_CACHE_TIMEOUT Počet sekúnd, počas ktorých sú záznamy DNS uchovávané v pamäti. Štandardne je tento parameter 120 (2 minúty).
CURLOPT_FTPSSLAUTH Metóda overenia FTP (v aktívnom režime): CURLFTPAUTH_SSL(najprv sa kontroluje protokol SSL) CURLFTPAUTH_TLS(najprv sa kontroluje TLS) príp CURLFTPAUTH_DEFAULT(cURL sa rozhodne sám za seba). Pridané vo verzii cURL 7.12.2.
CURLOPT_HTTP_VERSION CURL_HTTP_VERSION_NONE (v predvolenom nastavení si CURL vyberá, ktorá verzia sa má použiť), CURL_HTTP_VERSION_1_0 (vynútiť HTTP / 1.0) alebo CURL_HTTP_VERSION_1_1 (vynútiť HTTP / 1.1).
CURLOPT_HTTPAUTH

Je možné použiť bitový operátor | (alebo) kombinovať niekoľko metód. V tomto prípade cURL požiada server o podporované metódy autorizácie a vyberie tú najlepšiu.

CURLAUTH_ANY je alias CURLAUTH_BASIC | CURLAUTH_DIGEST | CURLAUTH_GSSNEGOTIATE | CURLAUTH_NTLM.

CURLAUTH_ANYSAFE je alias CURLAUTH_DIGEST | CURLAUTH_GSSNEGOTIATE | CURLAUTH_NTLM.

CURLOPT_INFILESIZE Očakávaná veľkosť súboru v bajtoch, keď sa súbor nahrá na vzdialený server. Upozorňujeme, že použitie tejto možnosti nezastaví ďalšie odosielanie údajov prekračujúcich túto hodnotu, pretože odosielané údaje závisia od výsledku. CURLOPT_READFUNCTION.
CURLOPT_LOW_SPEED_LIMIT Horná hranica rýchlosti prenosu údajov v bajtoch za sekundu. Overenie prebieha v rámci CURLOPT_LOW_SPEED_TIME sekúnd, po ktorých PHP považuje prenos za príliš pomalý a preruší sa.
CURLOPT_LOW_SPEED_TIME Maximálny počet sekúnd, počas ktorých prenosová rýchlosť nesmie prekročiť CURLOPT_LOW_SPEED_LIMIT inak PHP označí prenos ako príliš pomalý a preruší sa.
CURLOPT_MAXCONNECTS Maximálny počet trvalých pripojení. Po dosiahnutí limitu sa parameter používa na určenie spojenia, ktoré sa má uzavrieť. CURLOPT_CLOSEPOLICY.
CURLOPT_MAXREDIRS Maximálny počet prijatých presmerovaní. Tento parameter použite v spojení s parametrom CURLOPT_FOLLOWLOCATION.
CURLOPT_PORT Alternatívny port pripojenia.
CURLOPT_POSTREDIR Bitová maska ​​obsahujúca 1 (301 presunutých natrvalo), 2 (302 nájdených) a 4 (303 Pozri iné) na určenie, či sa má spracovať metóda HTTP POST, keď je táto možnosť povolená CURLOPT_FOLLOWLOCATION ak došlo k zadanému typu presmerovania. Pridané v cURL 7.19.1. Dostupné od PHP 5.3.2.
CURLOPT_PROTOCOLS

Bitová maska ​​hodnôt CURLPROTO_ *... Táto maska ​​obmedzuje protokoly používané libcurl. To umožňuje libcurl pracovať s veľkým počtom protokolov a obmedziť určité prenosy, aby fungovali iba pre ich podmnožinu. V predvolenom nastavení používa libcurl všetky podporované protokoly. Pozri tiež parameter CURLOPT_REDIR_PROTOCOLS.

Platné hodnoty protokolu: CURLPROTO_HTTP, CURLPROTO_HTTPS, CURLPROTO_FTP, CURLPROTO_FTPS, CURLPROTO_SCP, CURLPROTO_SFTP, CURLPROTO_TELNET, CURLPROTOLPROLURTO_TELNET, CURLPROTOLPROLURTO

CURLOPT_PROXYAUTH Metódy autorizácie HTTP používané pri pripájaní k proxy serveru. Použite rovnaké bitové masky, aké sú opísané pre parameter CURLOPT_HTTPAUTH... V súčasnosti sú pre autorizáciu proxy podporované iba CURLAUTH_BASIC a CURLAUTH_NTLM. Pridané vo verzii cURL 7.10.7.
CURLOPT_PROXYPORT Číslo portu proxy servera, ku ktorému sa pripája. Toto číslo je možné nastaviť aj pomocou parametra CURLOPT_PROXY.
CURLOPT_PROXYTYPE Buď CURLPROXY_HTTP (predvolené) alebo CURLPROXY_SOCKS5. Pridané vo verzii cURL 7.10.
CURLOPT_REDIR_PROTOCOLS Bitová maska ​​hodnôt CURLPROTO_ *... Táto bitová maska ​​obmedzuje protokoly používané libcurl pri presmerovaní (s možnosťou CURLOPT_FOLLOWLOCATION). To vám umožňuje obmedziť množinu protokolov používaných na presmerovania pre určité prenosy. Štandardne libcurl podporuje všetky protokoly okrem FILE a SCP. Vo verziách pred 7.19.4 sa presmerovanie používalo pre všetky protokoly bez výnimky. Pozri tiež popis parametrov CURLOPT_PROTOCOLS pre zoznam konštánt s hodnotami protokolu. Pridané vo verzii cURL 7.19.4.
CURLOPT_RESUME_FROM Posun začiatku prenosu v bajtoch.
CURLOPT_SSL_VERIFYHOST Pomocou 1 skontrolujte existenciu spoločného názvu v certifikáte SSL. Pomocou 2 skontrolujte, či bežný názov existuje a či sa zhoduje so zadaným hostiteľom. V bojovom prostredí by mal byť tento parameter nastavený na 2 (štandardne nastavené). Podpora pre hodnotu 1 bola odstránená v cURL 7.28.1
CURLOPT_SSLVERSION Jedna zo stálic CURL_SSLVERSION_DEFAULT (0), CURL_SSLVERSION_TLSv1 (1), CURL_SSLVERSION_SSLv2 (2), CURL_SSLVERSION_SSLv3 (3), CURL_SSLVERSION_TLSv1_0 (4), CURL_SSLVERSION_TLSv1_1(5) alebo CURL_SSLVERSION_TLSv1_2 (6).
CURLOPT_TIMECONDITION Metóda interpretácie parametrov CURLOPT_TIMEVALUE... Použite CURL_TIMECOND_IFMODSINCE na vrátenie stránky, iba ak sa zmenila od času uvedeného v parametri CURLOPT_TIMEVALUE... Ak sa stránka nezmenila, názov sa vráti "304 neupravené", čo znamená, že parameter CURLOPT_HEADER nainštalovaný v PRAVDA... Pre opačný efekt použite CURL_TIMECOND_IFUNMODSINCE. Predvolená hodnota je CURL_TIMECOND_IFMODSINCE.
CURLOPT_TIMEOUT Maximálny počet sekúnd povolený na vykonanie funkcií cURL.
CURLOPT_TIMEOUT_MS Maximálny počet milisekúnd povolený na spustenie funkcií cURL. Ak je libcurl vytvorený pomocou bežného nástroja na prekladanie názvov systému, potom táto medzera pripojenia bude stále používať jednosekundové zaokrúhľovanie časových limitov s minimálnym povoleným časovým limitom jedna sekunda. Pridané vo verzii cURL 7.16.2. Dostupné od PHP 5.2.3.
CURLOPT_TIMEVALUE Počet sekúnd od 1. januára 1970. Tento čas bude použitý parametrom CURLOPT_TIMECONDITION... Štandardne sa používa parameter CURL_TIMECOND_IFMODSINCE.
CURLOPT_MAX_RECV_SPEED_LARGE Ak rýchlosť skoku prekročí túto hodnotu (uvedenú v bajtoch za sekundu) v priemere počas celého prenosu, skok bude pozastavený, aby sa udržala priemerná rýchlosť menšia alebo rovná tomuto parametru. Štandardne nie je rýchlosť obmedzená.
CURLOPT_MAX_SEND_SPEED_LARGE Ak sťahovanie na server prekročí túto hodnotu (uvedenú v bajtoch za sekundu) v priemere počas celého prenosu, sťahovanie sa pozastaví, aby sa udržala priemerná rýchlosť nižšia alebo rovná tomuto parametru. Štandardne nie je rýchlosť obmedzená. Pridané vo verzii cURL 7.15.5. K dispozícii od PHP 5.4.0.
CURLOPT_SSH_AUTH_TYPES Bitová maska ​​pozostávajúca z jednej alebo viacerých konštánt: CURLSSH_AUTH_PUBLICKEY, CURLSSH_AUTH_PASSWORD, CURLSSH_AUTH_HOST, CURLSSH_AUTH_KEYBOARD... Inštalácia CURLSSH_AUTH_ANY aby si libcurl vybral jeden z nich sám. Pridané v cURL 7.16.1.
CURLOPT_IPRESOLVE Umožňuje aplikácii vybrať typ adresy IP, pomocou ktorej sa určí názov hostiteľa. Je to potrebné, ak používate názov hostiteľa, ktorý je odvodený z viac ako jednej verzie adresy IP. Možné hodnoty sú CURL_IPRESOLVE_WHATEVER, CURL_IPRESOLVE_V4, CURL_IPRESOLVE_V6 a predvolene CURL_IPRESOLVE_WHATEVER. Pridané v cURL 7.10.8.

Pre nasledujúce hodnoty parametra voľby musí byť parameter value typu reťazec:

Parameter Hodnota nastavenej hodnoty Poznámky
CURLOPT_CAINFO Názov súboru obsahujúceho jeden alebo viacero certifikátov, voči ktorým budú uzly kontrolovať. Tento parameter má význam iba vtedy, keď sa používa v spojení s CURLOPT_SSL_VERIFYPEER. Vyžaduje absolútnu cestu.
CURLOPT_CAPATH Adresár obsahujúci niekoľko certifikátov CA. Použite tento parameter v spojení s CURLOPT_SSL_VERIFYPEER.
CURLOPT_COOKIE Obsah hlavičky "Cookie:" použitý v požiadavke HTTP. Upozorňujeme, že viaceré súbory cookie sú oddelené bodkočiarkou, za ktorou nasleduje medzera (napríklad „ ovocie = jablko; farba = červená")
CURLOPT_COOKIEFILE Názov súboru obsahujúceho cookies. Tento súbor musí byť vo formáte Netscape alebo jednoducho hlavičky HTTP zapísané do súboru. Ak ako názov súboru zadáte prázdny reťazec, cookies sa neuložia, ale ich spracovanie bude stále povolené.
CURLOPT_COOKIEJAR Názov súboru, do ktorého sa uložia všetky interné cookies aktuálneho prenosu po zatvorení deskriptora, napríklad po volaní curl_close.
CURLOPT_CUSTOMREQUEST

Namiesto toho bola použitá metóda natívnej požiadavky "ZÍSKAŤ" alebo "HLAVA" pri vytváraní požiadavky HTTP. To je užitočné pre otázky "DELETE" alebo iné zriedkavejšie požiadavky HTTP. Platným významom by boli slová ako "ZÍSKAŤ", "POST", "PRIPOJIŤ" atď; tie. nezadávajte sem celý riadok požiadavky HTTP. Napríklad indikácia "ZÍSKAJTE /index.html HTTP / 1.0 \ r \ n \ r \ n" bude zle.

Komentujte:

Túto funkciu nepoužívajte, kým neoveríte, že server podporuje tento typ požiadavky.

CURLOPT_EGDSOCKET Páči sa mi to CURLOPT_RANDOM_FILE okrem toho, že názov súboru je nastavený na soket Entropy Gathering Daemon.
CURLOPT_ENCODING Obsah hlavičky "Accept-Encoding:"... To vám umožní dekódovať požiadavku. Podporované kódovania sú "identita", "vyfúknuť" a "gzip"... Ak odošlete prázdny reťazec, "" sa odošle hlavička obsahujúca všetky podporované typy kódovania. Pridané vo verzii cURL 7.10.
CURLOPT_FTPPORT Hodnota, ktorá sa použije na určenie adresy IP pre príkaz FTP "PORT". Príkaz "PORT" informuje server, na ktorú IP adresu sa má pripojiť. Môže to byť IP adresa, názov hostiteľa, názov sieťového rozhrania (pod Unixom) alebo len "-" na použitie systémovej predvolenej IP adresy.
CURLOPT_INTERFACE Názov sieťového rozhrania, ktoré sa má použiť. Môže to byť názov rozhrania, adresa IP alebo názov hostiteľa.
CURLOPT_KEYPASSWD Na používanie súkromného kľúča je potrebné heslo CURLOPT_SSLKEY alebo CURLOPT_SSH_PRIVATE_KEYFILE. Pridané v cURL 7.16.1.
CURLOPT_KRB4LEVEL Úroveň zabezpečenia KRB4 (Kerberos 4). Každá z nasledujúcich hodnôt (v poradí od najslabšej po najsilnejšiu) je správna: "jasný", "bezpečný", "dôverné", "súkromné".... Ak sa zadaný reťazec líši od zadaných hodnôt, použije sa hodnota "súkromné"... Nastavenie tohto parametra na NULOVÝúplne deaktivuje bezpečnosť KRB4. Zabezpečenie KRB4 momentálne funguje iba s transakciami FTP.
CURLOPT_POSTFIELDS Všetky údaje odovzdané v požiadavke HTTP POST. Ak chcete preniesť súbor, zadajte pred názov súboru @ a tiež použiť úplnú cestu k súboru. Typ súboru je možné určiť aj pomocou formátu " typ = mimetyp"po názve súboru. Tento parameter možno odovzdať ako reťazec zakódovaný v adrese URL, napríklad" para1 = hodnota1 & para2 = hodnota2 & ...", a ako pole, ktorého kľúče sú názvy polí a hodnoty sú ich obsahom. Ak je hodnota pole, hlavička Druh obsahu bude nastavená na viacdielne / formulárové údaje. Od PHP 5.2.0 pri prenose súborov s predponou @ , hodnota musí byť pole. Od PHP 5.5.0 je predpona @ je zastarané a súbory je možné odosielať pomocou CURLFile... Predpona @ možno deaktivovať tak, aby hodnoty začínajúce na @ nastavením možnosti CURLOPT_SAFE_UPLOAD v hodnote PRAVDA.
CURLOPT_PROXY HTTP proxy, cez ktorý budú smerované požiadavky.
CURLOPT_PROXYUSERPWD Prihlasovacie meno a heslo napísané vo formulári ":" používa sa pri pripájaní cez proxy.
CURLOPT_RANDOM_FILE Názov súboru použitého na inicializáciu generátora náhodných čísel SSL.
CURLOPT_RANGE Rozsah údajov, ktoré sa majú načítať vo formáte "X-Y" kde X alebo Y môžu byť vynechané. Protokol HTTP podporuje aj prenos viacerých rozsahov, oddelených čiarkami, sú uvedené vo formáte "X-Y, N-M".
CURLOPT_REFERER Obsah hlavičky "Referent:" ktoré sa majú použiť v požiadavke HTTP.
CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 Reťazec obsahujúci 32 hexadecimálnych číslic. Reťazec musí byť MD5 kontrolný súčet verejného kľúča vzdialeného počítača a libcurl resetuje pripojenie k vzdialenému hostiteľovi, kým sa kontrolný súčet nezhoduje s verejným kľúčom. Táto možnosť je určená len pre prenos dát pomocou SCP a SFTP. Pridané v cURL 7.17.1.
CURLOPT_SSH_PUBLIC_KEYFILE Názov súboru pre váš verejný kľúč. Ak nie je nastavené, libcurl predvolene použije súbor $ HOME / .ssh / id_dsa.pub, ak je nastavená premenná prostredia HOME, a súbor "id_dsa.pub" v aktuálnom adresári, ak premenná HOME nie je nastavená. Pridané v cURL 7.16.1.
CURLOPT_SSH_PRIVATE_KEYFILE Názov súboru pre váš súkromný kľúč. Ak nie je nastavené, libcurl predvolene použije súbor $ HOME / .ssh / id_dsa, ak je nastavená premenná prostredia HOME, a súbor "id_dsa" v aktuálnom adresári, ak premenná HOME nie je nastavená. Ak je súbor chránený heslom, nastavte heslo pomocou CURLOPT_KEYPASSWD. Pridané v cURL 7.16.1.
CURLOPT_SSL_CIPHER_LIST Zoznam šifier používaných pri prenosoch SSL. Napríklad, RC4-SHA a TLSv1 sú platné zoznamy šifier.
CURLOPT_SSLCERT Názov súboru so správne naformátovaným certifikátom PEM.
CURLOPT_SSLCERTPASSWD Na používanie certifikátu sa vyžaduje heslo CURLOPT_SSLCERT.
CURLOPT_SSLCERTTYPE Formát certifikátu. Podporované formáty "PEM"(predvolené), "DER" a "ANG". Pridané vo verzii cURL 7.9.3.
CURLOPT_SSLENGINE Identifikátor šifrovacieho mechanizmu pre súkromný kľúč SSL špecifikovaný v parametri CURLOPT_SSLKEY.
CURLOPT_SSLENGINE_DEFAULT Identifikátor šifrovacieho mechanizmu používaného pre operácie asymetrického šifrovania.
CURLOPT_SSLKEY Názov súboru so súkromným kľúčom SSL.
CURLOPT_SSLKEYPASSWD

Na používanie súkromného kľúča SSL špecifikovaného parametrom sa vyžaduje tajné heslo CURLOPT_SSLKEY.

Komentujte:

Keďže tento parameter obsahuje cenné heslo, nezabudnite si tento PHP skript uložiť na bezpečnom mieste.

CURLOPT_SSLKEYTYPE Typ súkromného kľúča SSL špecifikovaný v parametri CURLOPT_SSLKEY... Podporované sú nasledujúce typy kľúčov: "PEM"(predvolené), "DER" a "ANG".
CURLOPT_URL URL na stiahnutie. Tento parameter je možné nastaviť aj pri inicializácii relácie pomocou curl_init ().
CURLOPT_USERAGENT Obsah hlavičky "User-Agent:" odoslaný v HTTP požiadavke.
CURLOPT_USERPWD Prihlasovacie meno a heslo používané pri pripájaní uvedené vo formáte ":" .

Pre nasledujúce hodnoty parametra voľby musí byť parameter value pole:

Parameter Hodnota nastavenej hodnoty Poznámky
CURLOPT_HTTP200ALIASES Súbor odpovedí HTTP 200, ktoré budú interpretované ako správne odpovede, nie ako chybné. Pridané vo verzii cURL 7.10.3.
CURLOPT_HTTPHEADER Pole HTTP hlavičiek, ktoré sa majú nastaviť, vo formáte poľa ("Content-type: text / plain", "Content-length: 100")
CURLOPT_POSTQUOTE Pole FTP príkazov, ktoré sa majú vykonať na serveri po vykonaní FTP požiadavky.
CURLOPT_QUOTE Pole FTP príkazov, ktoré sa majú vykonať na serveri pred vykonaním FTP požiadavky.

Pre nasledujúce hodnoty parametra option musí byť parameter value deskriptor toku (vrátený napr. funkciou fopen ()):

Parameter Hodnota nastavenej hodnoty
CURLOPT_FILE Súbor, do ktorého sa zapíše výsledok prenosu. Predvolený je výstupný tok STDOUT(okno prehliadača).
CURLOPT_INFILE Súbor, z ktorého sa majú načítať údaje pri nahrávaní na server.
CURLOPT_STDERR Alternatívny súbor pre chybový výstup, ktorý sa používa namiesto chybového prúdu STDERR.
CURLOPT_WRITEHEADER Súbor, do ktorého sa zapíšu hlavičky aktuálnej operácie.

Pre nasledujúce hodnoty možností musí byť hodnota platným názvom funkcie alebo uzáverom:

Parameter Hodnota nastavenej hodnoty
CURLOPT_HEADERFUNCTION Funkcia spätného volania má dva parametre. Prvý parameter je deskriptor cURL, druhý parameter je reťazec s hlavičkami na zápis. Hlavičky musia byť napísané pomocou tejto funkcie spätného volania. Mal by vrátiť počet zapísaných bajtov.
CURLOPT_PASSWDFUNCTION Funkcia spätného volania má tri parametre. Prvý parameter je deskriptor cURL, druhý parameter je výzva na zadanie hesla a tretí parameter je maximálna dĺžka hesla. Mal by vrátiť reťazec obsahujúci heslo.
CURLOPT_PROGRESSFUNCTION

Funkcia spätného volania má päť parametrov. Prvým je deskriptor cURL, druhým je celkový počet očakávaných bajtov stiahnutých zo servera, tretím je počet už stiahnutých bajtov, štvrtým je celkový počet očakávaných bajtov odoslaných na server a piaty je počet už odoslaných bajtov.

Komentujte:

Funkcia spätného volania sa volá iba v prípade možnosti CURLOPT_NOPROGRESS nastavený na FALSE.

Ak chcete prenos zrušiť, môžete vrátiť nenulovú hodnotu. V tomto prípade bude zaúčtovaná chyba CURLE_ABORTED_BY_CALLBACK.

CURLOPT_READFUNCTION Funkcia spätného volania má tri parametre. Prvý parameter je deskriptor cURL, druhý parameter je zdroj streamu odovzdaný do cURL cez voľbu CURLOPT_INFILE a tretí parameter je maximálne povolené množstvo dát, ktoré sa majú prečítať. Funkcia spätného volania musí vrátiť reťazec, ktorý nie je dlhší ako požadované množstvo údajov, zvyčajne čítaním z odovzdaného zdroja streamovania. Mal by vrátiť prázdny reťazec na signalizáciu konca súboru EOF.
CURLOPT_WRITEFUNCTION Funkcia spätného volania má dva parametre. Prvý parameter je deskriptor cURL a druhý parameter je reťazec s údajmi na zápis. Údaje je potrebné uložiť pomocou tejto funkcie. Musí vrátiť presný počet zapísaných bajtov, inak sťahovanie zlyhá s chybou.

Iné významy:

Návratové hodnoty

Návraty PRAVDA pri úspešnom ukončení, príp FALSE v prípade chyby.

Zoznam zmien

Verzia Popis
5.6.0 Možnosť CURL_SAFE_UPLOAD teraz má predvolenú hodnotu PRAVDA.
5.6.0 Odstránená možnosť CURLOPT_CLOSEPOLICY a s ním spojené významy.
5.5.0 Zdroj CURL pridaný ako prvý argument do funkcie spätného volania CURLOPT_PROGRESSFUNCTION.
5.5.0 Pridaná možnosť CURLOPT_SHARE.
5.3.0 Pridaná možnosť CURLOPT_PROGRESSFUNCTION.
5.2.10 Pridané parametre CURLOPT_PROTOCOLS a CURLOPT_REDIR_PROTOCOLS.
5.1.0 Pridané parametre CURLOPT_AUTOREFERER, CURLOPT_BINARYTRANSFER, CURLOPT_FTPSSLAUTH, CURLOPT_PROXYAUTH a CURLOPT_TIMECONDITION.
5.0.0 Pridané parametre CURLOPT_FTP_USE_EPRT, CURLOPT_NOSIGNAL, CURLOPT_UNRESTRICTED_AUTH, CURLOPT_BUFFERSIZE, CURLOPT_HTTPAUTH, CURLOPT_PROXYPORT, CURLOPT_PROXYTYPE, CURLOPT_SSLCERTTYPE a CURLOPT_HTTP200ALIASES.

Príklady

Príklad č. 1 Inicializácia relácie CURL a načítanie webovej stránky

// vytvorte nový zdroj cURL
$ ch = curl_init ();

/ * http: //localhost/upload.php:
print_r ($ _ POST);
print_r ($ _ FILES);
*/

$ ch = curl_init ();

$ data = pole ("meno" => "Foo", "file" => "@ / home / user / test.png");

Curl_setopt ($ ch, CURLOPT_URL, "http: //localhost/upload.php");
curl_setopt ($ ch, CURLOPT_POST, 1);
curl_setopt ($ ch, CURLOPT_POSTFIELDS, $ data);

Curl_exec ($ ch);
?>

Výsledok tohto príkladu:

Pole (=> Foo) Pole (=> Pole (=> test.png => obrázok / png => / tmp / phpcpjNeQ => 0 => 279))

Poznámky (upraviť)

Komentujte:

Odovzdanie poľa do CURLOPT_POSTFIELDS kóduje údaje ako viacdielne / formulárové údaje, zatiaľ čo odovzdanie reťazca zakódovaného do adresy URL zakóduje údaje ako aplikácia / x-www-form-urlencoded.

Č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 testovať dostupnosť webových stránok, kontrolovať odoslané a prijaté hlavičky a ďalšie.

Na vyriešenie takýchto úloh a úloh podobného kruhu môžete použiť pomôcku curl. Umožňuje vám riešiť oveľa širšiu škálu úloh vrátane dokonca napodobňovania 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é funkcie stránkovania URL a prenosu súborov. Knižnica podporuje nasledujúce protokoly: 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 okolo tejto knižnice. Práve na túto pomôcku sa zameriame v tomto článku.

Príkaz Curl

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é potrebujeme. Syntax nástroja je veľmi jednoduchá:

$ odkaz možnosti curl

Teraz sa pozrime na hlavné možnosti:

  • -# - zobraziť jednoduchý indikátor priebehu počas načítania;
  • -0 - použite protokol http 1.0;
  • -1 - používať šifrovací protokol tlsv1;
  • -2 - použite sslv2;
  • -3 - použite sslv3;
  • -4 - používať ipv4;
  • -6 - používať ipv6;
  • -A- zadajte svojho USER_AGENT;
  • -b- uložiť súbor cookie do súboru;
  • -c- odoslať súbor cookie na server zo súboru;
  • -C- pokračovať v načítavaní súboru od bodu zlomu alebo zadaného posunu;
  • -m- maximálny čas čakania na odpoveď zo servera;
  • -d- odosielanie údajov metódou POST;
  • -D- uložiť hlavičky vrátené serverom do súboru;
  • -e- nastavte pole Referer-uri, označuje, z ktorej stránky používateľ prišiel;
  • -E- použiť externý SSL certifikát;
  • -f- nezobrazovať chybové hlásenia;
  • -F- zasielať údaje vo forme formulára;
  • -G- ak je táto možnosť povolená, potom sa všetky údaje špecifikované vo voľbe -d prenesú pomocou metódy GET;
  • -H- prenos hlavičiek na server;
  • -Ja- prijímať iba hlavičku HTTP a ignorovať celý obsah stránky;
  • -j- čítať a odosielať cookie zo súboru;
  • -J- odstrániť hlavičku z požiadavky;
  • -L- prijímať a spracovávať presmerovania;
  • -s- maximálny počet presmerovaní pomocou polohy;
  • -o- výstup obsahu stránky do súboru;
  • -O- uložiť obsah do súboru s názvom stránky alebo súboru na serveri;
  • -p- použiť proxy;
  • --proto- uveďte protokol, ktorý sa má použiť;
  • -R- uložiť čas poslednej úpravy zmazaného súboru;
  • -s- zobrazovať minimum informácií o chybách;
  • -S- zobrazenie chybových hlásení;
  • -T- nahrať súbor na server;
  • -v- najpodrobnejší výstup;
  • -y- minimálna rýchlosť sťahovania;
  • -Y- maximálna rýchlosť sťahovania;
  • -z- stiahnuť súbor iba vtedy, ak bol zmenený neskôr ako v určenom čase;
  • -V- zobraziť verziu.

Toto nie sú všetky možnosti curl linux, ale tu sú všetky základné, ktoré budete musieť použiť.

Ako môžem použiť curl?

Prebrali sme všetko, čo súvisí s teóriou práce s nástrojom curl, teraz je čas prejsť na prax a zvážiť príklady príkazu curl.

Najčastejšou úlohou je toto. Stiahnutie súboru je veľmi jednoduché. Na tento účel stačí odovzdať 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 ale čaká jedno prekvapenie, celý obsah súboru sa odošle na štandardný výstup. Ak ho chcete zapísať do nejaké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 zmenený:

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

Obmedzenie rýchlosti

Rýchlosť sťahovania môžete obmedziť na požadovaný limit, aby ste nepreťažili sieť voľbou -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ž prerušiť pripojenie, ak rýchlosť nie je dostatočná, na tento účel použite možnosť -Y:

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

Prenos súboru

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

Alebo skontrolujeme odoslanie súboru cez HTTP, na to existuje špeciálna služba:

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

V odpovedi vám nástroj povie, kde môžete nájsť stiahnutý súbor.

Odosielanie údajov POST

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 z rôznych formulárov. Na odoslanie takejto požiadavky použite voľbu -d. Na testovanie použijeme rovnakú službu:

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

Ak nie ste spokojní s touto možnosťou odoslania, môžete predstierať, že ste formulár odoslali. Na to existuje možnosť -F:

curl -F " [chránený e-mailom]; typ = text / obyčajný "http://posttestserver.com/post.php

Tu odovzdáme pole pre heslo vo formulári s typom obyčajného textu, rovnakým spôsobom môžete zadať niekoľko parametrov.

Odosielanie a prijímanie cookies

Súbory cookie alebo súbory cookie používajú webové stránky na ukladanie určitých informácií na strane používateľa. Môže to byť potrebné napríklad pri autentifikácii. Cookies môžete prijímať a prenášať 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 späť:

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

Odovzdávanie a analyzovanie hlavičiek

Nie vždy potrebujeme obsah stránky. Niekedy môžu byť zaujímavé len titulky. Ak chcete zobraziť iba ich, existuje možnosť -I:

curl -I https: // stránky

A voľba -H umožňuje serveru alebo niekoľko, napríklad môžete odovzdať hlavičku If-Modified-Since, takže stránka sa vráti iba vtedy, ak bola zmenená:

Overenie kučery

Ak server vyžaduje autentifikáciu jedného z bežných typov, napríklad HTTP Basic alebo FTP, curl sa s touto úlohou veľmi ľahko vyrovná. Ak chcete zadať autentifikačné údaje, jednoducho ich zadajte oddelené dvojbodkami vo voľbe -u:

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

Autentifikácia na HTTP serveroch bude fungovať rovnakým spôsobom.

Pomocou proxy

Ak potrebujete na sťahovanie súborov použiť proxy server, je to tiež veľmi jednoduché. Stačí nastaviť adresu proxy servera vo voľbe -x:

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

závery

V tomto článku sme sa pozreli na to, ako používať curl, prečo potrebujete tento nástroj a jeho hlavné funkcie. Napriek ich podobnosti sú veľmi odlišné. Príkaz curl linux je 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.