Как использовать Geekflare API с PHP-клиентами
Опубликовано: 2022-10-25В этом руководстве мы рассмотрим различные PHP-клиенты, которые вы можете использовать для подключения к Geekflare API.
В частности, мы рассмотрим использование Geekflare API с функцией file_get_contents
, Guzzle, HTTPful и HTTPS-клиент Symfony.
Что такое API Geekflare?
Geekflare предоставляет набор бесплатных инструментов, которые вы можете использовать для мониторинга производительности вашего сайта. Эти инструменты включают в себя анализатор неработающих ссылок, время загрузки и средство проверки DNS. Доступ к этим инструментам можно получить в режиме онлайн через веб-интерфейс или API.
API основан на HTTP, и к нему можно получить доступ с любого языка программирования с клиентской библиотекой HTTP. API имеет щедрый бесплатный уровень, который вы можете начать использовать, не предоставляя платежную информацию.
Что мы будем строить
Мы напишем скрипт, исполняемый из командной строки, который вычислит, сколько времени потребуется для загрузки веб-сайта Google, и выведет их на терминал. Мы реализуем эту простую программу с использованием различных HTTP-клиентов PHP, чтобы продемонстрировать, как выглядит использование API.
В частности, мы собираемся использовать встроенные функции — file_get_contents()
и php_curl
, а также расширение Guzzle PHP. Какими бы простыми ни казались эти примеры, они демонстрируют основные принципы использования Geekflare API.
Предпосылки
Чтобы продолжить, вам нужно заранее знать PHP и установить его на свой компьютер. Кроме того, вам понадобится Composer для управления расширениями.
Наконец, вам также понадобится текстовый редактор для написания кода. В моем случае я буду использовать Visual Studio Code, популярный текстовый редактор с открытым исходным кодом от Microsoft. Вы можете загрузить его с веб-сайта Visual Studio Code.
Обзор API Geekflare
Geekflare API имеет разные конечные точки в зависимости от того, что вы хотите сделать. Полный список конечных точек и связанную с ними документацию можно найти на странице документации.
Создание учетной записи Geekflare
Чтобы начать использовать API, вам необходимо создать учетную запись, перейдя на целевую страницу API и нажав кнопку регистрации. После завершения регистрации вы попадете на панель инструментов, где увидите свой API-ключ. Приборная панель должна быть как на картинке ниже. Я удалил свой ключ API из соображений безопасности.

В каждом запросе API, который вы делаете, вам нужно будет указать этот ключ в качестве заголовка запроса. Вскоре вы увидите, как это можно сделать.
Создав учетную запись Geekflare и установив PHP, мы можем приступить к созданию проекта.
Создание папки проекта
Сначала создадим папку, в которой мы будем хранить файлы проекта. После этого создайте следующие файлы
-
.env
-
with_curl.php
-
with_file_get_contents.php
-
with_guzzle.php
После этого выполните следующую команду, чтобы установить vlucas/phpdotenv
и guzzlehttp/guzzle
composer require vlucas/phpdotenv guzzlehttp/guzzle
На этом этапе папка вашего проекта должна выглядеть так:

