Ruless
@Ruless
Frontend development

Как обойти CloudFlare на python?

Пытаюсь получить данный с сайта https://dexscreener.com/solana

Но там стоит Cloudflare:

Пытался использовать и cloudscraper и cloudflare-scrape показывает ошибку 403 что впринце логично, но в интернетах пишут что данные инструменты должны решать данную проблему

import asyncio
import cloudscraper
from create_bot import bot
from bs4 import BeautifulSoup

async def connect_to_websocket(fdv, admin_id):
    try:
        await bot.send_message(admin_id, "Открытие страницы Dexscreener...")
        scraper = cloudscraper.create_scraper(disableCloudflareV1=True)
        response = scraper.get("https://dexscreener.com/solana")
        await bot.send_message(admin_id, f"{response.status_code}")
        
        if response.status_code == 200:
            body_content = response.content
            await bot.send_message(admin_id, f"{response.status_code}")
            soup = BeautifulSoup(body_content, 'html.parser')
            target_element = soup.find(class_='ds-dex-table')
            
            if target_element:
                await bot.send_message(admin_id, f"Найден элемент: {target_element.text[:2000]}")
            else:
                await bot.send_message(admin_id, "Элемент с классом 'ds-dex-table' не найден.")
        else:
            await bot.send_message(admin_id, f"Ошибка при загрузке страницы: {response.status_code}")

    except Exception as e:
        await bot.send_message(admin_id, f"Ошибка при загрузке страницы или получении ссылок: {e}")


Также пытался использовать selenium
import asyncio
import time
import undetected_chromedriver as uc
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC


from create_bot import bot
from bs4 import BeautifulSoup

async def connect_to_websocket(fdv, admin_id):
    
    options = uc.ChromeOptions()
    options.add_argument("--headless")  # Запуск в фоновом режиме
    options.add_argument("--auto-open-devtools-for-tabs")
    options.add_argument('--disable-blink-features=AutomationControlled')

    driver = uc.Chrome(options=options)

    try:
        await bot.send_message(admin_id, "Открытие страницы Dexscreener...")

        driver.get("https://dexscreener.com/solana")

        time.sleep(5)

        page_source = driver.page_source
        soup = BeautifulSoup(page_source, 'html.parser')
        body_content = soup.body
        body_html = str(body_content)

        await bot.send_message(admin_id, f"Текст страницы: {body_html[:2000]}")

        # Ищем блок с нужным классом
        target_block = soup.find('div', class_='ds-dex-table')  # замените на нужный класс
        
        if target_block:
            body_html = str(target_block)
            await bot.send_message(admin_id, f"Блок найден: {body_html[:2000]}")
        else:
            await bot.send_message(admin_id, "Блок не найден.")
    except Exception as e:
        await bot.send_message(admin_id, f"Ошибка при загрузке страницы или получении ссылок: {e}")
    finally:
        driver.quit()


Но здесь загружается только страница где типа надо ввести капчу Just a moment... Verify you are human...., но что делать дальше я уже не знаю, даже сам блок капчи не появляется, убил на это уже около недели и так никуда и не продвинулся.

Помогите кто чем может, я уже прям не знаю
  • Вопрос задан
  • 454 просмотра
Пригласить эксперта
Ответы на вопрос 2
@Everything_is_bad
Надо просто перестать парсить сайты на которых такая защита, а начать использовать API, который предлагает либо этот сайт, либо аналогичные
Ответ написан
@pyreaper
Можешь воспользоваться запросами через библиотеки с поддержкой TLS (tls_client/curl_ciffi/curl-impersonate), чтобы обойти cloudflare-защиту. А вообще, использование selenium тут очень странно, учитывая что ты получаешь только страницу, ничего не кликая

К слову, для обхода может понадобиться правильно настроить юзерагент и хедеры запроса.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы