artem.matanovsky

artem.matanovsky

Привет! Разрабатываю бeкенды, сайты, ботов, активно пользуюсь AI инструментами и рассказываю об этом. Сюда скорее читать, чем продавать. Если пишу про своё — так и говорю, что своё.
Пикабушник
Дата рождения: 1 марта
102 рейтинг 0 подписчиков 0 подписок 2 поста 0 в горячем

Прогнал своё расширение на случайных сайтах и поймал его на пяти ошибках. Рассказываю, как их чинил⁠⁠

Привет, я Артём, делаю сайты. Вы могли видеть мой пост про два расширения для Яндекс Карт и 2ГИС, которые складывают организации в Excel. Это продолжение, и оно про то, как я проверял свой же код.

Таблицу с названиями и телефонами теперь собирает кто угодно, и мой парсер в том числе. Файл получился удобный, но из строки «шиномонтаж, телефон, сайт» не видно, о чём вообще можно говорить с человеком.

Открывать сайты руками я пробовал: на десятом уже не помню, у кого была Метрика, а у кого только красивая шапка. Поэтому я написал третье расширение, Analyzer. Оно берёт список адресов или тот же Excel, открывает публичные страницы и дописывает рядом то, что лежит в HTML: на чём сайт, какой title, есть ли заголовки H1, стоят ли Метрика и GTM, есть ли форма заявок.

Показывать «смотрите, какой молодец» неинтересно, поэтому я сделал так: набрал в поиске четыре запроса (шиномонтаж в Твери, стоматология в Самаре, фитнес в Воронеже, салоны и косметология в Перми), взял из выдачи 14 сайтов обычных небольших компаний и прогнал как обычный клиент. Названия компаний в файле заменил буквами: мне нужно было проверить как работает инструмент.

Путь клиента, шаг за шагом

Сначала расширение не даёт ничего сделать, пока не примешь условия использования. Дальше я загрузил файл: 14 адресов плюс два фейка, строка вообще без сайта и вымышленный домен. Всего 16 строк. Нажал «Начать анализ», и расширение открывает сайты в фоновых вкладках.

Идёт проверка, категории заполняются по ходу

Идёт проверка, категории заполняются по ходу

Весь файл ушёл примерно за минуту. Компании раскладываются по четырём кучам: «Сайт», «SEO», «Маркетинг», «SMM». У меня вышло 3, 2, 7 и 4 соответственно.

Итог по категориям

Итог по категориям

Дальше можно скачать Excel. В нём 57 колонок, я показываю 12:

Фрагмент выгрузки: названия заменены буквами

Фрагмент выгрузки: названия заменены буквами

Самое полезное здесь не цифры, а сравнение соседей. Две стоматологии в одном городе в обычной выгрузке выглядят близнецами: телефон, сайт, рейтинг. А в таблице у одной Битрикс, нет Метрики, есть форма и запись, а у другой WordPress, нет H1, нет Метрики, нет формы и счётчик Google Analytics, который давно не работает. Это уже интересно!


Пять ошибок, которые я нашёл в процессе тестирования

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

Первый. Один салон из Перми расширение записало в «Сайт» с пометкой «сайт не открывается». Я открыл его браузером и через curl, ответ 200. Оказалось, что для Chrome сервер то сбрасывает соединение, то отдаёт ошибку сертификата, и только для него. Хуже всего, что эта же фраза попадала в «сообщение для связи», то есть я мог бы сообщить человеку «у вас не открывается сайт». Я добавил базовый ретрай, теперь расширение пробует с паузами в 3 и 8 секунд, а если не вышло, пишет: «сайт не ответил при проверке — откройте вручную». Фраза «не открывается» осталась только для случая, когда домена просто нет в DNS (мой вымышленный домен).

Второй. У одной клиники в коде стоит Google Analytics с идентификатором UA-... Расширение писало «GA: да». Но Universal Analytics Google отключил в 2023 году, и этот счётчик ничего не считает. Теперь в колонке написано «устарел».

Третий. Для проверки robots.txt и sitemap расширение делает отдельные запросы. Если запрос падал по сети, оно записывало «файла нет» и добавляло баллы за «нет sitemap». Получалось, что один и тот же файл в двух прогонах давал разные категории. Теперь сетевой сбой считается «неизвестно» и баллов не даёт.

