Python Selenium访问gamermarkt站点卡在加载界面如何解决
gamermarkt.com 反爬拦截绕过方案
问题判定
你遇到的持续卡加载是站点挂载的Cloudflare反爬系统拦截了自动化请求,和现有配置的缺陷直接相关:
- 现有Selenium配置只隐藏了最基础的
navigator.webdriver标记,没有覆盖WebGL、Canvas、插件列表、权限特征等多维度的浏览器指纹校验点 - 配置里写的Chrome 102版本UA属于过旧版本,和当前主流浏览器版本差距过大,会直接被规则标记为异常流量
- 原生ChromeDriver自带的自动化特征没有被完全抹除,JS校验脚本识别到非人类访问特征后会直接挂起连接,不返回页面内容
可直接运行的解决方案
优先方案:使用
undetected-chromedriver替代原生驱动
这个库专门针对主流反爬系统做了驱动补丁,会自动匹配本地Chrome版本、自动注入反检测脚本,不需要手动拼凑大量参数,稳定性远高于自己改原生Selenium配置。
先安装依赖:pip install undetected-chromedriver
测试代码:import undetected_chromedriver as uc options = uc.ChromeOptions() options.add_argument("--start-maximized") # version_main填你本地安装的Chrome大版本号即可,比如装的125版就填125 driver = uc.Chrome(options=options, version_main=125) driver.get("https://www.gamermarkt.com/") # 打印页面标题验证是否加载成功 print(driver.title)正常运行后会自动通过Cloudflare的5秒检测,不会卡在加载界面。
备选方案:补全原生Selenium的反检测配置
如果必须使用原生ChromeDriver,先把本地Chrome和ChromeDriver都升级到最新稳定版(124及以上),替换掉旧版UA,补全缺失的反爬参数和启动后注入脚本:from selenium import webdriver from selenium.webdriver.chrome.options import Options browserProfile = Options() browserProfile.add_argument("--start-maximized") browserProfile.add_argument("--disable-blink-features=AutomationControlled") # 替换为和你本地Chrome版本完全对应的UA,禁止用过旧版本 browserProfile.add_argument("--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36") browserProfile.add_argument("--disable-infobars") browserProfile.add_argument("--disable-extensions") browserProfile.add_argument("--disable-plugins-discovery") browserProfile.add_experimental_option("excludeSwitches", ["enable-automation", "enable-logging"]) browserProfile.add_experimental_option("useAutomationExtension", False) browserProfile.add_experimental_option("prefs", { "credentials_enable_service": False, "profile.password_manager_enabled": False }) browser = webdriver.Chrome(options=browserProfile) # 注入脚本抹除残留自动化标记 browser.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", { "source": """ Object.defineProperty(navigator, 'webdriver', {get: () => undefined}); Object.defineProperty(navigator, 'plugins', {get: () => Array(5).fill(1)}); Object.defineProperty(navigator, 'languages', {get: () => ['zh-CN', 'zh', 'en']}); window.chrome = {runtime: {}}; """ }) browser.get('https://www.gamermarkt.com')这个方案稳定性弱于undetected-chromedriver,Cloudflare规则更新后大概率失效。
避坑提示
- 不要用无头模式访问,无头模式的浏览器指纹特征辨识度极高,基本会被直接拦截
- 页面刚加载完成时不要立刻执行点击、滚动、数据抓取操作,预留3-5秒的停留时间模拟真实用户行为
- 如果配置完还是被拦截,检查自己使用的IP,机房代理、VPN的IP基本都在Cloudflare高风险IP段,就算指纹完全正常也会被卡在验证环节,更换真实住宅IP即可解决
内容的提问来源于stack exchange,提问作者Gürkan KARADAĞ
相关产品推荐
相关产品推荐

