Add support for configuring and handling proxy settings in the CDP
browser automation stack. CDP does not support command line arguments
for proxy server credentials, so credential authorization needs to be
done by hooking into Fetch events.
**Proxy Configuration and Handling**
* Added new proxy-related fields to `BrowserProfile` (`proxy_server`,
`proxy_bypass_list`, `proxy_pac_url`, `proxy_username`,
`proxy_password`) and validated exclusivity between `proxy_server` and
`proxy_pac_url`.
* Updated Chromium launch argument generation in
`BrowserProfile.get_args` to include proxy flags based on configuration.
* Implemented proxy authentication handling in `BrowserSession` via a
new `_setup_proxy_auth` method, enabling CDP Fetch domain and responding
to proxy auth challenges with configured credentials.
**Testing**
* Smoke tests are in `test_proxy_smoke.py` to verify Chromium proxy
flags, PAC URL exclusivity, and proxy authentication handler logic.
<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
Add full proxy support, including authenticated proxies, for CDP-based
browsing. Configure proxy server/PAC/bypass and credentials; sessions
now handle proxy auth challenges via CDP Fetch.
- **New Features**
- BrowserProfile: added proxy_server, proxy_pac_url (mutually
exclusive), proxy_bypass_list, proxy_username, proxy_password; generates
Chromium proxy flags.
- BrowserSession: handles proxy auth via Fetch.authRequired with
provided credentials; continues paused requests to avoid stalls; enables
Fetch on root, focused, and newly attached targets.
- CLI: added --proxy-url, --no-proxy, --proxy-username,
--proxy-password.
- Env vars: BROWSER_USE_PROXY_URL, BROWSER_USE_NO_PROXY,
BROWSER_USE_PROXY_USERNAME, BROWSER_USE_PROXY_PASSWORD.
- Tests: smoke tests cover Chromium args, PAC/server exclusivity, and
proxy auth handler behavior.
<!-- End of auto-generated description by cubic. -->