Пишу программу, которая в трёх потоках открывает сайт 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