suchen
HeimBackend-EntwicklungPython-TutorialWie erstellt man mit Python einen anonymen Proxy-Pool? So erstellen Sie einen anonymen Proxy-Pool

Der Inhalt dieses Artikels besteht darin, vorzustellen, wie man mit Python einen anonymen Proxy-Pool erstellt. So erstellen Sie einen anonymen Proxy-Pool. Es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird Ihnen hilfreich sein.

Ich höre oft, dass sich viele Leute darüber beschweren, dass ihre IPs von Websites blockiert werden, weil zu viele Crawler vorhanden sind und sie häufig verschiedene Proxy-IPs verwenden müssen, aber weil die meisten öffentlichen Proxys im Internet nicht verwendet werden können, und Sie müssen Geld und Energie aufwenden, um sich für einen VIP-Agenten zu bewerben, werden aber nach mehreren Wendungen blockiert. Schreiben Sie hier einen Artikel darüber, wie Sie mit Python einen Proxy-Pool erstellen, um Zeit- und Energiekosten zu reduzieren und die Funktion des automatischen Erhaltens aktiver Proxy-IPs zu realisieren.

Funktionsprinzip

1. Website-Proxy-Erfassung

1. Erklimmen Sie die IP-Liste der kostenlosen Proxy-Website, um zu testen, ob dies der Fall ist verfügbar ist und ob es hoch ist. Anonym

2. Wenn alle vorhanden sind, fügen Sie sie in die Datenbank ein, andernfalls verwerfen Sie sie.

3.

Wiederholen Sie Schritt 2

2. Stellen Sie sicher, dass der ausgefallene Agent so schnell wie möglich aus dem Agentenpool ausgewählt werden kann

1.

Holen Sie sich die IP aus der Crawler-Datenbank

2. Testen Sie die Verfügbarkeit und Anonymität der IP

Wenn verfügbar und anonym, behalten Sie es, andernfalls verwerfen Sie es.

4. Wiederholen Sie Schritt 1

Anleitung ①: Sie können einen Crawler-Daemon erstellen, der diesen Aspekt hat. Freunde, die ihn brauchen Ich kann es selbst googeln, ich werde es hier nicht vorstellen.

Erläuterung ②: Sie können eine externe Proxy-Informationsschnittstelle einrichten. Es spielt keine Rolle, ob Sie NodeJS oder Flask/Django oder PHP zum Schreiben verwenden .

Implementierung:

Empfohlene Bibliotheken: request, BeautifulSoup, re, sqlite3. Unter anderem wird die Anforderungsbibliothek verwendet, um die Seite der Agenten-Website abzurufen, die Bibliotheken BeautifulSoup und re werden verwendet, um Agenteninformationen abzurufen, und sqlite3 wird verwendet, um auf diese Informationen zuzugreifen.

Bei Bedarf (z. B. wenn die Proxy-Website über eine Anti-Crawler-Strategie verfügt) kann PhantomJS zum Ersetzen von Anforderungen verwendet werden, oder die entsprechende Bibliothek kann zur Datenbereinigung (z. B. Base64-Dekodierung) verwendet werden.

Das Folgende ist eine kurze Demonstration jedes Teils des Codes:

Die erste besteht darin, mehrere Websites auszuwählen, die Proxys crawlen können und nicht leicht durch IP blockiert werden. Hier Proxy-Liste. org wird als Beispiel verwendet:

BASE_URL = "https://proxy-list.org/english/index.php?p="


#IP地址及端口的正则

Re_Pattern_IP = re.compile("(.*):")

Re_Pattern_PORT = re.compile(":(.*)")


#网站有11页,所以循环11次获取所有代理IP及端口

for startingURL_Param in range(1,11):

   HTML_ProxyPage = requests.get(BASE_URL+str(startingURL_Param)).content

   soup = bs(HTML_ProxyPage,"html.parser")

   for Raw_ProxyInfo in soup.find_all("ul",{"class":None}):

       #此网站有用Base64简单对代理进行了加密,所以这里对其解码

       ip_port = base64.b64decode(Raw_ProxyInfo.find("li",{"class":"proxy"}).text.replace("Proxy('","").replace("')",""))

       #接下来利用正则从网页数据中提取我们需要的信息

       IP = re.findall(Re_Pattern_IP, ip_port)[0]

       PORT = re.findall(Re_Pattern_PORT, ip_port)[0]

       TYPE = Raw_ProxyInfo.find("li",{"class":"https"}).text

Das Folgende ist ein Codestück für eine einfache Proxy-Pool-Framework-Klasse, die das Hinzufügen, Löschen, die Verbindungserkennung und die Anonymitätserkennung der Proxy-Datenbank bereitstellt:

