Playwright无头模式爬取URLHaus遇405错误,非无头模式正常的问题求助
Playwright无头模式爬取URLHaus遇405错误,非无头模式正常的问题求助
我正在开发一个爬取URLHaus浏览页面的脚本,目前遇到了个棘手的问题:当我把Playwright Chromium浏览器的headless参数设为True时,脚本会触发405错误,根本没法正常访问目标页面;但只要改成headless=False(也就是显示可视化的浏览器窗口),就能顺利加载页面,看到预期的内容。
以下是我当前的代码片段:
#!/usr/bin/env python3 from playwright.sync_api import sync_playwright from bs4 import BeautifulSoup import json from pathlib import Path def scrape_urlhaus(): with sync_playwright() as p: browser = p.chromium.launch(headless=True, slow_mo=1200) context = browser.new_context( viewport={'width': 1366, 'height': 768}, ) context.add_init_script("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})") context.add_cookies(json.loads(Path("urlhaus_cookies.json").read_text())) page = context.new_page() page.goto("https://urlhaus.abuse.ch/") page.screenshot(path="debug_screenshot.png") page.wait_for_selector('a.nav-link[href="/browse/"]') page.click('a.nav-link[href="/browse/"]') page.wait_for_selector('table.table.table-sm.table-hover.table-bordered') content = page.content()
具体的异常表现:
- 开启
headless=True时,访问页面会直接返回405错误页面 - 切换为
headless=False时,浏览器能正常打开并显示URLHaus的浏览页面,完全没有错误
我已经尝试了禁用navigator.webdriver检测、设置和非无头模式一致的视口尺寸,甚至导入了之前保存的Cookies,但问题还是没解决。有没有有经验的开发者能帮我分析下问题出在哪,以及对应的解决办法呀?
备注:内容来源于stack exchange,提问作者pippen
相关产品推荐
相关产品推荐

