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

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

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

eQqVhsqbkvdUkctU7dokxoGdTyg8Smo5L9zMJt8f2ANieshEWht JDYk s6PldhqWiuBDN5PAGL JQ8swMBvzqHQwyV3wcoJhZ2mFZOZJazcEvskQ5K2k8SWejWf1OPFWkMvOBvBSEpHdXNKwZgZ51k
Ответ в виде HTML-кода

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

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

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

    0sCdFVGWfd xCpr15Mbs4G 1HZXQmb1rZEjGrn XDUAmOE6ICQmf I0G07aMfA3sbPqy5Dw5rrctd8nP1si7p
    Ввод кода JavaScript
    YXOCLVAG3utKEVwlaby pOxrCcX4Uigu3
    Удаление текста из HTML-тегов

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

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

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

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

    ЧИТАТЬ  Это не я глупый, это они! Как я заработал 100% своих рекламных денег, когда понял, какие отчеты мне нужны
    sQNxleBs6rdK4TbchnmZbwGRPS79Iqeg4Bz1S d wb2yYAkBAPRchhxofNS2ImGIzbinta1u0LaiCyxdUCqj0 w95H7jPTR0ylXGrL
    Сравнение видимого и невидимого текста для Google

    Важное примечание: если на веб-сайте установлена ​​система защиты от ботов, такая как Cloudflare, cURL не сможет обойти эту защиту.

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

    Задача

    Вы создали новый сайт или страницу, но они недоступны для пользователей и заблокированы для посещений. Как протестировать такой сайт глазами Яндекса или Гугла?

    RnuBi3W9ayEkJwau3Vx30995XdVX xarg9K84n1wLjvl4jpuWixb1U4B0erJGorbvzppmHgsaggi8N7Wens0f EOQ7VQpfK4YGEPxNgVITouhxESJZ0Q7
    Проверка страницы, которая не была отсканирована

    Отвечать

    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, что на странице выполнен вход.

    Вот как это выглядит в терминале:

    f88DQBvruiH3irzGFKtg sPNhW7Gcg0KkEXiAquCYvar8HDAHHsr9OKdKTG4yEVmVj FlYpqqrd8BhLQUY loATQ5TkZZTHtWl7DOXLwHD8caruKG5nrP
    Команда в терминале

    После прохождения базовой авторизации и просмотра страницы глазами 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-заголовки и цепочки перенаправлений:

    seiYlMtN9l S08JSMCcchyHsLIMzphyoiuwYT 75X25GgBc CjajSbC3M2jiDK2v8lQdi2geGugbqsUt4u PdSm4 9lPY87WzW4ZyIEDUGzAnkk ooQk1oxchV3AYRfU
    HTTP-заголовки возвращены

    Видим, что для бота сработал 301 редирект. Однако это связано не с проблемой сервера, а с правильно настроенными редиректами с HTTP на HTTPS. Мы помним результат.

    ЧИТАТЬ  SEO Podcast #30: Интервью с Радом Палушаком | СЕОСЛИ

    Шаг 2. Проверьте наличие перенаправлений для пользователей, у которых возникли проблемы

    Для этого вам необходимо знать пользовательский агент, язык принятия и принятия пользователя, у которого возникла проблема. Дополнительную информацию о Accept и Accept-Language можно найти здесь. в документации Mozilla.

    Мы собираем данные об акцепторах и пользовательских агентах через онлайн-сервис Webtools или через браузер пользователя: DevTools -> Сеть -> Заголовки -> Заголовки запросов.

    JIsOq9IMuyN6fKvppJNTAP4lzenhF23luaEE48rb OZUaIE43AA5xmT4vaOQHO7WQHwmSUhBcfNuIus tiwUsysxM ZKyYTORzv7fDHEyYrdC4fl0mBNQOPUBz1Rcm3zAfww8 qEOXrZoCT0L 9bfgc

    После того, как мы узнаем эти данные, вводим в консоль следующий запрос:

    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