Merge pull request #3593 from seleniumbase/cdp-mode-patch-41

CDP Mode: Patch 41
This commit is contained in:
Michael Mintz 2025-03-06 20:54:34 -05:00 committed by GitHub
commit ab52f9928c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 88 additions and 8 deletions

View File

@ -0,0 +1,11 @@
# An example of bypassing 2 consecutive CF CAPTCHAs"""
from seleniumbase import SB
with SB(uc=True, test=True) as sb:
url = "https://sms-man.com/login"
sb.activate_cdp_mode(url)
sb.sleep(2)
sb.uc_gui_click_captcha()
sb.sleep(2)
sb.uc_gui_click_captcha()
sb.sleep(2)

View File

@ -7,7 +7,7 @@ attrs>=25.1.0
certifi>=2025.1.31
exceptiongroup>=1.2.2
websockets~=13.1;python_version<"3.9"
websockets>=15.0;python_version>="3.9"
websockets>=15.0.1;python_version>="3.9"
filelock~=3.16.1;python_version<"3.9"
filelock>=3.17.0;python_version>="3.9"
fasteners>=0.19
@ -18,7 +18,7 @@ typing-extensions>=4.12.2
sbvirtualdisplay>=1.4.0
MarkupSafe==2.1.5;python_version<"3.9"
MarkupSafe>=3.0.2;python_version>="3.9"
Jinja2>=3.1.5
Jinja2>=3.1.6
six>=1.17.0
parse>=1.20.2
parse-type>=0.6.4

View File

@ -1,2 +1,2 @@
# seleniumbase package
__version__ = "4.35.4"
__version__ = "4.35.5"

View File

@ -1288,6 +1288,13 @@ def _uc_gui_click_captcha(
and driver.is_element_present("form div:not(:has(*))")
):
frame = "form div:not(:has(*))"
elif (
driver.is_element_present('[src*="/turnstile/"]')
and driver.is_element_present(
"body > div#check > div:not([class])"
)
):
frame = "body > div#check > div:not([class])"
elif driver.is_element_present(".cf-turnstile-wrapper"):
frame = ".cf-turnstile-wrapper"
elif driver.is_element_present(
@ -1321,13 +1328,34 @@ def _uc_gui_click_captcha(
driver.execute_script(script)
elif (
driver.is_element_present("form")
and driver.is_element_present(
"form.turnstile #turnstile-widget > div:not([class])"
and (
driver.is_element_present('form div[style*="center"]')
or driver.is_element_present('form div[style*="right"]')
)
):
script = (
"""var $elements = document.querySelectorAll(
'form.turnstile #turnstile-widget');
'form[style], form div[style]');
var index = 0, length = $elements.length;
for(; index < length; index++){
the_style = $elements[index].getAttribute('style');
new_style = the_style.replaceAll('center', 'left');
new_style = new_style.replaceAll('right', 'left');
$elements[index].setAttribute('style', new_style);}"""
)
if __is_cdp_swap_needed(driver):
driver.cdp.evaluate(script)
else:
driver.execute_script(script)
elif (
driver.is_element_present("form")
and driver.is_element_present(
'form [id*="turnstile"] > div:not([class])'
)
):
script = (
"""var $elements = document.querySelectorAll(
'form [id*="turnstile"]');
var index = 0, length = $elements.length;
for(; index < length; index++){
$elements[index].setAttribute('align', 'left');}"""
@ -1577,6 +1605,13 @@ def _uc_gui_handle_captcha_(driver, frame="iframe", ctype=None):
):
frame = "form div:not(:has(*))"
tab_up_first = True
elif (
driver.is_element_present('[src*="/turnstile/"]')
and driver.is_element_present(
"body > div#check > div:not([class])"
)
):
frame = "body > div#check > div:not([class])"
else:
return
else:

View File

@ -781,6 +781,23 @@ def Driver(
swiftshader = False
if locale is not None and locale_code is None:
locale_code = locale
if locale_code is None:
if '--locale="' in arg_join:
locale_code = (
arg_join.split('--locale="')[1].split('"')[0]
)
elif '--locale=' in arg_join:
locale_code = (
arg_join.split('--locale=')[1].split(' ')[0]
)
elif '--locale-code="' in arg_join:
locale_code = (
arg_join.split('--locale-code="')[1].split('"')[0]
)
elif '--locale-code=' in arg_join:
locale_code = (
arg_join.split('--locale-code=')[1].split(' ')[0]
)
if ad_block is not None and ad_block_on is None:
ad_block_on = ad_block
if ad_block_on is None:

View File

@ -942,6 +942,23 @@ def SB(
swiftshader = False
if locale is not None and locale_code is None:
locale_code = locale
if locale_code is None:
if '--locale="' in arg_join:
locale_code = (
arg_join.split('--locale="')[1].split('"')[0]
)
elif '--locale=' in arg_join:
locale_code = (
arg_join.split('--locale=')[1].split(' ')[0]
)
elif '--locale-code="' in arg_join:
locale_code = (
arg_join.split('--locale-code="')[1].split('"')[0]
)
elif '--locale-code=' in arg_join:
locale_code = (
arg_join.split('--locale-code=')[1].split(' ')[0]
)
if ad_block is not None and ad_block_on is None:
ad_block_on = ad_block
if ad_block_on is None:

View File

@ -156,7 +156,7 @@ setup(
"certifi>=2025.1.31",
"exceptiongroup>=1.2.2",
'websockets~=13.1;python_version<"3.9"',
'websockets>=15.0;python_version>="3.9"',
'websockets>=15.0.1;python_version>="3.9"',
'filelock~=3.16.1;python_version<"3.9"',
'filelock>=3.17.0;python_version>="3.9"',
'fasteners>=0.19',
@ -167,7 +167,7 @@ setup(
"sbvirtualdisplay>=1.4.0",
'MarkupSafe==2.1.5;python_version<"3.9"',
'MarkupSafe>=3.0.2;python_version>="3.9"',
"Jinja2>=3.1.5",
"Jinja2>=3.1.6",
"six>=1.17.0",
'parse>=1.20.2',
'parse-type>=0.6.4',