gitextract_ulcsxv0t/ ├── .github/ │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.yml │ │ ├── config.yml │ │ ├── documentation.yml │ │ ├── feature_request.yml │ │ └── refactoring.yml │ ├── PULL_REQUEST_TEMPLATE/ │ │ ├── bug_fix.md │ │ ├── refactoring.md │ │ └── release.md │ ├── pull_request_template.md │ └── workflows/ │ ├── deploy-docs.yml │ ├── mypy.yml │ ├── publish.yml │ ├── release.yml │ ├── ruff-ci.yml │ └── tests.yml ├── .gitignore ├── .python-version ├── CHANGELOG.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── README_zh.md ├── SPONSORS.md ├── codecov.yml ├── cz.yaml ├── docs/ │ ├── en/ │ │ ├── api/ │ │ │ ├── browser/ │ │ │ │ ├── chrome.md │ │ │ │ ├── edge.md │ │ │ │ ├── managers.md │ │ │ │ ├── options.md │ │ │ │ ├── requests.md │ │ │ │ └── tab.md │ │ │ ├── commands/ │ │ │ │ ├── browser.md │ │ │ │ ├── dom.md │ │ │ │ ├── fetch.md │ │ │ │ ├── index.md │ │ │ │ ├── input.md │ │ │ │ ├── network.md │ │ │ │ ├── page.md │ │ │ │ ├── runtime.md │ │ │ │ ├── storage.md │ │ │ │ └── target.md │ │ │ ├── connection/ │ │ │ │ ├── connection.md │ │ │ │ └── managers.md │ │ │ ├── core/ │ │ │ │ ├── constants.md │ │ │ │ ├── exceptions.md │ │ │ │ └── utils.md │ │ │ ├── elements/ │ │ │ │ ├── mixins.md │ │ │ │ ├── shadow_root.md │ │ │ │ └── web_element.md │ │ │ ├── index.md │ │ │ └── protocol/ │ │ │ ├── base.md │ │ │ ├── browser.md │ │ │ ├── dom.md │ │ │ ├── fetch.md │ │ │ ├── input.md │ │ │ ├── network.md │ │ │ ├── page.md │ │ │ ├── runtime.md │ │ │ ├── storage.md │ │ │ └── target.md │ │ ├── deep-dive/ │ │ │ ├── architecture/ │ │ │ │ ├── browser-domain.md │ │ │ │ ├── browser-requests-architecture.md │ │ │ │ ├── event-architecture.md │ │ │ │ ├── find-elements-mixin.md │ │ │ │ ├── index.md │ │ │ │ ├── shadow-dom.md │ │ │ │ ├── tab-domain.md │ │ │ │ └── webelement-domain.md │ │ │ ├── fingerprinting/ │ │ │ │ ├── behavioral-fingerprinting.md │ │ │ │ ├── browser-fingerprinting.md │ │ │ │ ├── evasion-techniques.md │ │ │ │ ├── index.md │ │ │ │ └── network-fingerprinting.md │ │ │ ├── fundamentals/ │ │ │ │ ├── cdp.md │ │ │ │ ├── connection-layer.md │ │ │ │ ├── iframes-and-contexts.md │ │ │ │ ├── index.md │ │ │ │ └── typing-system.md │ │ │ ├── guides/ │ │ │ │ ├── index.md │ │ │ │ └── selectors-guide.md │ │ │ ├── index.md │ │ │ └── network/ │ │ │ ├── build-proxy.md │ │ │ ├── http-proxies.md │ │ │ ├── index.md │ │ │ ├── network-fundamentals.md │ │ │ ├── proxy-detection.md │ │ │ ├── proxy-legal.md │ │ │ └── socks-proxies.md │ │ ├── features/ │ │ │ ├── advanced/ │ │ │ │ ├── behavioral-captcha-bypass.md │ │ │ │ ├── decorators.md │ │ │ │ ├── event-system.md │ │ │ │ └── remote-connections.md │ │ │ ├── automation/ │ │ │ │ ├── file-operations.md │ │ │ │ ├── human-interactions.md │ │ │ │ ├── iframes.md │ │ │ │ ├── keyboard-control.md │ │ │ │ ├── mouse-control.md │ │ │ │ └── screenshots-and-pdfs.md │ │ │ ├── browser-management/ │ │ │ │ ├── contexts.md │ │ │ │ ├── cookies-sessions.md │ │ │ │ └── tabs.md │ │ │ ├── configuration/ │ │ │ │ ├── browser-options.md │ │ │ │ ├── browser-preferences.md │ │ │ │ └── proxy.md │ │ │ ├── core-concepts.md │ │ │ ├── element-finding.md │ │ │ ├── index.md │ │ │ └── network/ │ │ │ ├── http-requests.md │ │ │ ├── interception.md │ │ │ ├── monitoring.md │ │ │ └── network-recording.md │ │ └── index.md │ ├── pt/ │ │ ├── api/ │ │ │ ├── browser/ │ │ │ │ ├── chrome.md │ │ │ │ ├── edge.md │ │ │ │ ├── managers.md │ │ │ │ ├── options.md │ │ │ │ ├── requests.md │ │ │ │ └── tab.md │ │ │ ├── commands/ │ │ │ │ ├── browser.md │ │ │ │ ├── dom.md │ │ │ │ ├── fetch.md │ │ │ │ ├── index.md │ │ │ │ ├── input.md │ │ │ │ ├── network.md │ │ │ │ ├── page.md │ │ │ │ ├── runtime.md │ │ │ │ ├── storage.md │ │ │ │ └── target.md │ │ │ ├── connection/ │ │ │ │ ├── connection.md │ │ │ │ └── managers.md │ │ │ ├── core/ │ │ │ │ ├── constants.md │ │ │ │ ├── exceptions.md │ │ │ │ └── utils.md │ │ │ ├── elements/ │ │ │ │ ├── mixins.md │ │ │ │ ├── shadow_root.md │ │ │ │ └── web_element.md │ │ │ ├── index.md │ │ │ └── protocol/ │ │ │ ├── base.md │ │ │ ├── browser.md │ │ │ ├── dom.md │ │ │ ├── fetch.md │ │ │ ├── input.md │ │ │ ├── network.md │ │ │ ├── page.md │ │ │ ├── runtime.md │ │ │ ├── storage.md │ │ │ └── target.md │ │ ├── deep-dive/ │ │ │ ├── architecture/ │ │ │ │ ├── browser-domain.md │ │ │ │ ├── browser-requests-architecture.md │ │ │ │ ├── event-architecture.md │ │ │ │ ├── find-elements-mixin.md │ │ │ │ ├── index.md │ │ │ │ ├── shadow-dom.md │ │ │ │ ├── tab-domain.md │ │ │ │ └── webelement-domain.md │ │ │ ├── fingerprinting/ │ │ │ │ ├── behavioral-fingerprinting.md │ │ │ │ ├── browser-fingerprinting.md │ │ │ │ ├── evasion-techniques.md │ │ │ │ ├── index.md │ │ │ │ └── network-fingerprinting.md │ │ │ ├── fundamentals/ │ │ │ │ ├── cdp.md │ │ │ │ ├── connection-layer.md │ │ │ │ ├── iframes-and-contexts.md │ │ │ │ ├── index.md │ │ │ │ └── typing-system.md │ │ │ ├── guides/ │ │ │ │ ├── index.md │ │ │ │ └── selectors-guide.md │ │ │ ├── index.md │ │ │ └── network/ │ │ │ ├── build-proxy.md │ │ │ ├── http-proxies.md │ │ │ ├── index.md │ │ │ ├── network-fundamentals.md │ │ │ ├── proxy-detection.md │ │ │ ├── proxy-legal.md │ │ │ └── socks-proxies.md │ │ ├── features/ │ │ │ ├── advanced/ │ │ │ │ ├── behavioral-captcha-bypass.md │ │ │ │ ├── decorators.md │ │ │ │ ├── event-system.md │ │ │ │ └── remote-connections.md │ │ │ ├── automation/ │ │ │ │ ├── file-operations.md │ │ │ │ ├── human-interactions.md │ │ │ │ ├── iframes.md │ │ │ │ ├── keyboard-control.md │ │ │ │ ├── mouse-control.md │ │ │ │ └── screenshots-and-pdfs.md │ │ │ ├── browser-management/ │ │ │ │ ├── contexts.md │ │ │ │ ├── cookies-sessions.md │ │ │ │ └── tabs.md │ │ │ ├── configuration/ │ │ │ │ ├── browser-options.md │ │ │ │ ├── browser-preferences.md │ │ │ │ └── proxy.md │ │ │ ├── core-concepts.md │ │ │ ├── element-finding.md │ │ │ ├── index.md │ │ │ └── network/ │ │ │ ├── http-requests.md │ │ │ ├── interception.md │ │ │ ├── monitoring.md │ │ │ └── network-recording.md │ │ └── index.md │ ├── resources/ │ │ ├── scripts/ │ │ │ ├── extra.js │ │ │ └── termynal.js │ │ └── stylesheets/ │ │ ├── extra.css │ │ └── termynal.css │ └── zh/ │ ├── api/ │ │ ├── browser/ │ │ │ ├── chrome.md │ │ │ ├── edge.md │ │ │ ├── managers.md │ │ │ ├── options.md │ │ │ ├── requests.md │ │ │ └── tab.md │ │ ├── commands/ │ │ │ ├── browser.md │ │ │ ├── dom.md │ │ │ ├── fetch.md │ │ │ ├── index.md │ │ │ ├── input.md │ │ │ ├── network.md │ │ │ ├── page.md │ │ │ ├── runtime.md │ │ │ ├── storage.md │ │ │ └── target.md │ │ ├── connection/ │ │ │ ├── connection.md │ │ │ └── managers.md │ │ ├── core/ │ │ │ ├── constants.md │ │ │ ├── exceptions.md │ │ │ └── utils.md │ │ ├── elements/ │ │ │ ├── mixins.md │ │ │ ├── shadow_root.md │ │ │ └── web_element.md │ │ ├── index.md │ │ └── protocol/ │ │ ├── base.md │ │ ├── browser.md │ │ ├── dom.md │ │ ├── fetch.md │ │ ├── input.md │ │ ├── network.md │ │ ├── page.md │ │ ├── runtime.md │ │ ├── storage.md │ │ └── target.md │ ├── deep-dive/ │ │ ├── architecture/ │ │ │ ├── browser-domain.md │ │ │ ├── browser-requests-architecture.md │ │ │ ├── event-architecture.md │ │ │ ├── find-elements-mixin.md │ │ │ ├── index.md │ │ │ ├── shadow-dom.md │ │ │ ├── tab-domain.md │ │ │ └── webelement-domain.md │ │ ├── fingerprinting/ │ │ │ ├── behavioral-fingerprinting.md │ │ │ ├── browser-fingerprinting.md │ │ │ ├── evasion-techniques.md │ │ │ ├── index.md │ │ │ └── network-fingerprinting.md │ │ ├── fundamentals/ │ │ │ ├── cdp.md │ │ │ ├── connection-layer.md │ │ │ ├── iframes-and-contexts.md │ │ │ ├── index.md │ │ │ └── typing-system.md │ │ ├── guides/ │ │ │ ├── index.md │ │ │ └── selectors-guide.md │ │ ├── index.md │ │ └── network/ │ │ ├── build-proxy.md │ │ ├── http-proxies.md │ │ ├── index.md │ │ ├── network-fundamentals.md │ │ ├── proxy-detection.md │ │ ├── proxy-legal.md │ │ └── socks-proxies.md │ ├── features/ │ │ ├── advanced/ │ │ │ ├── behavioral-captcha-bypass.md │ │ │ ├── decorators.md │ │ │ ├── event-system.md │ │ │ └── remote-connections.md │ │ ├── automation/ │ │ │ ├── file-operations.md │ │ │ ├── human-interactions.md │ │ │ ├── iframes.md │ │ │ ├── keyboard-control.md │ │ │ ├── mouse-control.md │ │ │ └── screenshots-and-pdfs.md │ │ ├── browser-management/ │ │ │ ├── contexts.md │ │ │ ├── cookies-sessions.md │ │ │ └── tabs.md │ │ ├── configuration/ │ │ │ ├── browser-options.md │ │ │ ├── browser-preferences.md │ │ │ └── proxy.md │ │ ├── core-concepts.md │ │ ├── element-finding.md │ │ ├── index.md │ │ └── network/ │ │ ├── http-requests.md │ │ ├── interception.md │ │ ├── monitoring.md │ │ └── network-recording.md │ └── index.md ├── examples/ │ └── cloudflare_bypass.py ├── mkdocs.yml ├── public/ │ ├── index.html │ ├── robots.txt │ ├── script.js │ ├── scripts/ │ │ ├── extra.js │ │ └── termynal.js │ ├── sitemap.xml │ └── stylesheets/ │ ├── extra.css │ └── termynal.css ├── pydoll/ │ ├── __init__.py │ ├── browser/ │ │ ├── __init__.py │ │ ├── chromium/ │ │ │ ├── __init__.py │ │ │ ├── base.py │ │ │ ├── chrome.py │ │ │ └── edge.py │ │ ├── interfaces.py │ │ ├── managers/ │ │ │ ├── __init__.py │ │ │ ├── browser_options_manager.py │ │ │ ├── browser_process_manager.py │ │ │ ├── proxy_manager.py │ │ │ └── temp_dir_manager.py │ │ ├── options.py │ │ ├── requests/ │ │ │ ├── __init__.py │ │ │ ├── har_recorder.py │ │ │ ├── request.py │ │ │ └── response.py │ │ └── tab.py │ ├── commands/ │ │ ├── __init__.py │ │ ├── browser_commands.py │ │ ├── dom_commands.py │ │ ├── emulation_commands.py │ │ ├── fetch_commands.py │ │ ├── input_commands.py │ │ ├── network_commands.py │ │ ├── page_commands.py │ │ ├── runtime_commands.py │ │ ├── storage_commands.py │ │ └── target_commands.py │ ├── connection/ │ │ ├── __init__.py │ │ ├── connection_handler.py │ │ └── managers/ │ │ ├── __init__.py │ │ ├── commands_manager.py │ │ └── events_manager.py │ ├── constants.py │ ├── decorators.py │ ├── elements/ │ │ ├── __init__.py │ │ ├── mixins/ │ │ │ ├── __init__.py │ │ │ └── find_elements_mixin.py │ │ ├── shadow_root.py │ │ ├── utils/ │ │ │ ├── __init__.py │ │ │ └── selector_parser.py │ │ └── web_element.py │ ├── exceptions.py │ ├── interactions/ │ │ ├── __init__.py │ │ ├── iframe.py │ │ ├── keyboard.py │ │ ├── mouse.py │ │ ├── scroll.py │ │ └── utils.py │ ├── protocol/ │ │ ├── __init__.py │ │ ├── base.py │ │ ├── browser/ │ │ │ ├── __init__.py │ │ │ ├── events.py │ │ │ ├── methods.py │ │ │ └── types.py │ │ ├── debugger/ │ │ │ └── types.py │ │ ├── dom/ │ │ │ ├── __init__.py │ │ │ ├── events.py │ │ │ ├── methods.py │ │ │ └── types.py │ │ ├── emulation/ │ │ │ ├── __init__.py │ │ │ ├── methods.py │ │ │ └── types.py │ │ ├── fetch/ │ │ │ ├── __init__.py │ │ │ ├── events.py │ │ │ ├── methods.py │ │ │ └── types.py │ │ ├── input/ │ │ │ ├── __init__.py │ │ │ ├── events.py │ │ │ ├── methods.py │ │ │ └── types.py │ │ ├── io/ │ │ │ └── types.py │ │ ├── network/ │ │ │ ├── __init__.py │ │ │ ├── events.py │ │ │ ├── har_types.py │ │ │ ├── methods.py │ │ │ └── types.py │ │ ├── page/ │ │ │ ├── __init__.py │ │ │ ├── events.py │ │ │ ├── methods.py │ │ │ └── types.py │ │ ├── runtime/ │ │ │ ├── __init__.py │ │ │ ├── events.py │ │ │ ├── methods.py │ │ │ └── types.py │ │ ├── security/ │ │ │ └── types.py │ │ ├── storage/ │ │ │ ├── __init__.py │ │ │ ├── events.py │ │ │ ├── methods.py │ │ │ └── types.py │ │ └── target/ │ │ ├── __init__.py │ │ ├── events.py │ │ ├── methods.py │ │ └── types.py │ ├── py.typed │ └── utils/ │ ├── __init__.py │ ├── bundle.py │ ├── general.py │ ├── socks5_proxy_forwarder.py │ └── user_agent_parser.py ├── pyproject.toml └── tests/ ├── conftest.py ├── pages/ │ ├── oopif/ │ │ ├── oopif_content.html │ │ ├── oopif_main.html │ │ ├── oopif_nested.html │ │ └── oopif_shadow_iframe.html │ ├── shadow_dom_test.html │ ├── test_children.html │ ├── test_click_nested.html │ ├── test_click_nested_iframe_content.html │ ├── test_core_simple.html │ ├── test_frame_content.html │ ├── test_frameset.html │ ├── test_har_recording.html │ ├── test_iframe_content.html │ ├── test_iframe_nested.html │ ├── test_iframe_nested_level.html │ ├── test_iframe_parent_level.html │ ├── test_iframe_simple.html │ └── test_multiple_iframes.html ├── test_browser/ │ ├── test_browser_base.py │ ├── test_browser_chrome.py │ ├── test_browser_edge.py │ ├── test_browser_options.py │ ├── test_browser_tab.py │ ├── test_har_recorder.py │ ├── test_requests_request.py │ ├── test_requests_response.py │ └── test_tab_request_integration.py ├── test_click_nested_integration.py ├── test_commands/ │ ├── test_browser_commands.py │ ├── test_dom_commands.py │ ├── test_emulation_commands.py │ ├── test_fetch_commands.py │ ├── test_input_commands.py │ ├── test_network_commands.py │ ├── test_page_commands.py │ ├── test_runtime_commands.py │ ├── test_storage_commands.py │ └── test_target_commands.py ├── test_connection_handler.py ├── test_core_integration.py ├── test_decorators.py ├── test_events.py ├── test_exceptions.py ├── test_find_elements_mixin.py ├── test_har_recording_integration.py ├── test_iframe_integration.py ├── test_interactions/ │ ├── __init__.py │ ├── test_iframe.py │ ├── test_keyboard.py │ ├── test_mouse.py │ └── test_scroll.py ├── test_managers/ │ ├── test_browser_managers.py │ └── test_connection_managers.py ├── test_nested_oopif_integration.py ├── test_shadow_root.py ├── test_shadow_root_integration.py ├── test_socks5_proxy_forwarder.py ├── test_user_agent_parser.py ├── test_utils.py └── test_web_element.py