cURL v PHP - stahování dat přes URL

15. 2. 2020

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ě knihovnu cURL použí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:

php
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:

shell
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ší

Jan Barášek
Jan BarášekVí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:

AI konzultace & implementace

Pomohu vám zavést AI do vašeho projektu – od analýzy a návrhu řešení až po nasazení do produkce. Ušetřete čas, zjednodušte procesy a získejte konkurenční výhodu.

Domluvit konzultaci
Konzultant: Jan Barášek
Potřebujete poradit s PHP?

Nabízím trénink vývojářů, konzultace, školení a analýzu návrhových vzorů. Osobně v Praze nebo online.

Napište mi

Newsletter

Nejlepsi tipy a triky o PHP do Vaseho e-mailu. Clanky a novinky nejen ze sveta PHP a programovani.