A library to add the ability to swap(rotate) proxies easily
This library will provide a Proxy class to manage all of your porxies plus Rotator class to obtain a Proxy based on weights of proxies. An exelent fit for requests and selenium libraries
An example usage for "selenium" library
from proxy_rotator import Proxy, Rotator
proxies: list[Proxy] = []
# Load proxies from a file
proxies_json = load_proxies("proxies.json")
for proxy_item in proxies_json:
proxies.append(Proxy(
proxy_item['path'],
proxy_item['type'],
proxy_item['protocol'],
proxy_item['status'],
proxy_item['weight'])
)
# Make a rotation for a proxy
rotator = Rotator(proxies)
# Get the random proxy by weight
proxy = rotator.get()
# Create a webdriver and put new proxy in use
firefox_opt = Options()
firefox_opt.add_argument('--headless')
firefox_opt.add_argument("--no-sandbox")
firefox_opt.add_argument("--disable-dev-shm-usage")
firefox_opt.add_argument(f"--proxy-server={proxy}")
driver = webdriver.Firefox(options=firefox_opt)
An example usage for "requests" library
from simple_proxy_rotator import proxy_to_requests_proxy
from simple_proxy_rotator.proxy_rotator import Proxy, Rotator
proxies: list[Proxy] = []
# Load proxies from a file
proxies_json = load_proxies("proxies.json")
for proxy_item in proxies_json:
proxies.append(Proxy(
proxy_item['path'],
proxy_item['type'],
proxy_item['protocol'],
proxy_item['status'],
proxy_item['weight'])
)
# Make a rotation for a proxy
rotator = Rotator(proxies)
# Get the random proxy by weight
rotator_proxy = rotator_.get()
# The returned proxy must be convert into string
# to be passed to requests.get method
proxy = proxy_to_requests_proxy(rotator_proxy.ip, rotator_proxy.protocol)
board_page = requests.get(url=url_, headers=conf.headers, proxies=proxy)
An example of "proxies.json" file content
{
"path": "100.100.100.100:1080",
"protocol": "socks4",
"type": "mobile",
"weight": 1250.8024368286133,
"status": "alive"
},
{
"path": "100.100.100.100:1080",
"protocol": "http",
"type": "mobile",
"weight": 1258.7508733272552,
"status": "dead"
},
{
"path": "100.100.100.100:1080",
"protocol": "https",
"type": "datacenter",
"weight": 1350.0,
"status": "alive"
},
{
"path": "100.100.100.100:1080",
"protocol": "https",
"type": "datacenter",
"weight": 850.4147324562073,
"status": "dead"
},
{
"path": "100.100.100.100:1080",
"protocol": "socks4",
"type": "datacenter",
"weight": 1253.0103130340576,
"status": "alive"
},
{
"path": "100.100.100.100:1080",
"protocol": "socks5",
"type": "datacenter",
"weight": 1250.8180613517761,
"status": "alive"
}
]
Release files for simple-proxy-rotator 0.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| simple_proxy_rotator-0.0.1.tar.gz | 5.9 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| simple_proxy_rotator-0.0.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 5.9 MB
Release files / simple_proxy_rotator-0.0.1.tar.gz
| Download URL | simple_proxy_rotator-0.0.1.tar.gz |
|---|---|
| Size | 5.9 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f34676e0fef511562de051a54c636bfaf8bd029bb922b8cb0630b00f6453e02d
|
|
BLAKE2b-256 checksum How to use checksums |
890f63120e8853a513059d939ee331f3d95ce78d143f49787448492733067c1b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.12.4
|
Release files / simple_proxy_rotator-0.0.1-py3-none-any.whl
| Download URL | simple_proxy_rotator-0.0.1-py3-none-any.whl |
|---|---|
| Size | 16.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
294be3dde3f0870e0641a5688811630112e19875d2536e0373000f8e511590f5
|
|
BLAKE2b-256 checksum How to use checksums |
db6071aa6b656780d3328a2a0cb5fa0799465a71beafecbb7c9a5d26c3905569
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.12.4
|