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

无法下载带JavaScript检测的网页,求WSL2无GUI环境解决方案

解决WSL2 Ubuntu下无头模式绕过JS检测抓取页面的问题

在Windows 10的WSL2(Ubuntu)环境下,尝试抓取带有JS检测机制的网页https://app.aquahawkami.tech/nfc?imei=359986122021410,使用axios、Selenium无头Chrome、无头Chrome命令行均收到未启用JS的提示,需部署到crontab(无GUI),卡在获取完整页面环节。


问题分析

  1. axios方案不可行:axios是纯HTTP请求库,不会执行页面JavaScript,无法绕过JS检测,也无法获取JS渲染后的内容,直接放弃该方法。
  2. 无头模式被检测:网页通过识别无头浏览器的特征(如特殊UA、自动化标志、窗口属性)拦截请求,需要添加参数伪装成正常浏览器。

修改后的Selenium Python代码

添加伪装参数模拟正常浏览器,并等待页面JS执行完成:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

options = Options()
# 新版无头模式,更接近正常浏览器行为
options.add_argument('--headless=new')
# 解决WSL环境下的沙箱限制
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
# 禁用自动化检测,避免被识别为无头浏览器
options.add_argument('--disable-blink-features=AutomationControlled')
# 设置真实Chrome浏览器的User-Agent
options.add_argument('user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36')
# 模拟正常窗口大小
options.add_argument('--window-size=1920,1080')
# 明确启用JavaScript(默认已启用,此处为冗余保障)
options.add_argument('--enable-javascript')
# 禁用GPU加速(适配WSL环境)
options.add_argument('--disable-gpu')

driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)

try:
    driver.get("https://app.aquahawkami.tech/nfc?imei=359986122021410")
    # 等待页面加载完成,可根据页面实际元素调整等待条件
    WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.TAG_NAME, "body"))
    )
    page_source = driver.page_source
    with open("aquahawk_source.html", "w", encoding="utf-8") as fileToWrite:
        fileToWrite.write(page_source)
    print("页面已成功保存")
finally:
    driver.quit()

修改后的无头Chrome命令行

添加同样的伪装参数,直接输出页面内容:

google-chrome --headless=new --no-sandbox --disable-dev-shm-usage --disable-blink-features=AutomationControlled --user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" --window-size=1920,1080 --enable-javascript --disable-gpu --dump-dom https://app.aquahawkami.tech/nfc?imei=359986122021410 > aquahawk_source.html

额外说明

  • --headless=new是Chrome 112+版本的新无头模式,行为更接近正常浏览器,比旧版--headless更难被检测。
  • User-Agent可根据本地Chrome版本调整,确保与真实浏览器一致。
  • 等待页面的条件需根据目标网页的实际结构修改,比如等待特定内容容器加载完成,确保JS渲染完毕。
  • WSL2环境下需确保已安装Chrome:sudo apt install google-chrome-stable

内容的提问来源于stack exchange,提问作者Skibumdon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 01:53:13