# Selenium Authenticated Proxy Helper
## Overview
The Selenium Authenticated Proxy Helper is a Python utility designed to seamlessly handle proxy authentication when using Selenium WebDriver. This package generates a Chrome extension that takes care of proxy authentication, allowing you to focus more on web scraping or automation tasks, without worrying about the intricacies of proxy setup.
## Features
- **Proxy Authentication**: Supports username and password authentication for proxy servers.
- **Unique Identification**: Generates a unique Chrome extension for each different set of proxy credentials.
- **Ease of Use**: Simple API to generate and use the extension with your existing Selenium Chrome WebDriver setup.
- **Temporary Storage**: Optionally, specify a folder for temporary storage of generated Chrome extensions.
## Requirements
- Python 3.6 or higher
- Selenium WebDriver
## Installation
You can install this package via pip:
```bash
pip install selenium-authenticated-proxy
```
## Usage
### Basic Usage
Here is how you can set up the authenticated proxy for Selenium's Chrome WebDriver:
```python
from selenium import webdriver
from selenium_authenticated_proxy import SeleniumAuthenticatedProxy
# Initialize Chrome options
chrome_options = webdriver.ChromeOptions()
# Initialize SeleniumAuthenticatedProxy
proxy_helper = SeleniumAuthenticatedProxy(proxy_url="http://username:password@proxy-server.com")
# Enrich Chrome options with proxy authentication
proxy_helper.enrich_chrome_options(chrome_options)
# Start WebDriver with enriched options
driver = webdriver.Chrome(chrome_options=chrome_options)
# Your automation or scraping code here
```
### Custom Temporary Folder
You can specify a custom folder for temporary storage of generated Chrome extensions.
```python
proxy_helper = SeleniumAuthenticatedProxy(proxy_url="http://username:password@proxy-server.com", tmp_folder="/path/to/tmp/folder")
```
To enable the authentication to work properly a chrome extension is being generated (Thanks to [itsmnthn](https://stackoverflow.com/a/55582859/3691763) with an [improvement for manifest v3](https://bugs.chromium.org/p/chromium/issues/detail?id=1135492)).
If the URl doesn't change the extension will not be regenerated. The URL is hashed so that only when the URL has changed (or the tmp folder has changed) a new zip file will be generated.
### Specific issues with headless chrome
If you want to use headless chrome, this functionality only works if you use the following method:
```python
ops.add_argument('--headless=new')
```
The `--headless` method or also the `--headless=chrome` method does not work anymore!
## License
This project is licensed under the MIT License - see the LICENSE.md file for details.
Raw data
{
"_id": null,
"home_page": "https://github.com/bubblegumsoldier/selenium-authenticated-proxy",
"name": "selenium-authenticated-proxy",
"maintainer": null,
"docs_url": null,
"requires_python": null,
"maintainer_email": null,
"keywords": "proxy, selenium, auth, selenium",
"author": "Henry M\u00fcssemann",
"author_email": "hm@freezingdata.de",
"download_url": null,
"platform": null,
"description": "# Selenium Authenticated Proxy Helper\n\n## Overview\n\nThe Selenium Authenticated Proxy Helper is a Python utility designed to seamlessly handle proxy authentication when using Selenium WebDriver. This package generates a Chrome extension that takes care of proxy authentication, allowing you to focus more on web scraping or automation tasks, without worrying about the intricacies of proxy setup.\n\n## Features\n\n- **Proxy Authentication**: Supports username and password authentication for proxy servers.\n- **Unique Identification**: Generates a unique Chrome extension for each different set of proxy credentials.\n- **Ease of Use**: Simple API to generate and use the extension with your existing Selenium Chrome WebDriver setup.\n- **Temporary Storage**: Optionally, specify a folder for temporary storage of generated Chrome extensions.\n\n## Requirements\n\n- Python 3.6 or higher\n- Selenium WebDriver\n\n## Installation\n\nYou can install this package via pip:\n\n```bash\npip install selenium-authenticated-proxy\n```\n\n## Usage\n\n### Basic Usage\n\nHere is how you can set up the authenticated proxy for Selenium's Chrome WebDriver:\n\n```python\nfrom selenium import webdriver\nfrom selenium_authenticated_proxy import SeleniumAuthenticatedProxy\n\n# Initialize Chrome options\nchrome_options = webdriver.ChromeOptions()\n\n# Initialize SeleniumAuthenticatedProxy\nproxy_helper = SeleniumAuthenticatedProxy(proxy_url=\"http://username:password@proxy-server.com\")\n\n# Enrich Chrome options with proxy authentication\nproxy_helper.enrich_chrome_options(chrome_options)\n\n# Start WebDriver with enriched options\ndriver = webdriver.Chrome(chrome_options=chrome_options)\n\n# Your automation or scraping code here\n```\n\n### Custom Temporary Folder\n\nYou can specify a custom folder for temporary storage of generated Chrome extensions.\n\n```python\nproxy_helper = SeleniumAuthenticatedProxy(proxy_url=\"http://username:password@proxy-server.com\", tmp_folder=\"/path/to/tmp/folder\")\n```\n\nTo enable the authentication to work properly a chrome extension is being generated (Thanks to [itsmnthn](https://stackoverflow.com/a/55582859/3691763) with an [improvement for manifest v3](https://bugs.chromium.org/p/chromium/issues/detail?id=1135492)).\nIf the URl doesn't change the extension will not be regenerated. The URL is hashed so that only when the URL has changed (or the tmp folder has changed) a new zip file will be generated.\n\n### Specific issues with headless chrome\n\nIf you want to use headless chrome, this functionality only works if you use the following method:\n\n```python\nops.add_argument('--headless=new')\n```\n\nThe `--headless` method or also the `--headless=chrome` method does not work anymore!\n\n## License\n\nThis project is licensed under the MIT License - see the LICENSE.md file for details.\n\n\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "A python package to add authenticated proxy support to selenium.",
"version": "1.1.1",
"project_urls": {
"Homepage": "https://github.com/bubblegumsoldier/selenium-authenticated-proxy"
},
"split_keywords": [
"proxy",
" selenium",
" auth",
" selenium"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "822e7c59b06c1a3aa4cc7b45bc84a620b50574bdc50eafec3dd762e72b0977b7",
"md5": "fcae0709fdb9493d590eca8379021ef7",
"sha256": "be71c587ed48456e458f3b2f02cc62d3fcd5c63352ae99e13a7efcc83406a7b9"
},
"downloads": -1,
"filename": "selenium_authenticated_proxy-1.1.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "fcae0709fdb9493d590eca8379021ef7",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 7057,
"upload_time": "2024-05-08T08:22:25",
"upload_time_iso_8601": "2024-05-08T08:22:25.134420Z",
"url": "https://files.pythonhosted.org/packages/82/2e/7c59b06c1a3aa4cc7b45bc84a620b50574bdc50eafec3dd762e72b0977b7/selenium_authenticated_proxy-1.1.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-05-08 08:22:25",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "bubblegumsoldier",
"github_project": "selenium-authenticated-proxy",
"github_not_found": true,
"lcname": "selenium-authenticated-proxy"
}