Utan proxy-IP kommer crawler-arbete att vara svårt, så många crawleringenjörer behöver köpa effektiv och stabil proxy-IP. Med en högkvalitativ proxy-IP, kan du luta dig tillbaka och slappna av? Det är inte så enkelt, och det är också nödvändigt att optimera systemet, rationellt fördela resurser, förbättra arbetseffektiviteten och utföra crawler-arbete mer effektivt, snabbare och mer stabilt.
Alternativ 1: Varje process väljer slumpmässigt en lista med IP-adresser från gränssnittets API (till exempel att extrahera 100 IP:n åt gången) för att cykla igenom dem, och anropar sedan API:et för att hämta dem om det misslyckas, och den allmänna logiken är följande:
1. Varje process (eller tråd) hämtar slumpmässigt en batch av IP-adresser från gränssnittet och försöker hämta data från IP-listan i en loop.
2. Om åtkomsten lyckas, fortsätt att ta nästa.
3. Om det misslyckas (såsom timeout, verifieringskod, etc.), ta en batch IP-adresser från gränssnittet och fortsätt försöka.
Nackdelar med lösningen: Varje IP har ett utgångsdatum, om 100 extraheras kan de flesta av dessa vara ogiltiga när den tionde används när den tionde används. Om du sätter upp en HTTP-förfrågan med en anslutningstidsavbrott på 3 sekunder och en lästidsavslutning på 5 sekunder, kan du slösa bort 3–8 sekunder, och kanske kan dessa 3–8 sekunder tas dussintals gånger.
Alternativ 2: Varje process tar en slumpmässig IP från gränssnittets API att använda, och anropar sedan API:et för att få en IP om det misslyckas, den allmänna logiken är följande:
1. Varje process (eller tråd) hämtar slumpmässigt en IP från gränssnittet och använder denna IP för att komma åt resurser.
2. Om åtkomsten lyckas, fortsätt att ta nästa.
3. Om det misslyckas (som timeout, verifieringskod, etc.), välj slumpmässigt en IP från gränssnittet och fortsätt försöka.
Nackdelar: Att anropa API:er för att få IP-adresser är mycket vanligt, vilket kommer att sätta stor press på proxyservern, påverka stabiliteten i API-gränssnittet och kan vara begränsat från att extrahera. Detta system är inte heller lämpligt och kan inte drivas på ett hållbart och stabilt sätt.
Alternativ 3: Först extraherar du ett stort antal IP-adresser och importerar dem till den lokala databasen, och tar sedan IP-adressen från databasen, den allmänna logiken är följande:
1. Skapa en tabell i databasen, skriv ett importskript, begär API:et per minut (konsultera proxy-IP-tjänsteleverantörens förslag) och importera IP-listan till databasen.
2. Registrera importtid, IP, port, utgångstid, IP-tillgänglighetsstatus och andra fält i databasen;
3. Skriv ett grab-skript, crab-skriptet läser den tillgängliga IP:n från databasen, och varje process hämtar en IP från databasen för användning.
4. Utför genomsökning, bedöm resultaten, bearbeta cookies, etc., så länge det finns en verifieringskod eller fel, ge upp denna IP och byt till en ny IP.
Denna lösning undviker effektivt förbrukning av proxyserverresurser, fördelar användningen av proxy-IP, är mer effektiv och stabil och säkerställer hållbarhet och stabilitet i arbetet med crawlers. |