无法下载带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),卡在获取完整页面环节。
问题分析
- axios方案不可行:axios是纯HTTP请求库,不会执行页面JavaScript,无法绕过JS检测,也无法获取JS渲染后的内容,直接放弃该方法。
- 无头模式被检测:网页通过识别无头浏览器的特征(如特殊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
相关产品推荐
相关产品推荐

