Installieren von Abhängigkeiten
Stellen Sie sicher, dass Sie Redis installiert haben und redis-py
Bibliothek, um von Python aus mit Redis zu arbeiten. Installieren Sie die erforderlichen Abhängigkeiten mit pip:
pip install redis
Erstellen des Redis-Managers
Erstellen wir ein RedisManager
Klasse zur Handhabung der Interaktionen mit Redis.
import redis
import json
import random
import logging
class RedisManager:
def __init__(self, host='localhost', port=6379, db=0):
self.db = redis.StrictRedis(host=host, port=port, db=db, decode_responses=True)
self.logger = logging.getLogger('proxy_manager')
self.logger.setLevel(logging.INFO)
if not self.logger.hasHandlers():
ch = logging.StreamHandler()
ch.setLevel(logging.INFO)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
ch.setFormatter(formatter)
self.logger.addHandler(ch)
self.proxies = []
self.load_proxy_list()
def update_proxies(self, filepath):
proxies = self.read_proxies_from_file(filepath)
for proxy in proxies:
if proxy.get('anonymitylevel') == 'elite' and proxy.get('protocol') in ['http', 'https']:
if not self.proxy_exists(proxy):
self.logger.info(f"proxy: {proxy['ipaddress']} ({proxy['protocol']}, {proxy['anonymitylevel']})")
self.proxy_save(proxy)
self.load_proxy_list()
def get_proxy(self):
return random.choice(self.proxies)
def load_proxy_list(self):
self.proxies = []
ret = self.db.smembers("proxies")
for pid in ret:
proxy = self.load_proxy(pid)
if proxy:
self.proxies.append(proxy)
def load_proxy(self, pid):
data = self.db.hmget(f"proxy:{pid}", "ipaddress", "port", "protocol", "anonymitylevel", "source", "country")
if not all(data):
return None
return {k: v for k, v in zip(["ipaddress", "port", "protocol", "anonymitylevel", "source", "country"], data)}
def proxy_save(self, proxy):
next_id = self.db.incr("proxies_next_id")
self.db.hmset(f"proxy:{next_id}", proxy)
self.db.sadd("proxies", next_id)
self.db.hset("proxies_ids", proxy['ipaddress'], next_id)
def proxy_exists(self, proxy):
return self.db.hexists("proxies_ids", proxy['ipaddress'])
def read_proxies_from_file(self, filepath):
with open(filepath, 'r') as file:
values = json.load(file)
proxies = []
for data in values:
proxy = {
"ipaddress": data.get("ipaddress", "").lower(),
"port": str(data.get("port", "")),
"protocol": data.get("protocols", [""])[0].lower(),
"anonymitylevel": data.get("anonymitylevel", "").lower(),
"source": data.get("source", "").lower(),
"country": data.get("country", "").lower()
}
proxies.append(proxy)
return proxies
Skript 1: Proxys in großen Mengen hinzufügen
Dieses Skript liest eine Liste von Proxys aus einer Datei und fügt sie der Redis-Datenbank hinzu.
import logging
logging.basicConfig(level=logging.INFO)
def main():
manager = RedisManager()
filepath = 'path/to/proxy_list.json'
manager.update_proxies(filepath)
logging.info("Proxies updated successfully")
if __name__ == "__main__":
main()
Skript 2: Abrufen eines zufälligen Proxys
Dieses Skript ruft einen zufälligen Proxyserver aus der Redis-Datenbank ab.
import logging
logging.basicConfig(level=logging.INFO)
def main():
manager = RedisManager()
proxy = manager.get_proxy()
logging.info(f"Random proxy: {proxy}")
if __name__ == "__main__":
main()
Skript 3: Überprüfen der Proxy-Existenz
Dieses Skript prüft, ob in der Redis-Datenbank ein bestimmter Proxyserver vorhanden ist.
import logging
logging.basicConfig(level=logging.INFO)
def main():
manager = RedisManager()
test_proxy = {
"ipaddress": "192.168.1.1",
"port": "8080",
"protocol": "http",
"anonymitylevel": "elite",
"source": "test_source",
"country": "us"
}
exists = manager.proxy_exists(test_proxy)
if exists:
logging.info("Proxy exists in the database")
else:
logging.info("Proxy does not exist in the database")
if __name__ == "__main__":
main()
Skript 4: Löschen eines Proxys
Dieses Skript löscht einen Proxy aus der Redis-Datenbank. Fügen Sie zunächst einen delete_proxy
Methode zur RedisManager
Klasse:
def delete_proxy(self, pid):
self.db.delete(f"proxy:{pid}")
self.db.srem("proxies", pid)
Nun das Skript zum Löschen eines Proxys:
import logging
logging.basicConfig(level=logging.INFO)
def main():
manager = RedisManager()
proxy_id = 1 # Replace with the ID of the proxy you want to delete
manager.delete_proxy(proxy_id)
logging.info("Proxy deleted successfully")
if __name__ == "__main__":
main()
Abschluss
In diesem Handbuch haben wir mehrere Skripte zur Verwaltung von Proxys mit Python und Redis erstellt. Mit diesen Skripten können Sie Proxys zu einer Redis-Datenbank hinzufügen, abrufen, prüfen und löschen und so eine robuste Lösung für die Proxy-Verwaltung bereitstellen. Indem Sie auf diesen Beispielen aufbauen, können Sie Ihr Proxy-Verwaltungssystem weiter anpassen und erweitern, um es Ihren spezifischen Anforderungen anzupassen.
Kommentare (0)
Hier gibt es noch keine Kommentare, Sie können der Erste sein!