머리말
일상 업무에서 때때로 웹사이트의 데이터를 크롤링해야 하지만 일부 웹사이트의 크롤링 방지 메커니즘은 우리가 웹드라이버를 사용하여 브라우저를 열고 있는지 여부를 결정합니다. 이런 일이 발생하면 원하는 데이터를 캡처할 수 없거나 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.webdrive
false
page.goto
참고: window.navigator.webdriver
속성을 false로 설정하면 일부 웹 사이트의 크롤링 방지 감지를 우회할 수 있지만 모든 웹 사이트가 이 속성을 사용하여 자동화된 프로그램을 감지하는 것은 아닙니다.
요약하다
Playwright는 웹사이트 크롤링 방지 감지를 우회하고 자동화된 웹사이트 크롤링 작업을 수행하는 데 도움이 되는 강력한 도구입니다. 하지만 반드시 주의해서 사용하시고 법률 및 웹사이트 규정을 준수하시기 바랍니다.