Skip to main content

A simple proxy manager for Python with WebShare API support

Project description

ProxyMan 🌐

A simple Proxy manager for Python

Created with ❤️ by @MeshMonitors

Features

✨ Proxy Management:

  • Load proxies from a file
  • Support for IP-based and username-password authentication

🔄 Proxy Refresh:

  • Automatically refresh the proxy list from a remote source
  • Filter proxies based on location (US, UK, FR, or all)

🔀 Random Proxy:

  • Retrieve a random proxy from the loaded list

Installation

ProxyMan can be installed using pip:

pip install ProxyMan

Usage

Loading proxies from a file

from ProxyMan import ProxyMan, AuthType
import os

# Load proxies from a file
current_dir = os.path.dirname(os.path.realpath(__file__))
current_dir = os.path.dirname(current_dir)

pm = ProxyMan(file_path=current_dir + "/proxies.txt", auth=AuthType.IP)

Configuring ProxyMan

from ProxyMan import ProxyMan, Filter, AuthType

# Create a ProxyMan instance
webshare_api_key: str = "" # Optional (required to use the refresh feature)
scrape_filter: Filter = Filter.ALL # Optional (default: Filter.ALL) Filter proxies based on location
fail_count: int = 3 # Optional (default: 3) Remove a proxy from the list after it fails this many times
proxies_to_scrape: int = 3000 # Optional (default: 3000)
auth_type: AuthType = AuthType.IP # Optional (default: AuthType.IP) The type of authentication to use (IP or USER_PASS)

pm = ProxyMan(api_key=webshare_api_key, auth=auth_type, scrape_filter=scrape_filter, fail_count=fail_count, proxies_to_scrape=proxies_to_scrape)

# Get a random proxy
proxy: dict = pm.random()

print(proxy) # { "http": "http://0.0.0.0:8080"", "https": "http://0.0.0.0:8080" }

Failing a proxy

# If proxy fails somewhere in your code, call the fail method
# It will be removed from the list after it fails 3 times (or whatever you set fail_count to)

pm.increment_bad_proxies(proxy['http'])

Refreshing the proxy list

# Refresh the proxy list from the remote source
# This will overwrite the current list and update proxies.txt with the new list
await pm.update_proxies()

Getting a random proxy

# Get a random proxy from the list
proxy: dict = pm.random()

# Make a request 
requests.get("https://example.com", proxies=proxy)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ProxyMan-0.0.8.tar.gz (4.8 kB view details)

Uploaded Source

File details

Details for the file ProxyMan-0.0.8.tar.gz.

File metadata

  • Download URL: ProxyMan-0.0.8.tar.gz
  • Upload date:
  • Size: 4.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.1

File hashes

Hashes for ProxyMan-0.0.8.tar.gz
Algorithm Hash digest
SHA256 a41876c36e1599e0c2305ae6cdc978f7e9be5387a67097068476e5aaaeef4a0f
MD5 9d40bf2f9603c7bfc6dd7920f8f370cd
BLAKE2b-256 2b0bc9ff3714b84c726b024accfda4c6ae07f857b51fccac693035ce8a729766

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page