SeleniumBase 和 Datadome

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

我正在尝试(仍然)在 UC 模式下使用 SeleniumBase 克服 datadome 检测。我以为我已经拥有了它,但似乎 Datadome 正在发展,现在让我去验证码,在我用手滑动拼图块后,我被阻止了。我已附上代码,以防有人可以看到我可能遗漏的内容。您会注意到光标的一些睡眠和 pyautogui 移动,试图看起来更像人类 - 之前的版本(也被拒绝)没有这些行。预先感谢您的任何想法。(不确定为什么间距有点小,但在 pycharm 代码中没问题)

with SB(uc=True) as sb:
    #   Maximize window size
    sb.maximize_window()
    #   Open up LOG IN screen
    #   REMOVED FOR A LITTLE ANONIMITY
    #   Accept cookies settings
    sleep(2)
    sb.click('button:nth-child(1)')
    #   Find Username field and enter it using stored value from credentials array
    sleep(2)
    sb.type("#p_lt_ContentWidgets_pageplaceholder_p_lt_zoneContent_CHO_Widget_"\
        "LoginFormWith"\
        "FullscreenBackground_XLarge_loginCtrl_BaseLogin_UserName", credentials[0][0])

    #   Find/enter user password
    sleep(2)
    sb.type('#p_lt_ContentWidgets_pageplaceholder_p_lt_zoneContent_CHO_Widget_'
        'LoginFormWith'\
        'FullscreenBackground_XLarge_loginCtrl_BaseLogin_Password', credentials[0][1])
    sleep(2)
    sb.click("#p_lt_ContentWidgets_pageplaceholder_p_lt_zoneContent_CHO_Widget_"
         "LoginFormWithFullscreen"\
        "Background_XLarge_loginCtrl_BaseLogin_LoginButton")
    sleep(5)
    #     print("MSG035 Unable to Select LOG ON Button")
    print("Title = ", sb.get_title())
    #
    pyautogui.moveTo(100, 100)
    sb.click("#p_lt_ContentWidgets_pageplaceholder_p_lt_zoneSM30_CHO_Widget_"\
        "QuickLinkMenu"\
        "_Small_rptItems_ctl03_hrefLink")

    #   Switch Focus to new window - leave original window to preserve session

    sb.switch_to_newest_window()
    pyautogui.moveTo(525, 121)
    #   Move down 
    sleep(1)
    pyautogui.moveTo(534, 155, 1)
    pyautogui.click()

    pyautogui.moveTo(525, 121)
    #   Move down to make/change tee times
    sleep(1)
    pyautogui.moveTo(534, 155, 1)
    print("Drop Down")
    #   Select/hover over the  Button after sleeping for 3 seconds
    sleep(3)
    #sb.slow_click("span:nth-child(1)")
    sb.slow_click('//*[@id="rwdNav"]/ul/li[1]/ul/li[1]/a/span')
    sleep(1)
    pyautogui.moveTo(534, 155, 1)
    #   Select option
    print("Select drop down option")
   sleep(3)
    sb.slow_click("li:nth-child(1)")
    sleep(10)
    sb.close()
seleniumbase
1个回答
0
投票

有时,当访问需要较长时间加载的站点时,默认的

reconnect_time
在 SeleniumBase UC 模式下是不够的。您可以自定义它。这是一个在开始时执行此操作的示例脚本:

from seleniumbase import SB

with SB(uc=True, incognito=True, test=True) as sb:
    sb.driver.uc_open_with_reconnect("https://pixelscan.net/", 11)
    sb.remove_elements("jdiv")  # Remove chat widgets
    sb.assert_text("No automation framework detected", "pxlscn-bot-detection")
    sb.assert_text("You are not masking your fingerprint")
    sb.highlight("span.text-success", loops=10)
    sb.sleep(1)
    sb.highlight("pxlscn-fingerprint-masking div", loops=10, scroll=False)
    sb.sleep(1)
    sb.highlight("div.bot-detection-context", loops=10, scroll=False)
    sb.sleep(3)

如果将 SeleniumBase UC 模式与

pyautogui
混合,请在运行
pyautogui
命令之前先调用此模式:

driver.disconnect()

然后使用

pyautogui
命令完成后,调用此命令再次使用 Selenium:

driver.connect()

请注意,如果您正确执行了所有操作,您甚至可能根本不需要使用

pyautogui

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