class ProxyPool:        

   #初始化爬虫池数据库

   def __init__(self,ProxyPoolDB):

       self.ProxyPoolDB = ProxyPoolDB

       self.conn = sqlite3.connect(self.ProxyPoolDB, isolation_level=None)

       self.cursor = self.conn.cursor()

       self.TB_ProxyPool = "TB_ProxyPool"

       self.cursor.execute("CREATE TABLE IF NOT EXISTS "+self.TB_ProxyPool+"(ip TEXT UNIQUE, port INTEGER, protocol TEXT)")

 

   #添加代理IP进代理池的接口

   def addProxy(self, IP, PORT, PROTOCOL):  

       self.cursor.execute("INSERT OR IGNORE INTO " + self.TB_ProxyPool+"(ip, port, protocol) VALUES (?,?,?)", [IP,PORT,PROTOCOL])

 

   #检查代理的匿名性及可连接性

   def testConnection(self, IP, PORT, PROTOCOL):

       proxies = { PROTOCOL: IP+":"+PORT }

       try:

           OrigionalIP = requests.get("http://icanhazip.com",timeout=REQ_TIMEOUT).content

           MaskedIP = requests.get("http://icanhazip.com", timeout=REQ_TIMEOUT,proxies=proxies).content

           if OrigionalIP != MaskedIP:

               return True

           else:

               return False

       except:    

           return False

 

   #删除代理IP对应的数据库记录

   def delRecord(self, IP):

       self.cursor.execute("DELETE FROM "+self.TB_ProxyPool+" WHERE ip=?",(IP,))

Der folgende Code dient zum Löschen des Proxy-Pools:

#循环代理池,逐行测试IP地址端口协议是否可用

def cleanNonWorking(self):

   for info in self.cursor.execute("SELECT * FROM "+self.TB_ProxyPool).fetchall():

       IP = info[0]

       PORT = str(info[1])

       PROTOCOL = info[2].lower()

 

       isAnonymous = self.testConnection(IP,PORT,PROTOCOL)

       if isAnonymous == False:

           #这条代理的可用性失效了,从数据库里删除

           self.delRecord(IP)

 

#通过检测icanhazip.com回显来检测可用性及匿名性

def testConnection(self, IP, PORT, PROTOCOL):

       proxies = { PROTOCOL: IP+":"+PORT }

       try:

           OrigionalIP = requests.get("http://icanhazip.com",timeout=REQ_TIMEOUT).content

           MaskedIP = requests.get("http://icanhazip.com", timeout=REQ_TIMEOUT,proxies=proxies).content

           if OrigionalIP != MaskedIP:

               return True

           else:

               return False

       except:    

           return False

Reflection

Dies Projekt war etwas, mit dem ich Handschrift in Python geübt habe. Rückblickend ist die Logik nicht streng genug, verschiedene Funktionen sind zu gekoppelt und viele Absätze müssen neu geschrieben werden, da der Code im Campus-Netzwerk ausgeführt wird Die Stabilität der Netzwerkverbindung muss berücksichtigt werden, was zu Inkonsistenzen zwischen einigen Codes führt.
Die Methode zur Erkennung der Proxy-Anonymität über icanhazip.com mag effektiv sein, ignoriert jedoch den HTTP-Header X-Forwarded-For, ist also sehr riskant und muss verbessert werden.

Die Überprüfung der Gültigkeit der Agenten im Agentenpool erfordert Multithreading und die aktuelle Lösung ist zu ineffizient.

Vollständiger Code

Der Kerncode des Proxy-Pools wird in diesem Artikel platziert, um den Lesern Ideen und Referenzen für ihre eigene Implementierung, Ubuntu 16.04 und Kali, zu bieten Der Test kann mit Python 2.7 ausgeführt werden.

Das obige ist der detaillierte Inhalt vonWie erstellt man mit Python einen anonymen Proxy-Pool? So erstellen Sie einen anonymen Proxy-Pool. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
Dieser Artikel ist reproduziert unter:博客园. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen
Der Hauptzweck von Python: Flexibilität und BenutzerfreundlichkeitDer Hauptzweck von Python: Flexibilität und BenutzerfreundlichkeitApr 17, 2025 am 12:14 AM

Die Flexibilität von Python spiegelt sich in Multi-Paradigm-Unterstützung und dynamischen Typsystemen wider, während eine einfache Syntax und eine reichhaltige Standardbibliothek stammt. 1. Flexibilität: Unterstützt objektorientierte, funktionale und prozedurale Programmierung und dynamische Typsysteme verbessern die Entwicklungseffizienz. 2. Benutzerfreundlichkeit: Die Grammatik liegt nahe an der natürlichen Sprache, die Standardbibliothek deckt eine breite Palette von Funktionen ab und vereinfacht den Entwicklungsprozess.

Python: Die Kraft der vielseitigen ProgrammierungPython: Die Kraft der vielseitigen ProgrammierungApr 17, 2025 am 12:09 AM

