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

Selenium调用Chrome webdriver访问宜家站点商品数与常规浏览器不一致

问题成因
  • webdriver指纹未完全绕过:你配置的两个参数仅屏蔽了最基础的自动化标记,ChromeDriver本身还有大量可被检测的特征,比如window.navigator.webdriver属性默认值为true、浏览器插件/语言配置异常、webdriver特有的cdc变量残留等,站点的反爬脚本识别到这些特征后,会截断返回商品列表。你修改的UA属于最基础的识别项,单独修改无法绕过当前站点的反爬策略。
  • 懒加载逻辑未完全触发:该站点商品列表采用滚动懒加载机制,常规浏览器访问时用户滚动会触发后续商品加载,而Selenium默认打开页面后不会主动执行滚动操作,仅加载首屏及前几屏的68件商品,容易被误认为是反爬拦截。
  • 站点前置交互未完成:常规浏览器会保留之前的Cookie同意记录、地区选择配置,而Selenium每次启动为纯净环境,若未主动完成Cookie授权、地区匹配的交互,站点会返回默认的部分商品列表。
  • IP请求频率触发限流:若短时间内多次用Selenium发起访问,站点会对当前IP做临时限流,仅返回部分内容。
解决方案
  • 完整绕过自动化特征检测
    除已有配置外,补充添加以下启动参数:
    # 屏蔽自动化控制标记
    chrome_opt.add_argument("--disable-blink-features=AutomationControlled")
    # 模拟真实浏览器启动配置
    chrome_opt.add_argument("--start-maximized")
    chrome_opt.add_argument("--disable-extensions")
    chrome_opt.add_argument("--no-first-run")
    
    也可直接使用undetected-chromedriver库替代原生ChromeDriver,无需手动配置即可绕过绝大多数webdriver特征检测。
  • 模拟滚动触发完整商品加载
    页面加载完成后,执行多次滚动操作,等待所有商品加载完成后再提取数据,示例代码如下:
    import time
    # 多次滚动到页面底部,触发懒加载
    for _ in range(5):
        driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
        time.sleep(2)
    
  • 补全站点必要交互
    页面加载后优先处理Cookie同意弹窗、地区选择弹窗,确保站点返回对应区域的完整商品数据:
    from selenium.webdriver.common.by import By
    # 点击同意Cookie
    try:
        driver.find_element(By.ID, "onetrust-accept-btn-handler").click()
        time.sleep(1)
    except:
        pass
    
  • 控制访问频率,必要时使用代理
    单次访问间隔控制在30秒以上,若出现IP限流,切换代理IP后再发起访问。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 03:15:08