使用 Selenium 自动结账过程时出现 403

Baj*_*jan 5 html javascript python selenium selenium-chromedriver

我正在尝试使用 python 和 selenium 创建一个脚本来自动执行 bestbuy.ca 的结账过程。

我一直到最后一个阶段,您单击以查看最终订单,但是当我尝试单击进入最后一步时,会收到以下 403 禁止消息(如网络响应中所示)。

是否有服务器端检测到我正在使用硒并阻止我继续?

如何隐藏正在使用硒的事实?

这些是我用于硒的选项:

options = Options()
options.add_argument('--disable-blink-features=AutomationControlled')
options.add_argument("start-maximized")
options.add_argument("--disable-extensions")
driver = webdriver.Chrome(options=options)
Run Code Online (Sandbox Code Playgroud)

我目前在每次操作后有 10 秒的延迟(即打开页面、等待、单击添加到购物车、等待、单击结帐、等待)

我已经实现了在每次运行时使用的随机用户代理:

import fake_useragent
ua = UserAgent()
userAgent = ua.random
options.add_argument(f'user-agent={userAgent}')
Run Code Online (Sandbox Code Playgroud)

我还根据THIS THREAD 中的评论修改了我的 chromedriver 二进制文件

进入订单审核页面时出现错误: 进入订单审核页面时出现错误

Baj*_*jan 5

经过最近几天的大量测试,这里有一些选项可以让我绕过我面临的限制。

  1. 在我的 chromedriver 中修改了 cdc_ 字符串

  2. Chromedriver 选项:

     options.add_argument('--disable-blink-features=AutomationControlled')
     options.add_argument("--disable-extensions")
     options.add_experimental_option('useAutomationExtension', False)
     options.add_experimental_option("excludeSwitches", ["enable-automation"])
     chrome_driver = webdriver.Chrome(options=options)
    
    Run Code Online (Sandbox Code Playgroud)
  3. 将 webdriver 的导航器的属性值更改为 undefined:

chrome_driver.execute_script("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})")
Run Code Online (Sandbox Code Playgroud)

在实现所有这三个之后,我在浏览网站和购物车/结帐流程时不再遇到任何 403 错误。

  • 感谢您的提问和回答。一段时间以来我一直面临类似的问题。“--disable-blink-features=AutomationControlled”为我解决了这个问题。谢谢你! (2认同)