Что ломается в ботах, парсерах и на сайтах — и как это чинится. С кодом, настоящими цифрами и честным описанием того, где я сама наступила на грабли.
Обход категорий, пагинация, карточки, характеристики, фото, цены и остатки, подгрузка через JavaScript и защита от ботов. Какие колонки будут в файле, сколько это стоит и что собирать можно, а что нет.
Есть свой список позиций — нужно найти их у поставщика или конкурента и подтянуть описания, характеристики и фото. Сопоставление по штрихкоду, артикулу и названию, колонка статуса и что делать с ненайденными.
Формы с вложениями молча перестали работать после переезда. Виноват не PHP: при запуске через mod_fcgid длину запроса режет FcgidMaxRequestLen с потолком 128 КБ по умолчанию. Плюс восемь директив, которые надо сверять действующими значениями, а не глазами по файлу.
ИИ-бот уверенно называл посетителям неверные цены. Причина нашлась не в модели и не в промпте, а в порядке двух строк: стоп-слова отсеивались до приведения к начальной форме. Плюс замер, в котором поиск по смыслу проиграл поиску по словам — 31 против 39.
Скрытые поля добавили, а меток в письме нет. Четыре причины: PHP собирает письмо по жёсткому списку полей, форма уходит через fetch с ручной сборкой, Safari режет годовую куку до семи суток, скрипт затирает метки пустыми значениями.
Директива gzip on включает сжатие лишь для text/html, а список остальных типов в конфиге Ubuntu закомментирован. Проверка двумя командами curl и цифры после правки: CSS 11 269 → 2 918 байт.
Точные лимиты Bot API — отдать 50 МБ, принять всего 20 — и четыре рабочих обхода: ссылка на сервер, переиспользование file_id, разбивка на части и собственный сервер Bot API с потолком в 2 ГБ.
Корзина на 1630 ₽, скидка 10 % — итог 1717 ₽. Код был написан без единой ошибки, неправильной оказалась последовательность действий. Разбор бага, найденного в собственном демо, и ещё четырёх мест, где прячется тот же класс ошибок.
Cloudflare пишет «SSL handshake failed», а сертификат действует ещё три месяца. Настоящая причина — 768 соединений по умолчанию и systemd, который тихо перебивает лимиты nginx. С командами проверки и объяснением, почему reload здесь бесполезен.
Не про «10 способов увеличить продажи», а про конкретные поломки: что именно не сработало, почему и какой строчкой это чинится. Половина сюжетов — из собственных ошибок, потому что на них видно больше, чем на удачных проектах.
Если у вас похожая задача и хочется обсудить до того, как что-то сломается, — напишите.