Как использовать прокси локально?

Вопрос такой - как я могу локальному поднять несколько прокси? Дело в том, что запущен скрипт puppeteer и скорость очень маленькая за счёт установленной мной задержкам - так как при отсутствии задержкам вылезает капча. Хочу запустить несколько потоков на разных прокси. Какие есть варианты реализации?


Ответы (1 шт):

Автор решения: nörbörnën

Вариант для запуска экземпляра browser, работающего через proxy:

puppeteer.launch({ args: ['--proxy-server="socks5://myproxy:8080'] });

И можно сделать interceptor в каждом экземпляре page, ведь это позволяет не создавать новый экземпляр browser в случае использования нескольких proxy.

Есть несколько интересных библиотек, позволяющих это сделать. Мне понравилась puppeteer-page-proxy

Простейшее применение - проксирование всех запросов со страницы:

const useProxy = require('puppeteer-page-proxy');

await useProxy(page, 'http://127.0.0.1:80');

Пример более селективного подхода:

const useProxy = require('puppeteer-page-proxy');

await page.setRequestInterception(true);
page.on('request', async request => {
    if (request.resourceType() === 'image') {
        request.abort();
    } else {
        await useProxy(request, 'socks4://127.0.0.1:1080');
    }
});

В качестве альтернативны можно предложить библиотеку ppspider, она максимально заточена на использование , но, увы, документация у неё скудная и китайскоязычная, но разобраться по исходникам не сложно.

→ Ссылка