Pruebas de software | Tutorial de dramaturgo de artefactos de pruebas de automatización web (treinta y nueve)

Insertar descripción de la imagen aquí

Prefacio

En nuestro trabajo diario, a veces necesitamos rastrear los datos en el sitio web, pero el mecanismo anti-rastreo de algunos sitios web determinará si estamos abriendo el navegador usando webdriver. Una vez que se determina que estamos abriendo el navegador usando webdriver, si Si esto sucede, no podremos capturar los datos que queremos o no podremos usar el navegador abierto por webdriver para iniciar sesión en el sitio web en el que queremos iniciar sesión, pero dramaturgo nos proporciona una manera de configurarlo. y escapar de este Un mecanismo anti-rastreo.

window.navigator.webdriverAtributos

En la mayoría de los casos, los sitios web usan este atributo para determinar si usamos webdriverpara abrir el navegador. Si abrimos el navegador manualmente, entonces el atributo es false, como se muestra a continuación:

Insertar descripción de la imagen aquí

Pero el navegador abierto con webdriver se mostrará como truese muestra a continuación:

Insertar descripción de la imagen aquí

Normalmente, sólo necesitamos poder webdrivermodificar las propiedades del navegador abierto falsepara evitar esta detección anti-rastreo.

Configurar usando Playwrightwindow.navigator.webdriver

Introduzcamos cómo configurar window.navigator.webdriveresta propiedad. Supongamos que queremos visitar un sitio web. El código es el siguiente:

import asyncio
from playwright.async_api import async_playwright

async def set_navigator_property():
    async with async_playwright() as p:
        browser = await p.chromium.launch()
        page = await browser.new_page()

        # 设置 window.navigator.webdriver 属性为 false
        await page.evaluate('''() => {
            Object.defineProperty(navigator, 'webdriver', {
                get: () => false
            });
        }''')

        await page.goto('https://example.com')  # 替换为目标网站的 URL
        await asyncio.sleep(10)  # 这里可以等待页面加载完毕后再继续操作

        # 在此处可以执行你的爬取操作

        await browser.close()

if __name__ == "__main__":
    asyncio.run(set_navigator_property())

En este ejemplo, primero importamos Playwrighty luego usamos async_playwrightpara crear una instancia de navegador. En la página del navegador, utilizamos page.evaluateel método para establecer window.navigator.webdriveel atributo r en false. A continuación, page.gotoabrimos el sitio web de destino mediante el método y realizamos nuestra operación de rastreo después de cargar la página.

Nota: Establecer window.navigator.webdriverel atributo en falso puede evitar la detección antirastreo de algunos sitios web, pero no todos los sitios web dependerán de este atributo para detectar programas automatizados.

Resumir

Playwright es una poderosa herramienta que puede ayudarlo a evitar la detección anti-rastreo de sitios web y realizar operaciones automatizadas de rastreo de sitios web. Pero asegúrese de usarlo con precaución y cumplir con las leyes y regulaciones del sitio web.

Supongo que te gusta

Origin blog.csdn.net/Tester_muller/article/details/133083626
Recomendado
Clasificación