소프트웨어 테스팅 | 웹 자동화 테스팅 아티팩트 극작가 튜토리얼(39)

여기에 이미지 설명을 삽입하세요.

머리말

일상 업무에서 때때로 웹사이트의 데이터를 크롤링해야 하지만 일부 웹사이트의 크롤링 방지 메커니즘은 우리가 웹드라이버를 사용하여 브라우저를 열고 있는지 여부를 결정합니다. 이런 일이 발생하면 원하는 데이터를 캡처할 수 없거나 webdriver에서 연 브라우저를 사용하여 로그인하려는 웹 사이트에 로그인할 수 없지만 극작가는 설정 방법을 제공합니다. 크롤링 방지 메커니즘을 피하세요.

window.navigator.webdriver속성

대부분의 경우 웹사이트에서는 이 속성을 사용하여 브라우저를 여는 데 사용할지 여부를 결정합니다 webdriver. 브라우저를 수동으로 여는 경우 속성은 false아래와 같습니다.

여기에 이미지 설명을 삽입하세요.

그러나 webdriver로 열린 브라우저는 true아래와 같이 표시됩니다.

여기에 이미지 설명을 삽입하세요.

일반적으로 이러한 크롤링 방지 감지를 우회하려면 webdriver열려 있는 브라우저의 속성 만 수정하면 됩니다 .false

Playwright를 사용하여 설정window.navigator.webdriver

이 속성을 설정하는 방법을 소개하겠습니다 window.navigator.webdriver. 웹사이트를 방문한다고 가정해 보겠습니다. 코드는 다음과 같습니다.

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())

이 예에서는 먼저 가져온 Playwright다음 async_playwright브라우저 인스턴스를 만드는 데 사용합니다. 브라우저 페이지에서는 r 속성을 로 page.evaluate설정하는 메소드를 사용합니다 . 다음으로, 메소드를 통해 대상 웹사이트를 열고 페이지가 로드된 후 크롤링 작업을 수행합니다.window.navigator.webdrivefalsepage.goto

참고: window.navigator.webdriver속성을 false로 설정하면 일부 웹 사이트의 크롤링 방지 감지를 우회할 수 있지만 모든 웹 사이트가 이 속성을 사용하여 자동화된 프로그램을 감지하는 것은 아닙니다.

요약하다

Playwright는 웹사이트 크롤링 방지 감지를 우회하고 자동화된 웹사이트 크롤링 작업을 수행하는 데 도움이 되는 강력한 도구입니다. 하지만 반드시 주의해서 사용하시고 법률 및 웹사이트 규정을 준수하시기 바랍니다.

추천

출처blog.csdn.net/Tester_muller/article/details/133083626