cURL v PHP - stahování dat přes URL
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_contentsinterně knihovnucURLpoužívá, jenom nemá tak podrobné možnosti konfigurace.
Detekce cURL módu v requestu
Č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.
Podrobné použití API v PHP
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ší