Мы расскажем вам, как использовать 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:

Функциональная схема протокола HTTP/HTTPS

Работа с CURL

Давайте рассмотрим, как работать с cURL в разных операционных системах.

Окна

В Windows 10 и более поздних версиях cURL устанавливается по умолчанию. Если у вас более старая система, загрузите cURL с сайта Официальный веб-сайт.

Нажмите «Пуск» и введите поисковый запрос «Терминал Windows». Затем начните вводить запросы cURL. Самый распространенный тип «Hello World» — это локон —версияпозволяет проверить версию.

MacOS

Откройте «Лаунчер» и с помощью поиска выберите «Терминал». Введите аналогичный запрос локон —версия, После этого версия Curl должна выглядеть так:

Проверка версии cURL на MacOS
Проверка версии cURL на MacOS

Линукс

cURL также установлен по умолчанию в Linux. Чтобы проверить версию cURL в Linux, введите в терминале локон —версия.

Основная особенность cURL для SEO и что он умеет

Используйте cURL, чтобы узнать, как поисковые роботы индексируют и отображают страницу. Если вы хотите понять, какой HTML-текст скрыт от глаз поисковых систем или какие HTTP-заголовки ответов сервера получают боты, вам может помочь cURL.

Что он может сделать:

  • Замените пользовательский агент.

  • Пройдите базовую аутентификацию.

  • Получать HTTP-заголовки и отслеживать цепочки перенаправления;

  • Получите HTML-страницы.

ЧИТАТЬ  Определение и значение поисковой системы — болтовня о SEO

Три причины, почему он лучше браузера и его расширений:

  1. Чтобы контролировать сам процесс, в cURL не допускаются ошибки;

  2. Чтобы выдать себя за поисковую систему, это могут сделать браузер и некоторые расширения;

  3. Расширения в 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 возвращает следующий ответ:

Ответ в виде HTML-кода

Шаг 2. Найдите контент, невидимый для Google.

Существует четыре способа определить контент, который не видит поисковый бот:

1. Удалите текст, который вам дал cURL из HTML-тегов или найдите онлайн-сервис по запросу «Удалить текст из HTML-тегов» или введите его в DevTools в разделе «Консоль». Код Javascript console.log(document.body.textContent); и скопируйте полученный текст в редактор.

    Ввод кода JavaScript
    Удаление текста из HTML-тегов

    Сравните тексты, полученные от cURL под пользовательским агентом Google, и текст вашего браузера с пользовательским агентом по умолчанию.

    1. Мы сравниваем два HTML-кода в каждом онлайн-сервисе. Будьте осторожны, они сравниваются построчно. Любое изменение, включая редактирование, будет считаться добавленным/удаленным контентом;

    2. Используйте встроенную библиотеку Python Хороший суп. Мы не будем вдаваться в подробности, поскольку это тема отдельной статьи;

    3. Различные расширения для браузера, такие как SEO ALL STARS для Google Chrome. Единственным недостатком является то, что многие расширения не видят текст под iframe. Обязательно поэкспериментируйте.

    ЧИТАТЬ  Реальность генеративного искусственного интеллекта в маркетинге может оказаться не такой, как вы думаете
    Сравнение видимого и невидимого текста для Google

    Важное примечание: если на веб-сайте установлена ​​система защиты от ботов, такая как 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; + 

    Чуть позже мы расшифруем все параметры в этом запросе.

    ЧИТАТЬ  NYT Connections: советы и ответы на понедельник, 8 июля | Цифровые тенденции

    Мы получаем следующий ответ, в котором видим HTTP-заголовки и цепочки перенаправлений:

    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.

    Сравнение ответов сервера для пользователей и для ботов Google

    На скриншоте мы видим, что с HTTP-заголовками все в порядке и цепочки редиректов для пользователей и ботов одинаковы.

    Рекомендация: на всякий случай проверьте то же самое, только с вашим пользовательским агентом. И сравните то, что видят пользователи, что видит Google и что видите вы.

    Параметры в запросе:

    — Этот флаг означает «спящий режим» и не показывает терминалу никакой информации о ходе процесса;

    — Этот флаг не отображает ошибки, возникающие в процессе запроса, чтобы не засорять терминал.

    – Этот флаг позволяет cURL отслеживать редиректы в запросе и просматривать всю цепочку;

    -Д- — Этот флаг печатает HTTP-заголовки в ответе терминала и не записывает в файл.

    -Ч- – Этот флаг указывает на добавление заголовка к HTTP-запросу. Это позволяет вам уникально запрашивать и выдавать себя за любого пользователя.

    Давайте подведем итоги

    cURL — простая программа, которая по умолчанию устанавливается практически на все компьютеры под управлением Windows и MAC. Он позволяет вам отправлять HTTP-запросы к любому сайту и получать HTTP-заголовки и тела страниц.

    Мы рассмотрели три основные ситуации, в которых SEO-специалист может использовать cURL:

    • Просматривайте страницы глазами поисковой системы, независимо от того, работают ли официальные сервисы Яндекса и Google;

    • Получите тело страницы, если она авторизована и поисковые роботы не могут получить к ней доступ.

    • Отслеживайте, получаете ли вы, ваши пользователи и поисковые боты одни и те же перенаправления и HTTP-заголовки.

Source