PHP knihovna `cURL` představuje dobrý způsob, jak je možné stahovat data z cizího serveru.
Na základě dotazu sestaví HTTP request, který odešle na cílový server a po stažení obsahuje API pro (relativně) snadnou práci s daty.
Na rozdíl od nativní funkce file_get_contents
(přes kterou můžeme také pokládat HTTP dotazy) nabízí mnohem lepší možnost konfigurace a stránky/soubory stahuje jako reálný prohlížeč.
Funkce
file_get_contents
interně knihovnucURL
používá, jenom nemá tak podrobné možnosti konfigurace.
Často se hodí detekovat, jestli byl aktuální požadavek položen prostřednictvím cUrl
, nebo klasicky v prohlížeči.
V PHP pro to neexistuje přímá implementace, ale můžeme si napsat jednoduchou funkci sami:
function isCurl(): bool{return str_contains($_SERVER['HTTP_USER_AGENT'] ?? '', 'curl');}
Pokud disponujete Linuxem a jeho Terminálem, popřípadě jste na Macu, vyzkoušejte tento příkaz:
curl https://php.baraja.cz/curl
Příkaz provede interní request na tento web a vrátí výsledek.
Kdyby aplikace neobsahovala detekce cURL requestu, bude vráceno HTML, jako kdyby šel request z prohlížeče. Protože se ale typy requestů detekují, nic nebrání tomu, abychom vrátili očištěný článek v Markdownu.
Výhodou jsou pak mnohem lépe očištěná data. Uživateli v prohlížeči zobrazíme naformátované HTML, zatímco robotovy jen základní obsah.
Pokud hledáte podrobné použití cUrlu, doporučuji si přečíst oficiální dokumentaci, která je vždy aktuální.
Pro běžné použití existuje knihovna Guzzle, která řeší
Jan Barášek Více o autorovi
Autor článku pracuje jako seniorní vývojář a software architekt v Praze. Navrhuje a spravuje velké webové aplikace, které znáte a používáte. Od roku 2009 nabral bohaté zkušenosti, které tímto webem předává dál.
Rád vám pomůžu:
Nabízím trénink vývojářů, konzultace, školení a analýzu návrhových vzorů. Osobně v Praze nebo online.
Napište mi, pokud si nevíte rady.
Lektor: Jan Barášek
Články píše Jan Barášek © 2009-2024 | Kontakt | Mapa webu
Status | Aktualizováno: ... | cs