Мы расскажем вам, как использовать cURL и какие проблемы он может решить.
Статью написал Юрий Никулин, эксперт по продуктовому SEO. Юрий — преподаватель IT-школ «Нетология» и «Кибермаркетинг», победитель Сколково в номинации «Лучший стартап в сфере IT-технологий» 2023 года и ведущий конференции «Оптимизация».
Что такое КУРЛ
cURL (URL-адрес клиента) — Это распространенная встроенная утилита командной строки в Windows или MAC. Он позволяет взаимодействовать с сервером по различным протоколам, используя URL-адрес в запросе.
Протоколов довольно много, но SEO-специалистам в 99% случаев нужны только HTTP и HTTPS:
-
HTTP — устаревший, небезопасный протокол передачи данных между двумя серверами, например между вашим компьютером (браузером) и сервером любого веб-сайта. Пример: http://www.сайт.com
-
HTTPS — это расширение протокола HTTP, но данные передаются в зашифрованном виде. Пример: https://www.сайт.com
Вот как выглядит простейшая схема протокола HTTP/HTTPS:
Работа с CURL
Давайте рассмотрим, как работать с cURL в разных операционных системах.
Окна
В Windows 10 и более поздних версиях cURL устанавливается по умолчанию. Если у вас более старая система, загрузите cURL с сайта Официальный веб-сайт.
Нажмите «Пуск» и введите поисковый запрос «Терминал Windows». Затем начните вводить запросы cURL. Самый распространенный тип «Hello World» — это локон —версияпозволяет проверить версию.
MacOS
Откройте «Лаунчер» и с помощью поиска выберите «Терминал». Введите аналогичный запрос локон —версия, После этого версия Curl должна выглядеть так:
Линукс
cURL также установлен по умолчанию в Linux. Чтобы проверить версию cURL в Linux, введите в терминале локон —версия.
Основная особенность cURL для SEO и что он умеет
Используйте cURL, чтобы узнать, как поисковые роботы индексируют и отображают страницу. Если вы хотите понять, какой HTML-текст скрыт от глаз поисковых систем или какие HTTP-заголовки ответов сервера получают боты, вам может помочь cURL.
Что он может сделать:
-
Замените пользовательский агент.
-
Пройдите базовую аутентификацию.
-
Получать HTTP-заголовки и отслеживать цепочки перенаправления;
-
Получите HTML-страницы.
Три причины, почему он лучше браузера и его расширений:
-
Чтобы контролировать сам процесс, в cURL не допускаются ошибки;
-
Чтобы выдать себя за поисковую систему, это могут сделать браузер и некоторые расширения;
-
Расширения в Google Chrome не могут изменить пользовательский агент. Только те, которые основаны на платформенных решениях и размещены на отдельном сервере.
Пройдемся по каждой особенности, опишем возможные проблемы и их решения.
Замена пользовательского агента
Задача
Они хотят посмотреть на сайт глазами Яндекса или Google и увидеть, какой контент им недоступен. У них, конечно, есть свои инструменты, но Яндекс ограничивает вывод HTML 50 000 строк через инструмент «Проверка ответа сервера», а «Google Mobile Friendly 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-заголовки.