You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 15:23:10