前言
有些网站有反爬机制,比如用代码启动的浏览器会被检测到,需要人机验证,用脚本去点击或者滑动滑动虽然能滑动,但是会认证失败。
用playwright 和 selenium 启动的浏览器都会用个webdriver 属性。浏览器会根据这个属性判断是否是人工正常操作。
window.navigator.webdriver属性
人工正常打开的浏览器 window.navigator.webdriver属性 为false
以下是通过playwright 打开的浏览器窗口,查看window.navigator.webdriver属性 为true
跳过反爬检测机制
在启动浏览器时添加以下配置项
args=['--disable-blink-features=AutomationControlled']
示例代码
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
# 非无痕模式启动
browser = p.chromium.launch_persistent_context(
# 指定本机用户缓存地址
user_data_dir="D:\\chrome_userx\\yoyo",
# 接收下载事件
accept_downloads=True,
# 设置 GUI 模式
headless=False,
bypass_csp=True,
slow_mo=100,
channel="chrome",
# 跳过反爬检测
args=['--disable-blink-features=AutomationControlled']
)
page = browser.new_page() # 打开标签页
page.goto("http://...../users/login/")