Как можно автоматически найти все ссылки на сайте, которые генерируются динамически?

Как можно найти все динамические ссылки на сайте abc.ru, которые начинаются с abc.ru/15-08-23, если нельзя использовать метод брутфорса из-за длинных случайных символов после /15-08-23?
  • 29 января 2024 г. 5:38
Ответы на вопрос 3
Для автоматического нахождения динамически генерируемых ссылок на сайте можно воспользоваться следующими подходами:

1. **Использование инструментов для веб-скрапинга:** Например, Selenium или Puppeteer позволяют вам эмулировать поведение пользователя, переходить по страницам и извлекать URL-адреса, включая те, которые генерируются JavaScript'ом.

2. **Использование программы для краулинга сайтов с поддержкой JavaScript:** Программы типа Screaming Frog SEO Spider или другие коммерческие/открытые инструменты, способные выполнить JavaScript на сайте для извлечения ссылок.

3. **API сайта и AJAX-запросы:** Иногда сайты предоставляют API для получения данных, которые генерируются динамически. В таком случае можно использовать API для извлечения нужных ссылок.

4. **Наблюдение за сетевыми запросами:** Используя инструменты разработчика в браузерах (Chrome DevTools, Firefox Developer Tools), можно наблюдать за сетевыми запросами при взаимодействии с сайтом и выявлять шаблоны генерации ссылок.

Чтобы найти все динамические ссылки на сайте abc.ru, которые начинаются с abc.ru/15-08-23, вы можете использовать следующие методы:

1. **Web Scraping с использованием Headless Browser:** Используйте инструменты веб-скрапинга с поддержкой JavaScript (например, Selenium, Puppeteer) для перехода по сайту и сбора ссылок, которые начинаются с указанного пути.

    ```python
    # Пример использования Selenium для поиска ссылок
    from selenium import webdriver
    from urllib.parse import urljoin
    
    # Настройка Selenium с использованием Headless Chrome
    options = webdriver.ChromeOptions()
    options.add_argument('headless')
    driver = webdriver.Chrome(options=options)
    
    # Открываем страницу
    driver.get("http://abc.ru")
    
    # Получаем все ссылки на странице
    links = driver.find_elements_by_tag_name("a")
    
    # Выводим все ссылки, начинающиеся на abc.ru/15-08-23
    for link in links:
        href = link.get_attribute("href")
        if href and href.startswith("http://abc.ru/15-08-23"):
            print(href)
    
    # Закрываем браузер
    driver.quit()
    ```

2. **Анализ AJAX-запросов:** Отслеживайте сетевые запросы, чтобы узнать, какие AJAX-запросы отправляются при генерации ссылок. Затем можно повторять эти запросы программно для извлечения ссылок.

3. **Анализ JavaScript-кода:** Изучите JavaScript-код, ответственный за генерацию ссылок, чтобы понять логику и воспроизвести это в своем скрипте.

4. **Слушатели событий (Event Listeners):** Отслеживайте события, которые вызывают создание новых ссылок, и извлекайте их при их возникновении.

Ключевым фактором является использование инструментов, которые могут эмулировать действия в браузере и обрабатывать JavaScript код, поскольку обычный HTTP-клиент (например, curl или requests в Python) не сможет обработать динамически генерируемый контент.
silenium+webdriver
Скачиваете все страницы сайта, и глазками находите все ссылки, удовлетворяющие поставленным условиям.
Похожие вопросы