निर्भरताएँ स्थापित करना
सुनिश्चित करें कि आपके पास Redis स्थापित है और redis-py
पायथन से रेडिस के साथ काम करने के लिए लाइब्रेरी। pip का उपयोग करके आवश्यक निर्भरताएँ स्थापित करें:
pip install redis
Redis प्रबंधक बनाना
आइये एक बनाएं RedisManager
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
स्क्रिप्ट 1: बड़ी संख्या में प्रॉक्सी जोड़ना
यह स्क्रिप्ट किसी फ़ाइल से प्रॉक्सीज़ की सूची पढ़ती है और उन्हें Redis डेटाबेस में जोड़ती है।
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()
स्क्रिप्ट 2: एक यादृच्छिक प्रॉक्सी प्राप्त करना
यह स्क्रिप्ट Redis डेटाबेस से एक यादृच्छिक प्रॉक्सी सर्वर प्राप्त करती है।
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()
स्क्रिप्ट 3: प्रॉक्सी अस्तित्व की जाँच करना
यह स्क्रिप्ट जाँचती है कि Redis डेटाबेस में कोई विशिष्ट प्रॉक्सी सर्वर मौजूद है या नहीं।
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()
स्क्रिप्ट 4: प्रॉक्सी हटाना
यह स्क्रिप्ट Redis डेटाबेस से प्रॉक्सी हटाती है। सबसे पहले, एक प्रॉक्सी जोड़ें delete_proxy
विधि RedisManager
कक्षा:
def delete_proxy(self, pid):
self.db.delete(f"proxy:{pid}")
self.db.srem("proxies", pid)
अब, प्रॉक्सी हटाने की स्क्रिप्ट:
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()
निष्कर्ष
इस गाइड में, हमने पायथन और रेडिस का उपयोग करके प्रॉक्सी को प्रबंधित करने के लिए कई स्क्रिप्ट बनाई हैं। ये स्क्रिप्ट आपको रेडिस डेटाबेस से प्रॉक्सी जोड़ने, प्राप्त करने, जांचने और हटाने की अनुमति देती हैं, जो प्रॉक्सी प्रबंधन के लिए एक मजबूत समाधान प्रदान करती हैं। इन उदाहरणों पर निर्माण करके, आप अपनी विशिष्ट आवश्यकताओं के अनुरूप अपने प्रॉक्सी प्रबंधन सिस्टम को और अधिक अनुकूलित और विस्तारित कर सकते हैं।
टिप्पणियाँ (0)
यहां अभी तक कोई टिप्पणी नहीं है, आप पहले हो सकते हैं!