Python ist für seine Einfachheit und Kraft sehr beliebt, geeignet für alle Anforderungen von Anfängern bis hin zu fortgeschrittenen Entwicklern. Seine Vielseitigkeit spiegelt sich in: 1) leicht zu erlernen und benutzten, einfachen Syntax; 2) Reiche Bibliotheken und Frameworks wie Numpy, Pandas usw.; 3) plattformübergreifende Unterstützung, die auf einer Vielzahl von Betriebssystemen betrieben werden kann; 4) Geeignet für Skript- und Automatisierungsaufgaben zur Verbesserung der Arbeitseffizienz.

Python in 2 Stunden am Tag lernen: Ein praktischer LeitfadenPython in 2 Stunden am Tag lernen: Ein praktischer LeitfadenApr 17, 2025 am 12:05 AM

Ja, lernen Sie Python in zwei Stunden am Tag. 1. Entwickeln Sie einen angemessenen Studienplan, 2. Wählen Sie die richtigen Lernressourcen aus, 3. Konsolidieren Sie das durch die Praxis erlernte Wissen. Diese Schritte können Ihnen helfen, Python in kurzer Zeit zu meistern.

Python gegen C: Vor- und Nachteile für EntwicklerPython gegen C: Vor- und Nachteile für EntwicklerApr 17, 2025 am 12:04 AM

Python eignet sich für eine schnelle Entwicklung und Datenverarbeitung, während C für hohe Leistung und zugrunde liegende Kontrolle geeignet ist. 1) Python ist einfach zu bedienen, mit prägnanter Syntax, und eignet sich für Datenwissenschaft und Webentwicklung. 2) C hat eine hohe Leistung und eine genaue Kontrolle und wird häufig bei der Programmierung von Spielen und Systemen verwendet.

Python: zeitliches Engagement und LerntempoPython: zeitliches Engagement und LerntempoApr 17, 2025 am 12:03 AM

Die Zeit, die zum Erlernen von Python erforderlich ist, variiert von Person zu Person, hauptsächlich von früheren Programmiererfahrungen, Lernmotivation, Lernressourcen und -methoden und Lernrhythmus. Setzen Sie realistische Lernziele und lernen Sie durch praktische Projekte am besten.

Python: Automatisierung, Skript- und AufgabenverwaltungPython: Automatisierung, Skript- und AufgabenverwaltungApr 16, 2025 am 12:14 AM

Python zeichnet sich in Automatisierung, Skript und Aufgabenverwaltung aus. 1) Automatisierung: Die Sicherungssicherung wird durch Standardbibliotheken wie OS und Shutil realisiert. 2) Skriptschreiben: Verwenden Sie die PSUTIL -Bibliothek, um die Systemressourcen zu überwachen. 3) Aufgabenverwaltung: Verwenden Sie die Zeitplanbibliothek, um Aufgaben zu planen. Die Benutzerfreundlichkeit von Python und die Unterstützung der reichhaltigen Bibliothek machen es zum bevorzugten Werkzeug in diesen Bereichen.

Python und Zeit: Machen Sie das Beste aus Ihrer StudienzeitPython und Zeit: Machen Sie das Beste aus Ihrer StudienzeitApr 14, 2025 am 12:02 AM

Um die Effizienz des Lernens von Python in einer begrenzten Zeit zu maximieren, können Sie Pythons DateTime-, Zeit- und Zeitplanmodule verwenden. 1. Das DateTime -Modul wird verwendet, um die Lernzeit aufzuzeichnen und zu planen. 2. Das Zeitmodul hilft, die Studie zu setzen und Zeit zu ruhen. 3. Das Zeitplanmodul arrangiert automatisch wöchentliche Lernaufgaben.

Python: Spiele, GUIs und mehrPython: Spiele, GUIs und mehrApr 13, 2025 am 12:14 AM

Python zeichnet sich in Gaming und GUI -Entwicklung aus. 1) Spielentwicklung verwendet Pygame, die Zeichnungen, Audio- und andere Funktionen bereitstellt, die für die Erstellung von 2D -Spielen geeignet sind. 2) Die GUI -Entwicklung kann Tkinter oder Pyqt auswählen. Tkinter ist einfach und einfach zu bedienen. PYQT hat reichhaltige Funktionen und ist für die berufliche Entwicklung geeignet.

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

EditPlus chinesische Crack-Version

EditPlus chinesische Crack-Version

Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

WebStorm-Mac-Version

WebStorm-Mac-Version

Nützliche JavaScript-Entwicklungstools

Sicherer Prüfungsbrowser

Sicherer Prüfungsbrowser

Safe Exam Browser ist eine sichere Browserumgebung für die sichere Teilnahme an Online-Prüfungen. Diese Software verwandelt jeden Computer in einen sicheren Arbeitsplatz. Es kontrolliert den Zugriff auf alle Dienstprogramme und verhindert, dass Schüler nicht autorisierte Ressourcen nutzen.

SublimeText3 Englische Version

SublimeText3 Englische Version

Empfohlen: Win-Version, unterstützt Code-Eingabeaufforderungen!

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung