Python - SeleniumBase:网络爬虫受到人类验证系统的影响(选择类似图像)

问题描述 投票:0回答:1

在使用 SeleniumBase 抓取快递网站以截取跟踪页面的屏幕截图时,检测到机器人并显示“选择相似图像”验证框。

网址:https://www.royalmail.com/track-your-item#/tracking-results/QF085212272GB

代码

    from seleniumbase import SB
    fallback_ua = 'Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Mobile Safari/537.36'

    chromium_arg = '--disable-gpu,--disable-blink-features=AutomationControlled'
    with SB(uc=True, headless2=True, agent=fallback_ua, chromium_arg=chromium_arg) as sb:
        url = "https://www.royalmail.com/track-your-item#/tracking-results/QF085212272GB"
        sb.uc_open_with_reconnect(url, 3)
        sb.sleep(1)

        sb.save_screenshot('ss.png')

预期截图

enter image description here

实际截图

enter image description here


版本

Docker化环境:python3.9-slim

硒基:4.28.0

Chromium 浏览器:Chromium 126.0.6478.126 构建于 Debian 12.5,在 Debian 12.5 上运行

Chrome 驱动程序:ChromeDriver 126.0.6478.126 (d36ace6122e0a59570e258d82441395206d60e1c-refs/branch-heads/6478@{#1591})

python selenium-chromedriver undetected-chromedriver seleniumbase
1个回答
0
投票

虽然你也问过并且我已经从 GitHub 页面 (SeleniumBase/discussions/2892) 回答,但我会在这里发布解决方案,以防其他人遇到它:

看起来你正在改变一些不应该改变的事情。用这个代替:

from seleniumbase import SB

with SB(uc=True) as sb:
    url = "https://www.royalmail.com/track-your-item#/tracking-results/QF085212272GB"
    sb.uc_open_with_reconnect(url, 4)
    sb.save_screenshot("myimage.png")

不要使用无头模式,不要更改默认的用户代理,也不要在 UC 模式下设置 chromium 参数。 UC 模式的默认设置可最大限度地提高您绕过机器人检测的机会。

© www.soinside.com 2019 - 2024. All rights reserved.