Четвёртый. Колонка «запись» знала всего несколько сервисов вроде YCLIENTS. На 13 открывшихся сайтах она в первом прогоне не нашла записи ни на одном, хотя на половине сайтов крупными буквами написано «Записаться на приём», а у одного стоит виджет MEDFLEX. После правки «запись» нашлась на 9 из 13.

Пятый. Показатели SMM считались только по колонке «Соцсети» в исходном Excel, то есть по тому, что отдала карта. В моём файле такой колонки не было, и 10 из 13 сайтов упали в SMM по одной причине «нет соцсетей». Теперь, если в таблице соцсетей нет, расширение ищет ссылки на VK, Telegram и WhatsApp на самой странице (кроме кнопок «поделиться»). Тот же файл теперь даёт 4 сайта в SMM из 16.

После правок я прогнал файл ещё раз. Результаты совпали по всем 16 строкам. На правки в логике написал тесты, так что больше сломаться не должно.

Салон, чей сервер не ответил: расширение теперь не утверждает, что сайта нет

Салон, чей сервер не ответил: расширение теперь не утверждает, что сайта нет

Что осталось неидеальным

Текст кнопки «скопировать сообщение» собирается по шаблону из найденных проблем. Раньше в подсказках стояло что-то вроде «КП — счётчик и цель за одну итерацию» или «нет Метрики и GTM и пикселя». Читалось как записка менеджера в пятницу вечером, я это поправил: теперь «Что предложить: счётчик и цель за одну итерацию». Всё равно это шаблон, и отправлять его как есть я бы не стал, переписывайте лучше своими словами. Само расширение ничего никуда не отправляет, и это правильно.

Пометка и текст для связи

Пометка и текст для связи

Расширение не производит замер скорости сайта и в Вебмастер не ходит. CMS может определять не всегда из-за их большого разнообразия: из 13 сайтов четыре остались «не определено». Список CMS я буду дополнять в обновлениях.

Честно скажу про баллы. Это эмпирическая метрика: веса («нет Метрики — столько-то, нет H1 — столько-то») я назначил сам. Высокий балл значит «много пробелов». В одном из следующих обновлений я, возможно, заменю её на что-то более осмысленное.

Если захотите попробовать

Расширение лежит в Chrome Web Store. Без лицензионного ключа в день доступно 30 проверок открытой вкладки и 5 из файла или списка, так что мои 16 строк на демо целиком не прогнать, я гонял с тестовым ключом.


У кого есть опыт ручной проверки сайтов и «технички»? На что обращаете внимание и какими инструментами пользуетесь?

Показать полностью 5

Искал компании без сайта — в итоге написал два расширения, для Яндекс Карт и 2ГИС⁠⁠

Привет, Пикабу! Я — разработчик, делаю сайты, и MapsGrabs мой проект. Это два расширения для Chrome: одно для Яндекс Карт, второе для 2ГИС. Открываешь карту в браузере, вводишь запрос — расширение собирает сведения об организациях из открытой вкладки и складывает их в XLSX, который формируется прямо на компьютере. Сразу скажу честно: лидов, клиентов и готовой базы на обзвон тут не обещаю — ни я, ни сайт. Просто расскажу, зачем я это сделал и как оно устроено.

Всё началось с простой задачи: найти компании, которым нужен сайт. Не «плохой сайт», а отсутствующий. Таких хорошо видно на картах: организация есть — название, адрес, телефон, — а сайта в карточке нет.

Только поиск выглядел уныло. Вводишь запрос, идёшь по списку, открываешь карточку за карточкой и переписываешь в таблицу название, адрес, телефон. Следующая, ещё одна, ещё. Взгляд плывёт, теряешь, где остановился и кого уже записал. Долго, скучно, и в каждом ручном переносе прячется ошибка: то строка пропущена, то ячейка не та. В какой-то момент стало очевидно: это должна делать машина.

Так появилась первая версия расширения — для Яндекс Карт. Открываешь карту, вводишь запрос, а расширение подталкивает страницу подгружать следующие порции выдачи и складывает записи в файл. Потом захотелось то же самое для 2ГИС, и тут началось интересное: задача та же, а механика карт другая, выдачу приходится «докручивать» иначе. Поэтому вместо одного универсального парсера получилось два расширения — под каждую карту своё.

