@anya_hacker

Как распределить прокси в многопоточности Selenium?

Пишу программу, которая в трёх потоках открывает сайт vk с помощью selenium.
Для многопоточности использую библиотеку multiprocessing.
При каждом потоке должен открываться вк с новым прокси, однако используется один прокси для всех.
В чем ошибка?
P.S.: Если брать прокси с random.choice и удалять его индекс из списка proxies, то прокси всё таки берутся разные.
Но почему в следующем коде прокси берутся одинаковые на все 3 потока?
# -*- coding: utf-8 -*-

from seleniumwire import webdriver
from fake_useragent import UserAgent

from time import sleep

from random import choice

from multiprocessing import Pool

proxies = [('R5edkrXE', 'rU1Ff396', '194.59.12.83:56451'),
           ('R5edkrXE', 'rU1Ff396', '45.147.245.164:61501'),
           ('R5edkrXE', 'rU1Ff396', '103.152.17.161:60476')]


# 3 прокси на 3 потока

def get_data(url):
    proxy_info = proxies[0]
    print(f"Используемый прокси: {proxy_info}")
    del proxies[0]  # удаляем использованный прокси
    print(f"Список оставшихся прокси: {proxies}")
    print()  # почему во все трёх потоках один и тот же прокси?

    login = proxy_info[0]  # авторизация прокси
    password = proxy_info[1]
    proxy_adress_now = proxy_info[2]

    proxy_options = {
        "proxy": {
            "https": f"https://{login}:{password}@{proxy_adress_now}"
        },
        "User-Agent": UserAgent().chrome
    }

    driver = webdriver.Chrome(
        executable_path='chromedriver.exe',
        seleniumwire_options=proxy_options
    )

    driver.maximize_window()
    driver.delete_all_cookies()

    driver.delete_all_cookies()
    driver.get(url)
    sleep(5)


if __name__ == '__main__':
    process_count = 3  # 3 браузера параллельно
    url = 'https://vk.com'
    urls_list = [url] * process_count
    print(urls_list)  # длина списка ссылок должен совпадать с кол-вом потоков
    p = Pool(processes=process_count)
    p.map(get_data, urls_list)  # функция и список из 3 одинаковых сайтов vk
  • Вопрос задан
  • 801 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы