Без прокси IP работата с краулърите ще бъде трудна, затова много crawler инженери трябва да купуват ефективен и стабилен прокси IP. С висококачествен прокси IP, можеш ли да се отпуснеш и да се отпуснеш? Нещата не са толкова прости, а също така е необходимо да се оптимизира схемата, рационално да се разпределят ресурсите, да се подобри ефективността на работата и да се извършва работа с crawler по-ефективно, по-бързо и по-стабилно.
Опция 1: Всеки процес случайно избира списък с IP адреси от интерфейсния API (например извлича 100 IP адреса наведнъж), за да ги превключва, и след това извиква API-то, за да ги получи, ако не успее, като общата логика е следната:
1. Всеки процес (или нишка) случайно извлича партида IP адреси от интерфейса и се опитва да извлече данни от IP списъка в цикъл.
2. Ако достъпът е успешен, продължете да взимате следващия.
3. Ако се провали (като таймаут, код за верификация и др.), вземете партида от IP адреси от интерфейса и продължете опитите.
Недостатъци на решението: Всеки IP има срок на годност, ако се извлекат 100, когато се използва десетият, повечето от последните може да са невалидни. Ако настроите HTTP заявка с тайм-аут на връзката от 3 секунди и тайм-аут за четене от 5 секунди, може да загубите 3-8 секунди време, а тези 3-8 секунди може да бъдат взети десетки пъти.
Опция 2: Всеки процес взема случаен IP от интерфейсния API за използване и след това извиква API-то, за да получи IP, ако се провали, общата логика е следната:
1. Всеки процес (или нишка) случайно извлича IP адрес от интерфейса и използва този IP за достъп до ресурси.
2. Ако достъпът е успешен, продължете да взимате следващия.
3. Ако не успее (като таймаут, код за верификация и др.), изберете на случаен принцип IP адрес от интерфейса и продължете да опитвате.
Недостатъци: Извикването на API за получаване на IP адреси е много често, което ще окаже голям натиск върху прокси сървъра, ще повлияе на стабилността на API интерфейса и може да бъде ограничено при извличане. Тази схема също не е подходяща и не може да се управлява устойчиво и стабилно.
Вариант 3: Първо, извличайте голям брой IP адреси и ги импортирайте в локалната база данни, след което вземете IP адреса от базата данни, общата логика е следната:
1. Създайте таблица в базата данни, напишете скрипт за импорт, заявете API на минута (консултирайте предложенията на доставчика на IP услуги) и импортирайте IP списъка в базата данни.
2. Запишете времето на импорт, IP адреса, порта, срока на изтичане, статуса на наличност на IP адреса и други полета в базата данни;
3. Напишете grab скрипт, crab скриптът чете наличния IP от базата данни и всеки процес получава IP от базата данни за използване.
4. Извършвайте обхождане, оценявайте резултатите, обработвайте бисквитки и т.н., докато има код за верификация или повреда, отказвайте се от този IP адрес и преминете към нов.
Това решение ефективно избягва консумацията на ресурси на прокси сървъра, ефективно разпределя използването на прокси IP, е по-ефективно и стабилно и гарантира издръжливостта и стабилността на работата с краулъри. |