cURL w PHP - pobieranie danych przez URL
Biblioteka PHP cURL jest dobrym sposobem na pobieranie danych z obcego serwera.
Na podstawie zapytania tworzy on żądanie HTTP, które wysyła do serwera docelowego, a po pobraniu zawiera interfejs API umożliwiający (stosunkowo) łatwą obsługę danych.
W przeciwieństwie do natywnej funkcji file_get_contents (za pomocą której również możemy wykonywać żądania HTTP), oferuje ona znacznie lepsze opcje konfiguracyjne i pobiera strony/pliki jak prawdziwa przeglądarka.
Funkcja
file_get_contentsużywa wewnętrznie bibliotekicURL, po prostu nie ma tak szczegółowych opcji konfiguracyjnych.
Wykrywanie trybu cURL w żądaniu
Często przydatne jest wykrycie, czy bieżące żądanie zostało wykonane przez cUrl, czy klasycznie w przeglądarce.
W PHP nie ma bezpośredniej implementacji tej funkcji, ale możemy sami napisać prostą funkcję:
function isCurl(): bool{return str_contains($_SERVER['HTTP_USER_AGENT'] ?? '', 'curl');}
Jeśli korzystasz z systemu Linux i jego Terminala lub masz komputer Mac, spróbuj wykonać to polecenie:
curl https://php.baraja.cz/curl
Polecenie wysyła wewnętrzne zapytanie do tej witryny i zwraca jego wynik.
Jeśli aplikacja nie wykryła żądania cURL, kod HTML zostanie zwrócony w taki sposób, jakby żądanie pochodziło z przeglądarki. Ponieważ jednak typy żądań są wykrywane, nic nie stoi na przeszkodzie, aby zwrócić wyczyszczony artykuł w formacie Markdown.
Zaletą tego rozwiązania jest znacznie lepsze oczyszczanie danych. Użytkownikowi w przeglądarce pokazujemy sformatowany HTML, a robotowi tylko podstawową treść.
Szczegółowe wykorzystanie interfejsu API w PHP
Jeśli szukasz szczegółowych informacji na temat używania cUrl, polecam przeczytanie oficjalnej dokumentacji, która jest zawsze aktualna.
Do zwykłego użytku dostępna jest biblioteka Guzzle, która obsługuje