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

    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 комментариев
  • Парсинг на Python при помощи tor?

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

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

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

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

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

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    Как сделать, чтобы при парсинге bs4 как то надо нажать на кнопку

    Никак, bs4 как и requests лишь получают то, что отдал сервер при первом ответе. Вы можете попробовать исследовать то, какой запрос на сервер отправляется, при нажатие этой кнопки, а затем отправлять запросы из bs4 напрямую к этому серверу. А вообще, для таких задач (нажатие кнопок на сайте итп), используйте Selenium или CDP.
    так как я учусь пасингу в bs4

    А чего там учить?
    Ответ написан
    Комментировать
  • Как выполнить Olx парсинг номера?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    - Selenium не нужен, он легко определяется и слишком много жрет. Используйте Zendriver.
    - Используйте реалистичный отпечаток браузера.
    - Используйте мобильные прокси.
    - Используйте реалистичное движение курсором мыши или сенсорные действия (для смартфонов).
    - Нужна асинхронность? - запускайте Zendriver асинхронно, используя Asyncio.

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

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    - Либо анализ http запросов и попытка обращения напрямую к ним -
    dynamic web page scraping with python, средняя сложность, максимальная производительность, легко вычисляется.
    - Либо Chrome DevTools Protocol (zendriver) - высокая сложность, средняя производительность, тяжело вычисляется.
    - Либо Selenium, простая сложность, минимальная производительность, легко вычисляется.
    Ответ написан
    Комментировать
  • Способ обхода CloudFlare 2025?

    Mike_Ro
    @Mike_Ro Куратор тега Selenium
    Python, JS, WordPress, SEO, Bots, Adversting
    Я попробовал много способов, но все они не помогают мне обойти защиту

    Какие пробовали?
    Язык не важен

    Не важен, но скорее всего это будет Python.
    важен алгоритм. Как мне это сделать

    1. Python + Zendriver + no headless.
    2. Открываем отдельный профиль браузера.
    3. Заходим на сайт с cloudlfare, ждем загрузки окна капчи, жмем на него, сохраняем куку и попадаем на сайт.

    Последующий заход так же выполняем через профиль браузера из п2, cloudflare будет доволен, временно. Ну и про правильный отпечаток браузера + правильный ip я думаю смысла говорить нет.
    Язык не важен, важен алгоритм. Как мне это сделать? Не предлагайте сторонние API для решения капчи.

    Если с headless и без привязки к Python, то статьи по теме:
    - Об одном способе веб-скрапинга сайтов, защищенных ....
    - Парсим сайты с защитой от ботов.
    - Chrome Headless против cloudflare JS challenge.

    Способ рабочий, работает в том или ином виде до сих пор. Тема коммерческая, поэтому ответ без готового решения (да и он не требуется, судя по ТЗ).
    Ответ написан
  • Как спарсить сайт с авторизацией через смс?

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

    Возможно. Создайте новый профиль хрома, пройдите в нем нужную аутентификации, затем используйте selenium или nodriver под этим профилем.
    Ответ написан
    Комментировать
  • Какие инструменты Вы используете для парсинга?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Интересует быстрый парсинг - зашел на сайт, посмотрел на код, минимум кода, скорость важна.

    BAS, Scrapy.
    Было бы еще неплохо чтобы инструмент был гибким - то есть парсил бы любые сайты.

    Так не бывает, увеличение универсальности и гибкости - увеличивает сложность.
    Или поделитесь пожалуйста Вашими инструментами

    Selenium, Appium, nodriver, requests.
    Ответ написан
    Комментировать
  • Как гугл вычисляет пользователя?

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

    Отпечаток посетителя, устройства, сети, геолокации. Больше информации ищите по ключу - FingetPrint.
    Можно ли это обойти? Как?

    Можно, используйте nodriver, мобильные/резидентские прокси, модифицированный браузер и напишите соответствующий софт.
    Ответ написан
    Комментировать
  • Как написать парсер с Вконтакте?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    К сожалению я полный ноль в программировании

    В общем задача довольно проста

    Типичное ТЗ для фриланса.
    Если кто-то подскажет в какую сторону двигаться (читать, смотреть), или может ну его к чертям, если это потребует года учебы? Или может через GPT сделать какой-то хитрый запрос?
    Так как программирование мне не особо интересно и развиваться в этом направлении не планирую.

    - Если планируете зарабатывать программированием, то гуглим "Программирование на Python Марк Лутц", затем возвращайтесь с более конкретными вопросами.
    - В ином случае - https://freelance.habr.com/.
    Ответ написан
    Комментировать
  • Как выйти из бесконечной работы браузера при парсинге через Selenium?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    Нейронка это конечно хорошо, но желательно проверять, что она пишет:
    # EC.presence_of_element_located((By.CSS_SELECTOR, "product-slider__img js-product-current-img"))
    EC.presence_of_element_located((By.CSS_SELECTOR, ".product-slider__img.js-product-current-img"))

    Ниже код для Chrome и FF (Python 3.10, Windows 11 Pro 23H2) - все прекрасно работает, за исключением сайта-помойки, который грузится минуту:
    from selenium import webdriver
    from selenium.webdriver.chrome.service import Service
    from selenium.webdriver.chrome.options import Options
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.common.exceptions import TimeoutException
    
    options = Options()
    service = Service(r'D:\project\chromedriver-130.0.6723.93.exe')
    driver = webdriver.Chrome(service=service, options=options)
    
    url = 'https://superstep.ru/product/NCFSW0W288YW_GRA/#colorGRA'
    driver.get(url)
    
    try:
        element = WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.CSS_SELECTOR, ".product-slider__img.js-product-current-img"))
        )
        page_html = driver.page_source
        print(page_html)
    
    except TimeoutException:
        print("Элемент не найден")
    
    finally:
        print('Программа завершена')
        driver.quit()

    from selenium import webdriver
    from selenium.webdriver.firefox.service import Service
    from selenium.webdriver.firefox.options import Options
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.common.exceptions import TimeoutException
    
    options = Options()
    service = Service(r'D:\project\geckodriver.exe')
    driver = webdriver.Firefox(service=service, options=options)
    
    url = 'https://superstep.ru/product/NCFSW0W288YW_GRA/#colorGRA'
    driver.get(url)
    
    try:
        element = WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.CSS_SELECTOR, ".product-slider__img.js-product-current-img"))
        )
        page_html = driver.page_source
        print(page_html)
    
    except TimeoutException:
        print("Элемент не найден")
    
    finally:
        print('Программа завершена')
        driver.quit()

    672b4890b03b0937030403.png
    Ответ написан
    2 комментария
  • Как достать данные из заголовка полученные в get запросе в виде json?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    1. Преобразовать json, пример.
    2. Циклом обойти п1, производя манипуляции с элементами объекта.
    Ответ написан
  • Как правильно настроить Key Collector?

    Mike_Ro
    @Mike_Ro Куратор тега Поисковая оптимизация
    Python, JS, WordPress, SEO, Bots, Adversting
    Keycollector перестал собирать частотность wordstat и парсить позиции из яши примерно с 22.03.2022. Фактически, сейчас keycollector представляет из себя программу по локальной работе с уже собранными данными, за прежнюю стоимость.

    Изменения в Key Collector, О программе (внимание на перечеркнутый текст), Key Collector работает сейчас или нет?
    Ответ написан
    Комментировать
  • CodeForces добавил защиту от парсинга?

    Mike_Ro
    @Mike_Ro Куратор тега Selenium
    Python, JS, WordPress, SEO, Bots, Adversting
    $ curl https://codeforces.com/
    <!DOCTYPE html><html lang="en-US"><head><title>Just a moment...</title><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=Edge">

    Первый ответ сервера (а bs4 в большее и не умеет), возвращает среди прочего < title>Just a moment... title>, уже как бы намекая, что там что то происходит... Защита может быть элементарной, но не видя Ваш код, говорить о решение не приходится.
    Ответ написан
    Комментировать
  • Как сохранить страницу незаметно?

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

    Teampermonkey + save page. Пример с сохранением страницы после ее загрузки и по таймеру:
    // ==UserScript==
    // @name         Super script
    // @namespace    http://tampermonkey.net/
    // @version      0.1
    // @description  Super script description
    // @author       Spamer
    // @match        *://*/*
    // @grant        none
    // ==/UserScript==
    
    (function() {
        function savePageAsHTML() {
            const htmlContent = document.documentElement.outerHTML;
            const blob = new Blob([htmlContent], {type: 'text/html'});
            const url = URL.createObjectURL(blob);
            const a = document.createElement('a');
            a.href = url;
            a.download = 'page.html';
            document.body.appendChild(a);
            a.click();
            document.body.removeChild(a);
            URL.revokeObjectURL(url);
        }
    
        // load
        window.addEventListener('load', () => {
            savePageAsHTML();
        });
    
        // load + timer
        window.addEventListener('load', () => {
            setTimeout(savePageAsHTML, 10000);
        });
    })();
    Ответ написан
  • Как защитить SPA от парсинга?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    API должен убедиться что запросы получает с сайта а не из других источников (curl,postman,php).

    Элементарно.
    Блокировать открытие сайта в эумляторов браузеров, например ломанный Selenium.

    Selenium это не эмулятор браузеров. "Ломанный" selenium это как?
    Остальные вопросы решает платная защита от Cloud Flare.

    Не решает, даже Яша и Гугл. Вопрос лишь в стоимости преодоления зашиты, в Вашем случае она находится в диапазоне "дешево-средне".

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

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Один из вариантов:
    - API, взаимодействие с MOEX ISS через Python.
    -Selenium.
    Ответ написан
    Комментировать
  • Может ли сервер обнаруживать использование MITM Proxy/Burp Suite?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    И возникает вопрос, а может ли сервер как то обнаруживать использование mitm proxy?

    https://proxy.incolumitas.com/proxy_detect.html
    Ответ написан
    Комментировать
  • Как сделать парсер для excel таблицы?

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

    1. Запросить данные с сайта используя requests.
    2. Использовать beautifulsoup для парсинга html из п1.
    3. Использовать openpyxl для работы с excel.
    Ответ написан
    Комментировать
  • Как проверить из каких источников приходит ответ при запросе на сайте?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Вопрос: как по запросу (после отправки) посмотреть из каких источников этот ответ приходит?

    В хроме можно посмотреть, куда ушёл запрос.
    Ответ написан
    Комментировать