Драматург не может обойти обнаружение ботов Cloudflare, даже добавив файлы cookie и пользовательские агентыPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Драматург не может обойти обнаружение ботов Cloudflare, даже добавив файлы cookie и пользовательские агенты

Сообщение Anonymous »

Я пытаюсь просканировать https://kick.com/browse/categories с помощью драматурга, у которого есть бесконечная прокрутка. Я попытался оценить приведенный ниже js-код и подождать продолжительное время загрузки. Я отключаю Headless для более удобного просмотра. В браузере веб-страницу можно прокрутить несколько раз. Когда он достигает конца и веб-сайт запрашивает загрузку дополнительного контента, запрос завершается с ошибкой 403. В нем говорится, что JavaScript или файлы cookie не включены.
Изображение

Тот же результат показывает, когда я включаю безголовый режим.
Изменить: я только что понял, что HTML-код ответа имеет заголовок «Минуточку...», который я видел на HTML-коде страницы Cloudflare. Ошибка, вероятно, возникает из-за Cloudflare, а не из-за фактического сайта, который я сканирую, а это означает, что мой скрипт определяется как бот. Пытаюсь найти, какие файлы cookie/заголовки использовать, чтобы обойти это.
HTML-ответ: Pastebin1
HTML-запрос: Pastebin2
Request: GET https://kick.com/api/v1/subcategories?limit=32&page=2 {'cluster': 'v1', 'sec-ch-ua-platform': '"Windows"', 'referer': 'https://kick.com/browse/categories', 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36', 'accept': 'application/json', 'sec-ch-ua': '"HeadlessChrome";v="129", "Not=A?Brand";v="8", "Chromium";v="129"', 'sec-ch-ua-mobile': '?0'}

Я также пробовал:
  • добавить файлы cookie в заголовок запроса с помощью page.set_extra_http_headers. Файлы cookie берутся из инспектора Chrome > Сеть > заголовки запросов.
  • замените sec-ch-ua в заголовке запроса на тот, который я получил от Chrome.
  • используйте драматургическую скрытность. это не работает. когда я включаю скрытый режим, для рассматриваемого веб-сайта загруженная страница будет пустой.
Как еще я могу обойти обнаружение бота?< /p>
Завершить редактирование
Ниже приведен мой код:
import asyncio
from playwright.async_api import async_playwright
import time

# copied with cookie editor when opening the page with chrome
cookies = [
{
"domain": "kick.com",
"expirationDate": 1726721839.170133,
"name": "KP_UIDz-ssn",
"path": "/",
"value": "02drFYb8SXDKZm1tttHbDxrjgNuDdR4yBLOBCmEN9sCjbepNK6vZ1ESDUhPkXwwGDbuhype6dcvmnxsMesfoHNevNIZD4Htf8KWlaDjuN30u2N6SIIJciTgkEWG5nX8cWHWrf5qXLq8NU1SGriiT6yIfuTYvqEG3fvO1Kb"
},
{
"domain": ".kick.com",
"name": "__cf_bm",
"path": "/",
"value": "CmeY2iVdWeXaYGUuIDyRMRxDgMQjYhZcl3we_Qy8pW8-1726689886-1.0.1.1-mLpIWwhnp3_zmFV7.bmPiIafI7q_BdbQduJiSxKUcOOCFPV.3r3Yb.p36MT3Sa1Ubq2TCTVOuilQEV3X6u0kjw"
},
{
"domain": ".kick.com",
"name": "__stripe_mid",
"path": "/",
"value": "50b6ac3c-0cc6-44de-b64a-916706484819d40fd7"
},
{
"domain": ".kick.com",
"name": "__stripe_sid",
"path": "/",
"value": "2d4b8647-0a68-46f9-8921-e8ce26409063280566"
}
]

PAGE_DOWN_JS = """
div = document.querySelector('#main-container');
div.scrollBy(0, window.innerHeight);
"""
async def handle_response(response):
# Get the response body as text
html_content = await response.body()
print(f"Response: {html_content.decode('utf-8')}")

async def main():
async with async_playwright() as p:
# Launch the browser
browser = await p.chromium.launch(headless=True, args=["--start-maximized"])
context = await browser.new_context(user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36")
await context.add_cookies(cookies)
page = await context.new_page()

# Navigate to the website
await page.goto('https://kick.com/browse/categories')
await page.wait_for_selector("#main-container")
button = page.locator("div.flex.flex-row.items-center.justify-center.gap-2>button>>nth=0")
await button.click()
await page.screenshot(path="/Users/gxsong/kick/screenshot_before.png")

page.on("console", lambda msg: print(f"Console [{msg.type}]: {msg.text}"))
page.on("response", lambda response: asyncio.create_task(handle_response(response)))

# Evaluate some JavaScript code on the page
await page.evaluate('''
window.addEventListener('scroll', function() {
console.log('Scrolled! Current scroll position:', window.scrollY);
});
''')
for i in range(10):
await page.evaluate(PAGE_DOWN_JS)
time.sleep(10)

# Get the loaded content of the page
await page.screenshot(path="/Users/gxsong/kick/screenshot.png")
page_content = await page.content()
# print(page_content)

# Close the browser
await browser.close()

# Run the async function
asyncio.run(main())



Подробнее здесь: https://stackoverflow.com/questions/790 ... and-user-a
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Драматург не может обойти обнаружение ботов Cloudflare, даже добавив файлы cookie и пользовательские агенты
    Anonymous » » в форуме Python
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Playwright не может обойти обнаружение бота CloudFlare даже добавление файлов cookie и пользовательских агентов
    Anonymous » » в форуме Python
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Как обойти защиту ботов Cloudflare в Selenium
    Anonymous » » в форуме Python
    0 Ответы
    27 Просмотры
    Последнее сообщение Anonymous
  • Selenium headless: как обойти обнаружение Cloudflare с помощью Selenium
    Anonymous » » в форуме Python
    0 Ответы
    38 Просмотры
    Последнее сообщение Anonymous
  • Cookie Cookie Cookie Cookie Core Identity ASP.NET хранится, но не разрешается - Blazor Web App
    Гость » » в форуме C#
    0 Ответы
    46 Просмотры
    Последнее сообщение Гость

Вернуться в «Python»