Теперь откройте файл .env
и добавьте следующую строку кода, заменив <your-api-key>
вашим фактическим ключом API из панели инструментов Geekflare:
API_KEY=<your-api-key>
Использование file_get_contents()
Первый метод, который мы могли бы использовать для выполнения HTTP-запросов, — это вызвать встроенную в PHP функцию file_get_contents()
. Сигнатура функции file_get_contents()
выглядит следующим образом:
file_get_contents(path, include_path, context)
Хотя этот метод часто используется для чтения содержимого файла в локальном хранилище, мы можем использовать его для чтения веб-ресурса, например данных, возвращаемых конечной точкой API.
Теперь, чтобы начать, откройте with_file_get_contents.php
и добавьте шаблонный PHP-код.
<?php // all the code to be inserted here ?>
Далее мы можем начать загрузку расширений. Добавьте следующую строку кода в ваш файл
require_once('vendor/autoload.php');
Далее мы можем загрузить переменные окружения, которые включают в себя ключ API.
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__); $dotenv->load();
Затем мы можем определить полезную нагрузку. Это будут данные, которые мы отправим как часть тела запроса.
$payload = json_encode([ "url" => "https://www.google.com", "proxyCountry" => "us", "followRedirect" => true ]);
Мы создали переменную полезной нагрузки и присвоили ей строку JSON, которая содержит url
, proxyCountry
и followRedirect
в качестве свойств.
Свойство url
указывает веб-страницу, время загрузки которой мы хотим проверить.
proxyCountry
— это местоположение сервера, который мы хотим использовать для выполнения запроса. В данном случае мы используем сервер в США, но вы можете выбрать из Индии, Китая, Великобритании и Франции. Вы можете прочитать документацию для более подробной информации.
Затем followRedirect
указывает, должен ли прокси-сервер следовать каким-либо перенаправлениям, и измеряет время отклика окончательного ответа или первого перенаправления.
После этого мы можем создать параметры, которые будут настраивать наш запрос, добавив этот код:
$options = [ "http" => [ "method" => "POST", "header" => array("Content-Type: application/json", "x-api-key : " . $_ENV['API_KEY']), "content" => $payload ] ];
Сделав это, мы создали объект параметров, который указывает, что наш HTTP-метод — POST, и у нас есть заголовок, который указывает два свойства: тип содержимого в виде JSON и x-api-key
в качестве ключа API, который вы указали в .env
и был загружен как переменная окружения.
Далее мы можем сделать запрос, создав поток, в который будут записаны наши параметры:
$context = stream_context_create($options);
Затем мы вызываем метод file_get_contents()
, чтобы сделать запрос и сохранить ответ в виде переменной.
$response = file_get_contents("https://api.geekflare.com/loadtime", false, $context);
Мы сделали запрос на https://api.geekflare.com/loadtime
. Значение false указывает PHP не использовать путь. И мы передаем созданный контекст в метод.
Чтобы отобразить ответ, мы будем использовать вывод следующим образом.
echo "Loadtime: " . json_decode($response)->data->total . "\n";
В конце ваш файл должен выглядеть так:
<?php require_once('vendor/autoload.php'); $dotenv = Dotenv\Dotenv::createImmutable(__DIR__); $dotenv->load(); $payload = json_encode([ "url" => "https://www.google.com", "proxyCountry" => "us", "followRedirect" => true ]); $options = [ "http" => [ "method" => "POST", "header" => array("Content-Type: application/json", "x-api-key : " . $_ENV['API_KEY']), "content" => $payload ] ]; $context = stream_context_create($options); $response = file_get_contents("https://api.geekflare.com/loadtime", false, $context); echo "Loadtime: " . json_decode($response)->data->total . "\n"; ?>
Когда вы запускаете файл с помощью следующей команды:

