Playwright не может обойти обнаружение бота CloudFlare даже добавление файлов cookie и пользовательских агентовPython

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

Сообщение Anonymous »

Я пытаюсь ползти https://kick.com/browse/categories с драматургом, который имеет бесконечный свиток. Я попытался оценить приведенный ниже код JS и ждать продолжительного периода загрузки. Я выключаю без головы для более легкого визуального визуализации. В браузере веб -страница может быть прокрутана несколько раз. Когда он достигает конца, и веб -сайт просит загрузить больше контента, запрос не работает с 403. Он говорит, что JavaScript или Cookie не включены. Безголова. Ошибка, вероятно, происходит от CloudFlare, а не от фактического сайта, который я ползу, что означает, что мой сценарий обнаруживается как бот. Попытка найти, какие файлы cookie/заголовки использовать для обхода.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'}
< /code>
Я также попробовал: < /p>
  • Добавить файлы cookie в заголовке запроса с page.set_extra_http_headers < /code>. Файлы cookie поступают от Chrome Inspector> Network> Заголовки запросов
  • Заменить Sec-CH-UA в заголовке запроса с тем, что я получил от Chrome. Это не работает. Когда я включаю режим стелса, для рассматриваемого веб-сайта, загруженная страница будет пустой.
Как еще я могу обойти обнаружение бота?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)

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

await browser.close()

asyncio.run(main())


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

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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