Задать вопрос
  • Как с помощью Selenium на Python найти элемент html страницы, который расположен в #shadow-root (open)?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    How to automate shadow DOM elements using selenium?

    Если коротко, то порядок следующий:
    1. Сначала нужно найти в основном dom тот элемент, к которому прикреплен shadow root.
    2. У п1. нужно получить свойство .shadow_root.
    3. И вот уже у п2. нужно вызывать его собственный метод find_element, чтобы найти нужный элемент внутри него.

    Или так:
    Локатор не находит элемент на сайте, хотя набран верно, пробовал разные варианты, не помогает, в чём проблема?
    Ответ написан
    3 комментария
  • Как в wordpress назначить горячую клавишу на кнопку "сохранить" в редакторе записей?

    Mike_Ro
    @Mike_Ro Куратор тега WordPress
    Python, JS, WordPress, SEO, Bots, Adversting
    т.е. чтобы например ctrl+s нажал - и запись полностью сохранилась и опубликовалась

    Оно так и работает (раскладка должна быть на английском), но запись должна быть изменена, в ином случае ничего не произойдет, рекомендую почитать:
    - Use keyboard shortcuts (Block Editor).
    - Use keyboard shortcuts (Classic Editor).

    Что бы горячие клавиши стали доступны при работе с комментариями, необходимо перейти в Пользователи -> Профиль -> Включить "Горячие клавиши".
    Ответ написан
    4 комментария
  • Как добавить Тег к сделке AMO CRM по API?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    - Не POST, а PATCH.
    - Эндпоинт можно без id сделки: /api/v4/leads.
    - Теги передаются как массив объектов внутри _embedded['tags'].
    - Данные необходимо преобразовать в json.

    Выглядеть это будет примерно так (я не силен в php):
    $data = [
        [
            'id' => (int)$leadId,
            '_embedded' => [
                'tags' => [
                    ['name' => 'tag_name'],
                ],
            ],
        ],
    ];
    
    $res = $amoClient('PATCH', '/api/v4/leads', ['json' => $data]); 
    echo $res['status'];
    Ответ написан
    Комментировать
  • Используют ли сейчас повсеместно class?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    Хотел узнать, для браузерного фронта( для SPA приложения на Vue3), принято ли будет создавать обьекты через классы?
    class MyClass {

    Насколько я знаю, во vue используется объектно ориентированный подход с использованием компонентов, без классов. Например в react используется композиция наследования, тоже без классов.
    Насколько в этих классах фичи поддерживаемые в браузерах, или полифиллами.

    Большинство фронта сегодня собирается различными сборщиками, по типу webpack и vite. Они самостоятельно преобразуют "современный" js в тот js, который необходим для браузеров определенной (минимальной) версии.
    p.s. без typescript

    К TS это так же относится.
    Ответ написан
    Комментировать
  • Можно ли делать редирект страницы одного сайта на другой?

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

    Сделайте 301 редирект и проблем не будет.
    Ответ написан
    3 комментария
  • Вебмастер: Страницы-дубли с GET-параметрами?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Для Яндекса используйте Clean-param:
    Clean-param: entityId /downloads/
    Ответ написан
    Комментировать
  • Имеет ли смысл использова vue с scss?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Есть
    Ответ написан
    Комментировать
  • Как работать с api сервиса на localhost?

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

    Сурово!
    Как совместить локальную разработку и прием данных с внешнего сервиса?

    Как вариант, можно использовать обратный прокси по типу ngrok:
    1. Регаемся в ngrok и качаем их приложение.
    2. Указываем в ngrok, какой порт на локалке слушать, пусть будет :8080 ngrok http http://localhost:8080.
    3. Из консоли п2. копируем url обратного прокси, он будет похож на что то вроде https://9abc0-11-22-333-44.ngrok-free.app.
    4. Поднимаем свое приложение-сервер локально на порту из п2.
    5. В api сервиса указываем адрес из п3, например: https://9abc0-11-22-333-44.ngrok-free.app, с роутами из вашего приложения - это будет выглядеть примерно так:
    https://9abc0-11-22-333-44.ngrok-free.app/api/route-name
    .

    В результате, внешний api сервис сможет отправить данные в ваше приложение, которое запущенно у вас локально.

    P.S. запятые уже включены в тариф, используйте их иногда :)
    Ответ написан
    Комментировать
  • Почему Linux забил на --user-data-dir при запуске Selenium?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    А если прочитать ошибку? Один экземпляр хрома уже использует этот профиль. Кильните процесс и начните заново, а также оберните в try except сам код, а quit в finally, чтобы больше не оставалось висячих процессов.
    Ответ написан
  • Странное поведение метрики?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Похоже какой-то бот...

    По совокупности данных - очень похоже на ботов.
    И что ему надо, чем может быть опасен

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

    Один из вариантов, от простого к сложному:
    1. Закрыть сайт для публичного доступа.
    2. Не показывать метрику ботам, но здесь нужна какая то анти-бот система. Сайт будет все равно грузиться, но поведенческие факторы будут слабо падать.
    3. Вычислить ботов и показывать им слегка другие данные (shadow-ban), пусть заказчик бота танцует.
    Ответ написан
  • Как отдавать боту 200 если файла нет?

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

    Подскажите решения для этого?

    Решение - не страдать хернёй. 404 ошибка по js и css файлам не ухудшает, а 301 редиректы - не улучшает ранжирование.
    Ответ написан
    5 комментариев
  • Что такое бэкенд-сервер?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Что такое бэкенд-сервер? В чем отличие от просто бэкенда? Или это тоже самое?

    Если грубо, то одно и то же.
    Ответ написан
    Комментировать
  • Как сделать чтобы на NumPad вместо запятой была точка?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    У меня работает вариант с созданием своей "локали" (locales) на основе существующей локали ru_RU:
    1. Копируем существующую локаль
    sudo cp /usr/share/i18n/locales/ru_RU /usr/share/i18n/locales/ru_RU_2
    .
    2. Редактируем sudo nano /usr/share/i18n/locales/ru_RU_2 и сохраняем (в decimal_point заменяем значение на нужный символ):
    LC_NUMERIC
    decimal_point   ","
    thousands_sep   " "
    grouping        3;3
    END LC_NUMERIC

    3. Компилируем новую локаль sudo locale-gen ru_RU_2.UTF-8.
    4. Обновить новую локаль на уровне всех пользователей sudo update-locale LANG=ru_RU_2.UTF-8.
    5. Перезагрузиться. У меня сработал вариант с выходом и повторным заходом.
    6. Проверить локали locale или locale -a или sudo nano /etc/default/locale, должна быть наша ru_RU_2.UTF-8. Если все ок, то идем чекать в какой то блокнот.

    P.S. гном может игнорировать системную локаль, если юзверь настраивал язык через его настройки.

    Как альтернативу, можно сделать собственную раскладку клавиатуры с частичной модификацией (только NumPad), с изменением всего 1 символа:
    1. Создаем файл ~/.xkb/symbols/keypad_2:
    partial keypad_keys
    xkb_symbols "keypad_2" {
        include "keypad(basic)"
        key <KPPT> {[period, period]};
    };

    2. Для постоянного применения данной раскладки, добавляем команду в ~/.xsessionrc (для ru и us раскладок):
    echo 'setxkbmap -layout "us,ru" -symbols "pc+us+ru+keypad_2"' >> ~/.xsessionrc
    .
    3. Перезагрузка, проверяем setxkbmap -query.
    Ответ написан
  • Возможно ли инициировать клик через url?

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

    P.S. посмотрел калькулятор, он вообще не отправляет никаких данных на сервер, т.е. он считает их на клиенте, а значит вариант с отправкой запросов к их серверу так же отпадает. В общем, проще (быстрее и дешевле) написать свой калькулятор, чем решать текущую задачу, либо найти аналог.
    Ответ написан
    Комментировать
  • Тест Model class TemplateDjangoBack.users.models.user.User doesn't declare an explicit app_label and isn't in an application in INSTALLED_APP?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    В INSTALLED_APPS добавлено? Ну или app_label указан?
    Ответ написан
  • Как найти сайт сделанный ребенком на Тильде, зная только ФИО ребенка?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    На "сайте" он указал свое фио

    Если сайт проиндексирует Яндекс или Гугл, то можно будет найти по указанному ФИО.
    Ответ написан
  • Как реализовать конечное приложение?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Получается нужно писать запросы на сервер в программе. И тут вопрос, это безопасно? Есть ли в этом минусы?

    Либо храните и обрабатывайте данные на клиенте, либо обращайтесь с клиента на сервер, третьего не дано. Если данные конфиденциальны, то реализуйте методы аутентификации.
    Ответ написан
    Комментировать
  • Как проверять кодом наличие конкретно той или иной библиотеки?

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

    В локальном окружении? Тогда примерно так:
    import importlib.util
    print(importlib.util.find_spec('kek') is not None) # False

    Check if Python Package is installed
    Ответ написан
    Комментировать
  • Гайд или скрипт для последовательных нажатий на странице сайта?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Я бы использовал Tampermonkey (расширение под браузер), js код которого сводится всего к нескольким инструкциям:
    1. Проверяем url страницы.
    2. Ждем полной загрузки страницы.
    3. Ищем область для клика, которая запустит скрипт.
    4. Получаем нужные элементы для клика.
    5. Кликаем по п4.

    P.S. Для ожидания модальных окон (и их содержимого) можно использовать простой setTimeout, но если окна появляются с заранее неизвестной скоростью, то используйте MutationObserver.

    Теперь, пробуйте написать расширение (How to Use Tampermonkey), и если что не получится, то приходите сюда с конкретными вопросами.
    Ответ написан