php with_file_get_contents.php
Вы получите следующий вывод
Loadtime: 81
Использование CURL
cURL — это утилита командной строки, которая используется для запросов URL-адресов на стороне клиента. В PHP его можно использовать с помощью утилиты php-curl. Чтобы начать его использовать, откройте файл with_curl.php
и напишите шаблон PHP.
<?php // all new code will be written here ?>
Затем давайте импортируем расширения и загрузим переменную среды API_KEY, определенную в файле .env
require_once('vendor/autoload.php'); $dotenv = Dotenv\Dotenv::createImmutable(__DIR__); $dotenv->load();
Далее мы создадим переменную для хранения заголовков нашего объекта в виде массива, где каждый отдельный элемент массива является определенным заголовком.
$header = ["Content-type: application/json", "x-api-key: " . $_ENV['API_KEY']];
Мы определили два заголовка, один для типа контента и один для ключа API.
Затем мы можем определить тело запроса.
$body = json_encode([ "url" => "google.com", "proxyCountry" => "us", "followRedirect" => true ]);
После этого мы можем создать сеанс curl с помощью функции curl_init()
. Мы можем передать URL-адрес, к которому мы хотим сделать запрос, в качестве аргумента для вызова функции.
$ch = curl_init("https://api.geekflare.com/loadtime");
Теперь мы можем собрать все воедино, определив заголовок и тело как параметры сеанса. Для этого воспользуемся curl_setopt_array()
curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => "POST", CURLOPT_HTTPHEADER => $header, CURLOPT_POSTFIELDS => $body ]);
Чтобы сделать запрос, мы вызовем функцию curl_exec()
$response = curl_exec($ch);
Мы сохранили ответ в переменной $response
, поэтому мы можем закрыть сеанс, чтобы освободить системные ресурсы, используемые сеансом.
curl_close($ch);
Наконец, мы можем вывести ответ на экран, используя var_dump
.
var_dump($response);
В итоге ваш файл скрипта должен выглядеть так
<?php require_once('vendor/autoload.php'); $dotenv = Dotenv\Dotenv::createImmutable(__DIR__); $dotenv->load(); $header = ["Content-type: application/json", "x-api-key: " . $_ENV['API_KEY']]; $body = json_encode([ "url" => "google.com", "proxyCountry" => "us", "followRedirect" => true ]); $ch = curl_init("https://api.geekflare.com/loadtime"); curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => "POST", CURLOPT_HTTPHEADER => $header, CURLOPT_POSTFIELDS => $body ]); $response = curl_exec($ch); curl_close($ch); var_dump($response); ?>
Когда мы запускаем скрипт с помощью php with_curl.php
, вы должны получить следующий вывод:
{"timestamp":1666083632547,"apiStatus":"success","apiCode":200,"meta":{"url":"google.com","followRedirect":true,"redirectedURL":"https://www.google.com/?gws_rd=ssl","test":{"id":"d20h1hb409qbfwm0g534l51asugpi5hl"}},"data":{"dns":12,"connect":17,"tls":6,"send":21,"wait":110,"total":114}}bool(true)
Запрос был успешно выполнен, и API ответил данными JSON0. Вы можете использовать эти данные по своему усмотрению.
с жадностью
В последней части этого урока мы будем использовать Guzzle для написания скрипта. Как всегда, мы начинаем с вставки шаблона PHP внутрь with_guzzle.php
<?php // all the code will go here ?>
Затем мы можем импортировать расширения, Guzzle Client и Request Objects и загружать переменные среды.
require_once('vendor/autoload.php'); use GuzzleHttp\Client; use GuzzleHttp\Psr7\Request;
Далее мы можем загрузить переменные окружения.
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__); $dotenv->load();
После этого мы можем создать экземпляр HTTP-клиента Guzzle.
$client = new GuzzleHttp\Client();
Затем мы можем приступить к созданию заголовков для нашего запроса.
$headers = [ 'x-api-key' => $_ENV['API_KEY'], 'Content-Type' => 'application/json' ];
Далее мы можем определить тело запроса
$body = json_encode([ "url" => "google.com", "proxyCountry" => "us", "followRedirect" => true ]);
Затем мы можем сделать запрос, создав экземпляр класса Request и передав URL-адрес, заголовок и тело конечной точки API.
$request = new Request('POST', 'https://api.geekflare.com/loadtime', $headers, $body);
Затем мы можем отправить запрос, добавив эту строку кода:
$response = $client->sendAsync($request)->wait();
После отправки запроса мы можем получить тело запроса следующим образом.
$response_body = $response->getBody();
В конце концов, мы можем декодировать ответ JSON и распечатать время загрузки.
echo "Loadtime: " . json_decode($response_body)->data->total . "\n";
Итак, в итоге файл должен выглядеть так:
<?php require_once('vendor/autoload.php'); use GuzzleHttp\Client; use GuzzleHttp\Psr7\Request; $dotenv = Dotenv\Dotenv::createImmutable(__DIR__); $dotenv->load(); $client = new GuzzleHttp\Client(); $headers = [ 'x-api-key' => $_ENV['API_KEY'], 'Content-Type' => 'application/json' ]; $body = json_encode([ "url" => "google.com", "proxyCountry" => "us", "followRedirect" => true ]); $request = new Request('POST', 'https://api.geekflare.com/loadtime', $headers, $body); $response = $client->sendAsync($request)->wait(); $response_body = $response->getBody(); echo "Loadtime: " . json_decode($response_body)->data->total . "\n"; ?>
И когда вы выполняете скрипт, используя следующую команду:
$php with_guzzle.php
И вы увидите ответ:
Loadtime: 130
Вывод
В этой статье мы рассмотрели различные клиенты, которые вы можете захотеть использовать при создании проекта PHP, для которого потребуется API Geekflare.
В то время как сценарии в этом проекте используют командную строку в качестве основной формы вывода, в реальных проектах ответ может быть представлен на веб-странице или записан в файл. Примеры сценариев в этой статье были простыми, но они демонстрируют основные принципы использования Geekflare API. Чтобы использовать разные API, вы можете изменить конечную точку и передать различные параметры в тексте запроса.
Вас также может заинтересовать, как использовать Geekflare DNS Lookup API в Javascript.