Задать вопрос
  • Как анти-бот системы определяют ботов и как от них защищаться?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Если я отправлю гет запрос из консоли то увидит-ли меня сайт где именно я нахожусь?

    Напрямую нет, но косвенно можно понять это по ip адресу исходящего запроса.
    Если я будут использовать селениум то увидит-ли меня сайт где именно я нахожусь?

    Напрямую нет, но косвенно можно понять это по ip адресу + гуглите, что такое утечки dns и как можно определить настоящий ip (минуя прокси) через webrtc.
    Селениум хороший анти-детект браузер? Видел еще playwright он лучше?

    Selenium - это вообще не антидетект браузер, а лишь программа, которая использует browser-driver для управления браузером. Selenium + undetected-chromedriver простая защита сайта не обнаружит, но вот средненькие антибот системы он уже часто не проходит. Playwright лучше определяется антибот системами.
    Как обычно парсят сайты со сложной защитой? Где продаются такие боты?

    Пишут свои приватные реализации ботов, которые обычно не продаются, т.к. прибыль от бота сильно выше его разовых продаж, а как только его продадут, так о нем сразу узнают те, кто пишет антибот системы. Либо используют готовые паблик сервисы, которые предоставляют api доступ по подписке с приличной стоимостью, но они не всегда в состояние преодолеть сложную защиту, т.к. этими же сервисами пользуются и те, кто пишут эту самую антибот защиту.
    Как анти-бот системы определяют ботов наверное есть какие отличительные признаки?

    Профессионально обнаружением ботов занимаются отдельные команды или даже целые компании (Radware, DataDome, Cloudflare, Imperva, Arkose Labs, HUMAN Security, Akamai, hCaptcha итп). Обнаружение сводится к прямому и косвенному методам.

    Прямые методы обнаружения:
    - Частота запросов и "доверие" (trust) к конкретному ip.
    - Проверка заголовков User-Agent. Заголовки от iphone, версия браузера от андройда, а размер дисплея от ноута - надежно!
    - Отпечатки рукопожатий TLS/QUIC (векторы JA3/JA4, ALPN, расширенный порядок).
    - Проверка выполнения JS.
    - Обнаружение признаков использования драйверов браузеров (window.navigator.webdriver, window.document.__webdriver_script_fn итп), открытости DevTools итп.
    - Шрифты: через js получают список шрифтов (откуда у вас Ubuntu шрифт на Андройде?), затем выборочно печатают на canvas изображение нужным шрифтом или печатают невидимый шрифт без канваса (применяют css свойство с найденным шрифтом), затем замеряют размеры результата и сверяют его с эталоном.
    - Видеокарта: через js рисуют на canvas невидимое изображение с цифрами, спецсимволами и смайликами, затем получают представление изображения в виде кода. Через WebGl можно нарисовать 3D изображение.
    - Камера. Как это у вас 3 камеры на samsung a32, если их 4?
    - Гироскоп, компас, акселерометр (все это без разрешения работает на андройде). Почему ваш гироскоп не двигается несколько минут подряд, хотя геолокация и ip gsm вышек меняются?
    - Анализ аудио рендеринга без разрешения на доступ к аудио (используется только программный аудио стек), где собираются уникальные артефакты обработки звука в зависимости от аппаратного обеспечения. Генерируется аудиосигнал, который обрабатывается через цепочку фильтров и эффектов (динамическая компрессия, частотные изменения, реверберация, изменение частотной или амплитудной модуляции итп).
    - Остальная проверка характеристик браузера->устройства: процессор, оператива, дисплей, плагины, часовой пояс, язык. У вас в браузере установлен русский язык, тайм-зона германии, последняя геолокация час назад в италии, а сейчас вы используете ip адрес гондураса, и как ему удается свайпать по НЕ сенсорному дисплею? - чистокровный человек, пропускаем! ;)
    = Собираем данные, хэшируем и получают относительно уникальный отпечаток (fingerprint). Уникальность заявляется разная, вплоть до 99%.

    Косвенные методы обнаружения:
    - Частота запросов и "доверие" (trust) к конкретному ip. Внезапно начался наплыв пользователей, да и еще примерно с одинаковыми характеристиками устройств, при этом хозяин сайта не давал рекламы или как то привлекал пользователей...
    - Нестандартный скролл/свайпы/клики у пользователей, ошибки и скорость ввода текста. Внезапно резко наплывшие пользователи стали скролить примерно до одного блока, делали 3 свайпа по 5-6 точек в каждом, хотя до этого все скролили по разному...
    - Нестандартная реакция на всплывающие окна. Скролл поверх фиксированного окна - бесценно... ;)
    - Нестандартная последовательности посещенных страниц.
    - Нестандартное количество проведенного времени на странице.
    - Клики по невидимым для живого человека ссылкам, заполнение невидимых полей и отправка формы, когда она не может быть отправлена, в результат не верной js валидации полей - это вообще не стареющая классика.
    - Геолокация - только с разрешения, но после разрешения можно получить много косвенных данных для анализа. Какая точная у вас геолокация, всегда до метра, и прыгает всегда по 10 метров, а у других на таком же устройстве все дергается как го*но в проруби...
    = Собираем данные, заливаем в нейронку и сравниваем с эталонными пользователями.

    Это лишь самые распространенные методы обнаружения, которые используют большинство топовых антибот систем.
    Ответ написан
    6 комментариев
  • Как в шаблоне выделить несколько экземпляров модели чекбоксами и по нажатию на кнопку получить список выделенных экземпляров?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Предлагаю использовать стандартный вариант с html (предварительно, нужно найти этот шаблон). Галочка + выпадающий список (select) + кнопка отправки + уведомление в шаблоне будет выглядеть примерно так:
    <!-- Уведомления -->
    {% if messages %}
        <ul class="messages">
            {% for message in messages %}
                <li class="{{message.tags}}">{{message}}</li>
            {% endfor %}
        </ul>
    {% endif %}
    
    <form method="post" action="{% url 'view_name' %}">
        {% csrf_token %}
        <table>
            {% for item in items %}
                <tr>
                    <!-- Здесь другие столбцы -->
                    <td><input type="checkbox" name="selected_items" value="{{item.id}}"></td>
                </tr>
            {% endfor %}
        </table>
    
        <select name="action">
            <option value="action_1">Действие 1</option>
            <option value="action_2">Действие 2</option>
        </select>
        <button type="submit">Применить</button>
    </form>

    Затем, в представление обрабатываем данные из шаблона выше, пусть это будет view_name. Например, некоторые основные моменты:
    # Получаем из POST запроса выбранные items
    selected_ids = request.POST.getlist('selected_items')
    
    # Проверить, есть ли что в selected_ids, если нет, сообщить юзверю, пусть жмет сильнее
    if not selected_ids:
        messages.warning(request, "Товарищ Юзверь, жми сильнее")
        return redirect('view_name')
    
    # Получаем action
    action = request.POST.get('action')
    
    # Смотрим, что пришло в action, затем выполнить нужное действие, пусть это будет следующее:
    
    # Получаем из бд все объекты по списку selected_ids одним запросом
    items_to_update = ItemModel.objects.filter(id__in=selected_ids)
    
    # Обновляем поле, пусть это будет is_selected
    updated_count = items_to_update.update(is_selected=True)
    
    # Обрабатываем успешный успех
    messages.success(request, f"Молодец Юзверь, успешно отработано: {updated_count} элементов, возьми с полки пирожок")
    return redirect('view_name')

    Ну и условная модель:
    from django.db import models
    
    class ItemModel(models.Model):
        title = models.CharField(max_length=200)
        is_selected = models.BooleanField(default=False)
    
        def __str__(self):
            return self.title
    Ответ написан
    Комментировать
  • Сайт на виртуальном хостинг Timeweb с размером 107,93 КБ даёт ответ сервера 73 мс. Что делать?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Возможно это от того, что кеширование настроено на Cache-Control: no-cache?

    wpo-cache-status: cached указывает, что страница кэшируется на уровне wp оптимизации (wp-optimize?). Но директива no-cache может конфликтовать с этим, вызывая дополнительные запросы к серверу. Поэтому, это самая наиболее вероятная причина, из тех, что вы предоставили.

    TTFB 89 мс это время до получения первого байта, что является хорошим показателем. Сервер отвечает быстро, так что проблема не в серверной обработке.

    Настройте правильное кеширование. Для статических страниц рекомендуется использовать cache-control: public, max-age=3600 (час, но я бы указывал больше). Это позволит браузеру хранить страницу локально и не запрашивать её повторно.

    Используйте google pagespeed insights или gtmetrix для анализа скорости загрузки. Они покажут, где и что тормозит.

    Ну и по классике, если это shared хостинг, то долбите поддержку таймвеба, они нормально отвечают и решают вопросы.
    Ответ написан
    Комментировать
  • Что за подсветка в PyCharm?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Похоже на предупреждение или рекомендацию оформленное не подчеркиванием, а изменением background, открыть настройки, перейти сюда File | Settings | Editor | Color Scheme и искать в одном из разделов: General, Language Defaults или Python.
    Ответ написан
    Комментировать
  • Как на VPS сервере нажать чтобы файл сохранился?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    открыл файл

    Чем открывали? nano (nano /path/to/file)? Если да, то внизу nano имеются подсказки по горячим клавишам:
    - ctrl + o - сохранить, редактор спросит имя файла для записи, если нужно просто сохранить - ничего не меняем и жмем enter.
    - ctrl + x - выйти из редактора, если имеются не сохраненные данные, то редактор так же предложит их сохранить.
    Если это был vim, то так:
    1. Нажмите клавишу esc один или два раза.
    2. Наберите :wq (записать и выйти).
    Подключался через mobaxterm

    Слева в mobaxterm есть sftp (файловый менеджер). Вы можете найти нужный файл там, кликнуть по нему правой кнопкой мыши и выбрать "Open with default text editor". Файл откроется в вашем редакторе по умолчанию в той операционке, с которой подключаетесь. При сохранение такого файла - mobaxterm автоматически загрузит его обратно на сервер.
    Ответ написан
    2 комментария
  • Дублирующийся контент - действительно ли это так плохо?

    Mike_Ro
    @Mike_Ro Куратор тега Поисковая оптимизация
    Python, JS, WordPress, SEO, Bots, Adversting
    На странице продукта раздел "дополнительная информация" дублируется, один раз для десктопа, один раз для мобильных.

    Влияют негативно любые дубли, а вот насколько сильно влияют - зависит от процента дублей к основному контенту.
    Сделано это было более 3 лет назад, основной причиной была чисто визуальная сторона - невозможность чисто CSS средствами подогнать все под хотелки ОМ.

    Небольшие блоки (небольшие!) можно скрывать под разные дисплеи, используя css @media + display:none, а вот css свойства visibility и opacity помогают сделать тоже самое, но чтобы они продолжали индексироваться.
    Сейчас штатный сеошник ставит в приоритет задачу удаления двойного контента, аргументируя это тем, что google со своим ии стал очень придирчивым и считает такой контент чисто повтором и потому спамом.

    Не стал, а был, не только гугл, но и яша.
    При этом на мой вопрос "а как тогда быть с меню", которое очень часто дублировано для разных устройств, у нас конкретно так. При том, что меню развернутое и содержит ссылки, слышу ответ что меню google не считает за спам, короче, "это другое" ©

    Если меню оформлено нужными тегами + смазано микро-разметкой + (там всего несколько слов, а не абзацы текста + заголовки) + 100500 одинаковое повторяющиеся меню в разных частях страницы (заказчик хочет) оформленное тегом <noindex> = не считает, и даже больше скажу - понимает, что это меню и предлагает "быстрые ссылки" под сниппетами в органике.
    Ответ написан
    Комментировать
  • Как создавать произвольные блоки?

    Mike_Ro
    @Mike_Ro Куратор тега WordPress
    Python, JS, WordPress, SEO, Bots, Adversting
    Есть ли в WP возможность создавать наподобие страниц и записей, ещё и произвольные блоки и выводить их в теме по id?

    Да, это стандартная методика - WordPress Block themes, только по id выводить их не требуется. Можно изучить их работу на базовых темах WP - Twenty и Twenty-Four.
    Надеялся, что в WP есть что-то типо реестра переменных или блоков. Но ничего даже близко похожего не вижу.

    А это уже более старый вариант, для этого обычно используются кастомные поля, рекомендую - carbon fields.
    Ответ написан
    1 комментарий
  • Парсинг на Python при помощи tor?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Относительно недавно начал заниматься парсингом. Использую tor.

    Жестко.
    Попробовал достаточно много способов из инета, но ip так и не меняется

    Но нам вы их конечно же не показали.
    Хотелось бы узнать работает ли вообще сейчас базовый парсинг с помощью tor

    Технически - работал, работает и будет работать. Функционально - не работал и не будет работать, т.к. ip выхода тора палятся так, как не палятся спам-ip дата-центров, ну и про скорость и стабильность работы тора не стоит забывать.
    либо же нужно искать обходные пути?

    - Если денег нет - использовать публичные списки ip проксей.
    - Если денег почти нет - использовать не публичные списки ip проксей.
    - Если деньги есть - использовать мобильные прокси.
    - Если деньги ЕСТЬ! - использовать резидентские прокси.
    Ответ написан
    Комментировать
  • Должен ли сайт использовать куки если пользователь не нажал на кнопку принимаю в баннере с предупреждением о персональных данных?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Я делаю баннер для сайта с предупреждением об использовании персональных данных с кнопкой принять может ли мой сайт обрабатывать куки до нажатия этой кнопки.

    Не может, ибо пользователь должен выразить явное согласие на обработку его ПД.

    1. Субъект персональных данных принимает решение о предоставлении его персональных данных и дает согласие на их обработку свободно, своей волей и в своем интересе. Согласие на обработку персональных данных должно быть конкретным, предметным, информированным, сознательным и однозначным.

    Я видел несколько судебных дел, где куки признаются ПД, лень искать, но вот имеется статейка Что нужно знать о cookies-файлах, чтобы не нарушит...:

    Согласно ФЗ «О персональных данных» и GDPR куки-файлы и иные идентификаторы пользователя относятся к персональным данным, поскольку позволяют теоретически определить конкретного субъекта или выделить его среди других лиц.
    Ответ написан
    4 комментария
  • Как сделать перетаскиваемые окна?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    Комментировать
  • Что можно сделать с белым сервером?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Как можно легально отбить стоимость этого сервера?

    Если коротко, то никак. Чуть подробнее - если у вас будет в 10 или 100 раз больше серверов, то овчинка на таких объемах выделки не стоит, не то что ваш 1 сервер.

    Если все таки решитесь, то первое, о чем стоит беспокоиться - это закон (149-ФЗ), и как случайно не стать прокси сервером для разных тематик, с которых легко рубятся палки.

    Ну и гуглежка обычно быстрее, чем написать вопрос:
    Как монетизировать сервер / Не уходить в минус?
    Как монетизировать домашний сервер?
    Как заработать на своём сервере?
    Можно ли заработать на своем домашнем сервере?
    Ответ написан
    3 комментария
  • Только на мобильной версии сайта не работает отправка формы на почту?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    Дополню ответ alexalexes
    Подключите телефон к компу в режиме отладки (нужен будет ADB драйвер), а браузер - в режиме синхронизации.
    Вот так и отлаживайте.

    Еще вариант:
    1. Подключаем андройд к компу по usb.
    2. Переход в настройки андройда -> параметры разработчика -> отладка по usb.
    3. Открываем страницу хромиум браузер на компе chrome://inspect/#devices.
    4. Жмем inspect нужной страницы.

    Теперь можно отлаживать хромиум браузер смартфона (не только смартфона, а вообще любой доступный удаленный хромиум браузер) на компе, получая все информацию от лица смартфона.
    Ответ написан
    Комментировать
  • В карточке товара интернет-магазина можно ли ставить Вопрос-ответ?

    Mike_Ro
    @Mike_Ro Куратор тега Поисковая оптимизация
    Python, JS, WordPress, SEO, Bots, Adversting
    Будет ли эта форма негативно влиять на ранжирование и выдачу?
    Получается, что одна и та же информация присутствует теперь во всех товарах, снижая уникальность описания товара.

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

    Варианты решения повторяющихся блоков:
    - Полу-уникальное описание.
    - Закрыть дубли метатегом <noindex>.
    - Использовать изображение вместо html, при клике на которое - динамически на js подгружать этот блок на странице.
    Ответ написан
    Комментировать
  • Как вставить переменную в re.sub?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    Несколько вариантов решения задачи:
    import re
    
    text = "ab b b b"
    var = "b"
    
    text1 = f"[^a-z]{var}"
    print(re.sub(text1, "", text)) # ab
    
    text2 = "[^a-z]{}".format(var)
    print(re.sub(text2, "", text)) # ab
    
    text3 = "[^a-z]" + var
    print(re.sub(text3, "", text)) # ab
    
    text4 = "[^a-z]%s" % var
    print(re.sub(text4, "", text)) # ab

    P.S. Примеры выше не используйте при формировании sql запросов, для этого используйте параметризованные запросы (prepared statements), либо t строки (python>=3.14):
    text5 = t"[^a-z]{var}"
    print(re.sub(text5, "", text)) # ab
    Ответ написан
    Комментировать
  • Критерии поиска грамотного специалиста для кроссплатформенного проекта?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Есть база данных 5 мб, с учетом коэффициентов 100 мб (150 столбцов и 100 000 строк).

    Как уже сказали - это маленькая бд. Да и сам размер бд не настолько важен, нежели запросы к ней.
    Насколько целесообразно, с учетом коэффициентов переводить базу в 100 мб на лету, чтобы не страдала производительность, я не знаю, я чайник.

    Берём профилировщик и смотрим, насколько целесообразно.
    В какой ветке форума искать специалиста для решения такой задачи

    Через знакомых, либо на фрилансе.
    и как правильно написать техническое задание, мне, чайнику?

    Никак. Написание ТЗ - это тоже работа, как вы ее можете выполнить качественно, если не имеете опыта?

    Как вариант (не очень, но хоть что то), включайте vpn, и пишите вопросы нейронке, grok, gemini, deepseek - все они условно бесплатные.
    Ответ написан
    4 комментария
  • Какой ноутбук выбрать для максимальной совместимости с linux?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    В РФ сейчас maibenben продает ноутбуки сразу на linux, кто-то может поделиться опытом использования?

    Здесь ругаться запрещено.
    Бюджет 120 тр

    Бюджет для win ноута без дискретки - хороший, можно позволить себе хороший или даже отличный вариант из топовых брендов.
    Правда ли все комплектующие без проблем подходят под линукс и нет проблем с драйверами, спящим режимом, быстрой разрядкой батареи и тд.

    Чтобы настроить ноут (именно ноут, а не десктоп из ноута) на линуксе так, чтобы он работал хотя бы примерно так же, как работает на Винде10/11 из коробки - нужно быть хорошим спецом, а чтобы так, как макось - нужно быть учителем этого спеца.

    Берите популярный бренд (asus, например) и популярную модель от этого бренда, тогда будет больше шансов, что все железо будет работать так, как заявлено.
    Ответ написан
    9 комментариев
  • Какие характеристики ноутбука/ПК нужны для front-end-разработки?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Мой asus rog g14 периодически пытается взлететь, на небольшом проекте во время life reload, стэк: react, mui, next, webpack + хром с открытыми инструментами разработчика. Такая ситуация лишь на фронте, python и фотошоп со средними проектами даже близко не доставляют такого дискомфорта.

    Если бы я брал сейчас машину для того, с чем работаю, то это было бы так: высокочастотный >= 12 поточный процессор, >= 32gb ram (двухканал), ssd/nvme.
    Ответ написан
    Комментировать
  • Как разрешить доступ на сервер только с определенных IP?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Все работает, но только до перезагрузки сервера. Как сохранить постоянно такие ограничения?

    Предположу, что nftables не был включен для автоматического запуска при загрузке системы, он просто был перезапущен в текущей сессии. Эта команда создаст необходимые ссылки, чтобы systemd запускал nftables при каждой загрузке, который в свою очередь, автоматически загрузит конфигурации из конфигов:
    sudo systemctl enable nftables
    Ответ написан
    2 комментария
  • Какие книги по программированию выбрать для ребенка?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    «Изучаем Python» — книга Марка Лутца.

    Если не только книги, то:
    - https://metanit.com/python/tutorial/
    - https://education.yandex.ru/handbook/python
    - https://www.w3schools.com/python/default.asp
    Ответ написан
    1 комментарий
  • Имеет ли жизнеспособность идея нового игрового движка на Python?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    Может ли такой игровой движок иметь место быть и иметь популярность у инди разработчиков?

    По умолчанию, инди и другие небольшие проекты используют unity, для проектов покрупнее используют unreal engine. Да и как pet проект - сомнительная затея, все таки python - это не про написание игр.
    Ответ написан
    9 комментариев