Принцип, который я для себя вывел: DOM — руль, JSON — источник. Расширение не вычитывает поля из текста карточек на экране. Оно слушает JSON-ответы, которые вкладка карты и так получает при поиске: там лежат названия, адреса, телефоны, сайты, рейтинги. А DOM нужен как руль — чуть прокрутить список, дождаться ответа, прокрутить ещё, чтобы карта отдала следующую порцию. От вёрстки такой подход зависит меньше, но хрупкость никуда не девается: карты меняют ответы и элементы управления, поэтому код приходится обновлять.

Сбор идёт проходами: сначала организации, потом — уже по собранным карточкам — отзывы и медиа. Данные копятся локально в расширении, XLSX собирается здесь же, на компьютере.

Демонстрационный экран со вкладками организаций, отзывов и медиа: счётчики на кадре не являются типичным результатом

Демонстрационный экран со вкладками организаций, отзывов и медиа: счётчики на кадре не являются типичным результатом

В одном старом файле из истории разработки лежало 47 организаций, и у двух из них поле «Сайт» оказалось пустым. Две пустые ячейки — и меня осенило: сколько вообще компаний живёт без сайта? Это же ровно те, кого я ищу: собираешь выдачу по нише и смотришь, у кого сайта нет. Оговорюсь сразу: это один файл и один момент, а не статистика. Какой процент бизнеса реально сидит без сайта, я не знаю и не измерял. Но как отправная точка идеи — сработало.

Демонстрационный экран: счётчики не являются типичным результатом

Демонстрационный экран: счётчики не являются типичным результатом

Теперь о границах — они важные

Отзывы в выгрузку попадают в маскированном виде: короткое превью без полного текста, автор вроде «И*** П***», оценка и месяц. Полный текст отзыва и имя автора я не сохраняю. С медиа ещё строже: сами фото и видео не копируются и не экспортируются, в файл попадает только их количество по типу на организацию. Никаких URL картинок и роликов в выгрузке нет. Копировать чужие отзывы и медиа я в инструмент сознательно не закладывал — это и некрасиво, и против правил источников.

И ещё одна деталь: перед первым запуском расширение попросит принять условия. Данные публичные и работать с ними нужно аккуратно, капчи и блокировки расширение не обходит и обходить их нельзя, рекламные обзвоны и рассылки без согласия адресата — тоже нельзя. Пока не подтвердишь и сервер не пришлёт «квитанцию» о согласии, сбор не стартует. Может, лишний клик — зато сразу видно, на что ты соглашаешься. Это не разрешение на любой сценарий, а фиксация границ: ответственность за использование выгрузки остаётся на тебе.

Пример выгрузки: только заголовки колонок XLSX, строк организаций нет

Пример выгрузки: только заголовки колонок XLSX, строк организаций нет

Что умеет и чего не умеет сам сбор

Расширение собирает организации по твоему запросу: телефоны, сайты, соцсети, адреса, рейтинги — эти колонки есть в выгрузке. Но что реально заполнится, зависит от того, что источник отдаст в конкретном запуске. Выгрузка — заготовка для проверки и чистки, а не готовая база клиентов. «Соберёт всех» я не обещаю: таких измерений не делал. И повторю: встроенной рассылки, обзвона и интеграций с CRM в расширении нет. Оно снимает ручной перенос карточек в таблицу, но не решает за человека, как использовать выгрузку и с кем работать.

Отдельно про приватность: карточки, поисковый запрос и содержимое выгрузки на сервер не передаются. На сервере оседает только лицензионный ключ и служебная информация — версия расширения и диджесты принятых документов. Всё остальное живёт в твоём браузере.

Если задача тебе знакома — на mapsgrabs.ru можно проверить свой запрос: первые 50 организаций выгружаются бесплатно, без банковской карты и без личного кабинета. Один ключ действует для обоих расширений.


И вопросы тем, кто реально работает с такими таблицами: каких колонок вам не хватает в выгрузке? В каком формате удобнее было бы импортировать — или XLSX и так ок? На каких запросах сбор ведёт себя хуже всего? По этим ответам я и исправлю следующие версии.

Показать полностью 3
Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества