Рассказываем, как использовать cURL и какие проблемы можно решить с его помощью.
Статью подготовил Юрий Никулин, продуктовый SEO-эксперт. Юрий — преподаватель IT-школ «Нетология» и «Кибермаркетинг», победитель Сколково в номинации «Лучший стартап в сфере IT-технологий» 2023 года и модератор конференции «Оптимизация».
Что такое КУРЛ
cURL (URL-адрес клиента) — Это встроенная программа командной строки, распространенная в Windows или MAC. Он позволяет взаимодействовать с сервером по разным протоколам, используя URL-адрес в запросе.
Протоколов довольно много, но SEO-специалистам в 99% случаев необходимы только HTTP и HTTPS:
-
HTTP — устаревший и небезопасный протокол передачи данных между двумя серверами, например между вашим компьютером (браузером) и сервером любого веб-сайта. Пример: httphttp://www.сайт.com
-
HTTPS — это расширение протокола HTTP, но данные передаются в зашифрованном виде. Пример: httpshttp://www.сайт.com
Вот как выглядит простейшая диаграмма протокола HTTP/HTTPS:
Работа с CURL
Давайте посмотрим, как работать с cURL в разных операционных системах.
окна
В Windows 10 и более поздних версиях cURL устанавливается по умолчанию. Если у вас более старая система, загрузите cURL с сайта официальный сайт.
Нажмите «Пуск» и введите поисковую фразу «Терминал Windows». Затем начните вводить запросы cURL. Самый распространенный тип «Hello World» — это цикл —версияэто позволяет вам проверить версию.
MacOS
Откройте «Лаунчер» и через поиск выберите «Терминал». Введите аналогичный запрос локон —версия, После этого версия Curl должна выглядеть, например, так:
Линукс
В Linux cURL также установлен по умолчанию. Чтобы проверить версию cURL в Linux, введите в терминале локон —версия.
Основной функционал cURL для SEO и что он умеет
cURL позволяет узнать, как поисковые роботы индексируют и просматривают страницы. Если вы хотите понять, какой HTML-текст скрыт от поисковых систем или какие HTTP-заголовки из ответа сервера получают сканеры, вам может помочь cURL.
Что он может сделать:
-
Заменить пользовательский агент;
-
Пройти базовую аутентификацию;
-
Получать HTTP-заголовки и следовать цепочкам перенаправления;
-
Получите HTML-страницы.
Три причины, почему он лучше браузера и его расширений:
-
Чтобы контролировать процесс самостоятельно, в cURL не допускаются ошибки;
-
Это можно сделать, выдавая себя за поисковую систему, браузер и некоторые расширения;
-
Расширения в Google Chrome не могут изменить пользовательский агент. Только те, которые построены на платформенных решениях и размещены на отдельном сервере.
Пройдемся по каждой из особенностей, опишем возможные проблемы и пути их решения.
Замена пользовательского агента
Пятно
Вы хотите посмотреть на страницу глазами Яндекса или Google и увидеть, какой контент им недоступен. Конечно, у них есть свои инструменты, но Яндекс ограничивает вывод HTML через инструмент «Проверка ответа сервера» 50 000 строк, а «Тест Google Mobile Optimization Test» полностью перестал работать, поэтому вы его не сможете отобразить. третьи. -вечерние сайты.
Отвечать
Шаг 1: Введите команду
Откройте терминал и введите следующую команду: Curl — URL-адрес «пользовательского агента». Из чего состоит команда:
- -А- Этот параметр используется для установки пользовательского агента в HTTP-запросе к серверу сайта. Например, мы хотим притвориться Google. В противном случае мы говорим: «Эй, официант, мы поисковый бот Google!» Дайте нам контент, который вы хотите отображать в этой поисковой системе»;
- «пользовательский агент» — вставка из поискового робота, в нашем случае из Google:
curl -A "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/W.X.Y.Z Mobile Safari/537.36 (compatible; Googlebot/2.1; +
Список пользовательских агентов Google можно найти в официальной документации. Документация Яндекса представлена в таблице в разделе «Основные поисковые боты».
В результате cURL возвращает следующий ответ:
Шаг 2. Найдите контент, невидимый для Google
Существует четыре способа определить контент, который не видит поисковый робот:
1. Очистите текст, который вам дал cURL, из HTML-тегов, либо выполните поиск в любом онлайн-сервисе по запросу «Очистить текст из HTML-тегов», либо введите DevTools в разделе «Консоль». код javascript console.log(document.body.textContent); и скопируйте полученный текст в редактор.
Сравните тексты, полученные от cURL под пользовательским агентом Google, и текст из вашего браузера со стандартным пользовательским агентом.
-
Сравниваем два HTML-кода в любом онлайн-сервисе. Только будьте осторожны, они сравниваются построчно. Любое изменение, даже периода, будет рассматриваться как добавление/удаление контента;
-
Используйте встроенную библиотеку Python БельСуп. Мы не будем вдаваться в подробности, так как это тема отдельной статьи;
-
Различные расширения для браузера, такие как SEO ALL STARS для Google Chrome. Единственный минус – многие расширения не видят текст под iframe. В любом случае, экспериментируйте.
Важное примечание: если на сайте установлена система защиты от ботов, такая как Cloudflare, то cURL не сможет обойти эту защиту.
Пройти базовую аутентификацию
Пятно
Вы создали новый сайт или страницу, но она недоступна для пользователей и закрыта для посещений. Как протестировать такую страницу глазами Яндекса или Гугла?
Отвечать
cURL позволяет пройти базовую авторизацию на странице и получить все данные, предоставляемые сервером сайта.
Откройте терминал и войдите в него URL-адрес Curl -u «имя пользователя:пароль»и установите пользовательский агент бота по инструкции выше: добавьте дополнительно — «Пользовательский агент».
Что ввести:
-
Вместо Логин Пароль введите свое имя пользователя и пароль;
-
Вместо пользовательский агент введите желаемого поискового робота, например Google:
Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/W.X.Y.Z Mobile Safari/537.36 (compatible; Googlebot/2.1; +
Параметр -у используется для указания учетных данных и сообщает cURL, что страница подключена.
Вот как это выглядит в терминале:
После прохождения базовой авторизации и просмотра страницы глазами Google остается только сравнить HTML, полученный от Google и в браузере, и найти текст, который не видит поисковая система. Для этого воспользуйтесь инструкциями выше.
Получение HTTP-заголовков и следование цепочке перенаправлений
Пятно
Вы заходите на сайт и видите страницу с ответом сервера 200 ОК. Пользователи жалуются, что на одной и той же странице им открывается совершенно другой контент или они перенаправляются в другое место. Вы хотите подтвердить жалобы пользователей и одновременно проверить ответы сервера и цепочки перенаправлений.
Отвечать
Шаг 1. Проверьте, что видит Google
Такая ситуация может возникнуть, когда продакт-менеджер провел сплит-тест и случайно добавил в него поисковых ботов или нецелевые аудитории. Возможно, сплит-тестирование было отключено и разработчики неправильно исправили техническую часть. По этой причине содержимое, ответы сервера и заголовки HTTP могут выводиться по-разному.
Сначала проверяем, нет ли ненужных редиректов для бота Google и какие HTTP-заголовки ему возвращаются:
curl -sSL -D - -A "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/W.X.Y.Z Mobile Safari/537.36 (compatible; Googlebot/2.1; +
Чуть позже мы расшифруем все параметры этого запроса.
Мы получаем следующий ответ, где видим HTTP-заголовки и строки перенаправления:
Мы видим, что у бота срабатывает 301 редирект. Но это вызвано не проблемой сервера, а правильно настроенными редиректами с HTTP на HTTPS. Мы помним результат.
Шаг 2. Проверьте, есть ли перенаправления для пользователей, столкнувшихся с проблемами.
Для этого вам необходимо знать пользовательский агент, язык согласия и согласия пользователя, у которого возникла проблема. Вы можете узнать больше о Accept и Accept-Language в документации Mozilla.
Данные об акцепторах и пользовательских агентах мы получаем через онлайн-сервис webtools или через браузер пользователя: DevTools -> Сеть -> Заголовки -> Заголовки запросов.
После обнаружения этих данных введите в консоль следующий запрос:
curl -sSL -D - -H "User-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:97.0) Gecko/20100101 Firefox/105.0" -H "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8" -H "Accept-Language: en-US,en;q=0.5"
Мы получаем ответ, в котором видим заголовки HTTP и строки перенаправления только для пользователя, испытывающего проблему. Теперь вам нужно сравнить ответы сервера для пользователей и ответы сервера для Google.
На скриншоте мы видим, что с HTTP-заголовками все в порядке и цепочки редиректов для пользователей и ботов одинаковы.
Рекомендация: на всякий случай проверьте то же самое, только у своего пользовательского агента. И сравните то, что видят пользователи, что видит Google и что видите вы.
Параметры в запросе:
-с — этот флаг означает «тихий» режим и не отображает информацию о ходе процесса на терминале;
-С — этот флаг не отображает ошибки, возникающие в процессе запроса, чтобы не загромождать терминал;
-Л — этот флаг позволяет cURL следить за редиректами в запросе и отображать всю строку;
-Д- — этот флаг генерирует HTTP-заголовки в ответе терминала и не записывает в файл;
-ЧАС- — Этот флаг указывает на добавление заголовка к HTTP-запросу. Это позволяет вам уникально запрашивать и выдавать себя за любого пользователя.
Давайте подведем итоги
cURL — это простая программа, которая по умолчанию установлена практически на всех компьютерах под управлением Windows и MAC. Он позволяет вам отправлять HTTP-запросы к любому сайту и получать HTTP-заголовки и тело страницы.
Мы рассмотрели три основные ситуации, в которых SEO-специалист может использовать cURL:
-
Просматривайте страницы глазами поисковой системы, независимо от того, работают ли официальные сервисы Яндекса и Google;
-
Получить тело страницы, когда это разрешено и поисковые роботы не могут получить к нему доступ;
-
Проверьте, получаете ли вы, ваши пользователи и ваши поисковые боты одинаковые перенаправления и HTTP-заголовки.