Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit ab56241

Browse filesBrowse files
committed
Add ability to change fingerprints in realtime
1 parent 8d37f15 commit ab56241
Copy full SHA for ab56241

File tree

Expand file treeCollapse file tree

8 files changed

+57
-20
lines changed
Filter options
Expand file treeCollapse file tree

8 files changed

+57
-20
lines changed

‎examples/cdp_mode/ReadMe.md

Copy file name to clipboardExpand all lines: examples/cdp_mode/ReadMe.md
+2-2Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -361,8 +361,8 @@ with SB(uc=True, test=True, locale="en", pls="none") as sb:
361361
### 🐙 <b translate="no">CDP Mode</b> API / Methods
362362

363363
```python
364-
sb.cdp.get(url)
365-
sb.cdp.open(url)
364+
sb.cdp.get(url, **kwargs)
365+
sb.cdp.open(url, **kwargs)
366366
sb.cdp.reload(ignore_cache=True, script_to_evaluate_on_load=None)
367367
sb.cdp.refresh()
368368
sb.cdp.get_event_loop()

‎help_docs/method_summary.md

Copy file name to clipboardExpand all lines: help_docs/method_summary.md
+2-2Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -679,7 +679,7 @@ self._print(TEXT) # Calls Python's print() / Allows for translations
679679

680680
# (Mainly for CDP Mode) - (For all CDP methods, see the CDP Mode Docs)
681681

682-
self.activate_cdp_mode(url=None) # Activate CDP Mode on the given URL
682+
self.activate_cdp_mode(url=None, **kwargs) # Activate CDP Mode on URL
683683
self.reconnect(timeout=0.1) # disconnect() + sleep(timeout) + connect()
684684
self.disconnect() # Stops the webdriver service to prevent detection
685685
self.connect() # Starts the webdriver service to allow actions again
@@ -759,7 +759,7 @@ driver.uc_open(url) # (Open in same tab with default reconnect_time)
759759
driver.uc_open_with_tab(url) # (New tab with default reconnect_time)
760760
driver.uc_open_with_reconnect(url, reconnect_time=None) # (New tab)
761761
driver.uc_open_with_disconnect(url, timeout=None) # New tab + sleep()
762-
driver.uc_activate_cdp_mode(url=None) # Activate CDP Mode on the given URL
762+
driver.uc_activate_cdp_mode(url=None, **kwargs) # Activate CDP Mode on URL
763763
driver.reconnect(timeout=0.1) # disconnect() + sleep(timeout) + connect()
764764
driver.disconnect() # Stops the webdriver service to prevent detection
765765
driver.connect() # Starts the webdriver service to allow actions again

‎seleniumbase/core/browser_launcher.py

Copy file name to clipboardExpand all lines: seleniumbase/core/browser_launcher.py
+6-4Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -515,7 +515,7 @@ def uc_open_with_reconnect(driver, url, reconnect_time=None):
515515
return None
516516

517517

518-
def uc_open_with_cdp_mode(driver, url=None):
518+
def uc_open_with_cdp_mode(driver, url=None, **kwargs):
519519
import asyncio
520520
from seleniumbase.undetected.cdp_driver import cdp_util
521521

@@ -607,7 +607,9 @@ def uc_open_with_cdp_mode(driver, url=None):
607607
loop.run_until_complete(page_tab.activate())
608608

609609
loop.run_until_complete(driver.cdp_base.update_targets())
610-
page = loop.run_until_complete(driver.cdp_base.get(url))
610+
page = loop.run_until_complete(
611+
driver.cdp_base.get(url, **kwargs)
612+
)
611613
with gui_lock:
612614
with suppress(Exception):
613615
shared_utils.make_writable(constants.MultiBrowser.PYAUTOGUILOCK)
@@ -792,8 +794,8 @@ def uc_open_with_cdp_mode(driver, url=None):
792794
driver._is_using_cdp = True
793795

794796

795-
def uc_activate_cdp_mode(driver, url=None):
796-
uc_open_with_cdp_mode(driver, url=url)
797+
def uc_activate_cdp_mode(driver, url=None, **kwargs):
798+
uc_open_with_cdp_mode(driver, url=url, **kwargs)
797799

798800

799801
def uc_open_with_disconnect(driver, url, timeout=None):

‎seleniumbase/core/sb_cdp.py

Copy file name to clipboardExpand all lines: seleniumbase/core/sb_cdp.py
+4-4Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -101,12 +101,12 @@ def __add_sync_methods(self, element):
101101
element.get_parent = lambda: self.__get_parent(element)
102102
return element
103103

104-
def get(self, url):
104+
def get(self, url, **kwargs):
105105
url = shared_utils.fix_url_as_needed(url)
106106
driver = self.driver
107107
if hasattr(driver, "cdp_base"):
108108
driver = driver.cdp_base
109-
self.loop.run_until_complete(self.page.get(url))
109+
self.loop.run_until_complete(self.page.get(url, **kwargs))
110110
url_protocol = url.split(":")[0]
111111
safe_url = True
112112
if url_protocol not in ["about", "data", "chrome"]:
@@ -120,8 +120,8 @@ def get(self, url):
120120
self.__slow_mode_pause_if_set()
121121
self.loop.run_until_complete(self.page.wait())
122122

123-
def open(self, url):
124-
self.get(url)
123+
def open(self, url, **kwargs):
124+
self.get(url, **kwargs)
125125

126126
def reload(self, ignore_cache=True, script_to_evaluate_on_load=None):
127127
self.loop.run_until_complete(

‎seleniumbase/fixtures/base_case.py

Copy file name to clipboardExpand all lines: seleniumbase/fixtures/base_case.py
+3-3Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4870,7 +4870,7 @@ def deactivate_design_mode(self, url=None):
48704870
script = """document.designMode = 'off';"""
48714871
self.execute_script(script)
48724872

4873-
def activate_cdp_mode(self, url=None):
4873+
def activate_cdp_mode(self, url=None, **kwargs):
48744874
if hasattr(self.driver, "_is_using_uc") and self.driver._is_using_uc:
48754875
if self.__is_cdp_swap_needed():
48764876
return # CDP Mode is already active
@@ -4879,10 +4879,10 @@ def activate_cdp_mode(self, url=None):
48794879
current_url = self.get_current_url()
48804880
if not current_url.startswith(("about", "data", "chrome")):
48814881
self.get_new_driver(undetectable=True)
4882-
self.driver.uc_open_with_cdp_mode(url)
4882+
self.driver.uc_open_with_cdp_mode(url, **kwargs)
48834883
else:
48844884
self.get_new_driver(undetectable=True)
4885-
self.driver.uc_open_with_cdp_mode(url)
4885+
self.driver.uc_open_with_cdp_mode(url, **kwargs)
48864886
self.cdp = self.driver.cdp
48874887

48884888
def activate_recorder(self):

‎seleniumbase/undetected/cdp_driver/browser.py

Copy file name to clipboardExpand all lines: seleniumbase/undetected/cdp_driver/browser.py
+21Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -256,6 +256,7 @@ async def get(
256256
url="about:blank",
257257
new_tab: bool = False,
258258
new_window: bool = False,
259+
**kwargs,
259260
) -> tab.Tab:
260261
"""Top level get. Utilizes the first tab to retrieve given url.
261262
Convenience function known from selenium.
@@ -309,6 +310,26 @@ async def get(
309310
and sb_config._cdp_geolocation
310311
):
311312
_cdp_geolocation = sb_config._cdp_geolocation
313+
if "timezone" in kwargs:
314+
_cdp_timezone = kwargs["timezone"]
315+
elif "tzone" in kwargs:
316+
_cdp_timezone = kwargs["tzone"]
317+
if "user_agent" in kwargs:
318+
_cdp_user_agent = kwargs["user_agent"]
319+
elif "agent" in kwargs:
320+
_cdp_user_agent = kwargs["agent"]
321+
if "locale" in kwargs:
322+
_cdp_locale = kwargs["locale"]
323+
elif "lang" in kwargs:
324+
_cdp_locale = kwargs["lang"]
325+
if "platform" in kwargs:
326+
_cdp_platform = kwargs["platform"]
327+
elif "plat" in kwargs:
328+
_cdp_platform = kwargs["plat"]
329+
if "geolocation" in kwargs:
330+
_cdp_geolocation = kwargs["geolocation"]
331+
elif "geoloc" in kwargs:
332+
_cdp_geolocation = kwargs["geoloc"]
312333
if _cdp_timezone:
313334
await connection.send(cdp.page.navigate("about:blank"))
314335
await connection.set_timezone(_cdp_timezone)

‎seleniumbase/undetected/cdp_driver/cdp_util.py

Copy file name to clipboardExpand all lines: seleniumbase/undetected/cdp_driver/cdp_util.py
+4Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -383,6 +383,10 @@ async def start(
383383
sb_config._cdp_user_agent = None
384384
if "platform" in kwargs:
385385
sb_config._cdp_platform = kwargs["platform"]
386+
elif "plat" in kwargs:
387+
sb_config._cdp_platform = kwargs["plat"]
388+
else:
389+
sb_config._cdp_platform = None
386390
return driver
387391

388392

‎seleniumbase/undetected/cdp_driver/tab.py

Copy file name to clipboardExpand all lines: seleniumbase/undetected/cdp_driver/tab.py
+15-5Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -338,6 +338,7 @@ async def get(
338338
url="about:blank",
339339
new_tab: bool = False,
340340
new_window: bool = False,
341+
**kwargs,
341342
):
342343
"""
343344
Top level get. Utilizes the first tab to retrieve the given url.
@@ -359,14 +360,23 @@ async def get(
359360
if new_tab:
360361
if hasattr(sb_config, "incognito") and sb_config.incognito:
361362
return await self.browser.get(
362-
url, new_tab=False, new_window=True
363+
url, new_tab=False, new_window=True, **kwargs
363364
)
364365
else:
365-
return await self.browser.get(url, new_tab, new_window)
366+
return await self.browser.get(
367+
url, new_tab, new_window, **kwargs
368+
)
366369
else:
367-
frame_id, loader_id, *_ = await self.send(cdp.page.navigate(url))
368-
await self
369-
return self
370+
if not kwargs:
371+
frame_id, loader_id, *_ = await self.send(
372+
cdp.page.navigate(url)
373+
)
374+
await self
375+
return self
376+
else:
377+
return await self.browser.get(
378+
url, new_tab, new_window, **kwargs
379+
)
370380

371381
async def query_selector_all(
372382
self,

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.