@rodger.botsford
Для изменения прокси-сервера в каждой итерации цикла в Selenium, можно использовать дополнительную библиотеку, например proxysc****
.
Пример использования proxysc****
для получения списка бесплатных прокси-серверов:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
import requests from bs4 import BeautifulSoup def get_proxy(): url = 'https://api.proxysc****.com/?request=displayproxies&proxytype=http&timeout=7000&country=all' response = requests.get(url) soup = BeautifulSoup(response.text, 'lxml') proxies = [] for proxy in soup.find_all('proxy'): proxy_ip = proxy.find('ip').text proxy_port = proxy.find('port').text proxies.append(f'http://{proxy_ip}:{proxy_port}') return proxies |
Далее, для использования прокси-сервера в цикле, нужно установить прокси через webdriver.DesiredCapabilities
и webdriver.FirefoxOptions
.
Пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
from selenium import webdriver from selenium.webdriver.common.proxy import Proxy, ProxyType options = webdriver.FirefoxOptions() proxy_list = get_proxy() for proxy in proxy_list: # Смена прокси myProxy = "http://" + proxy proxy = Proxy({ 'proxyType': ProxyType.MANUAL, 'httpProxy': myProxy, 'ftpProxy': myProxy, 'sslProxy': myProxy, 'noProxy':''}) capabilities = webdriver.DesiredCapabilities.FIREFOX.copy() proxy.add_to_capabilities(capabilities) # Запуск браузера с указанными настройками driver = webdriver.Firefox( options=options, desired_capabilities=capabilities ) # Действия в браузере # ... driver.quit() |
В данном примере на каждой итерации цикла proxy_list
происходит смена прокси-сервера в браузере Firefox. В строке # Действия в браузере
можно добавить нужный набор действий для работы с браузером. После выполнения всех действий на каждой итерации нужно закрывать браузер через driver.quit()
.
@rodger.botsford
Для изменения прокси-сервера в Selenium на каждой итерации цикла, можно использовать следующий код на языке Python:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
from selenium import webdriver proxies = ['proxy1.com', 'proxy2.com', 'proxy3.com'] usernames = ['user1', 'user2', 'user3'] passwords = ['pass1', 'pass2', 'pass3'] for i in range(len(proxies)): # Настройки прокси-сервера proxy = proxies[i] username = usernames[i] password = passwords[i] # Инициализация драйвера с настройками прокси-сервера chrome_options = webdriver.ChromeOptions() chrome_options.add_argument('--proxy-server=%s' % proxy) chrome_options.add_extension('proxy-auto-auth.crx') chrome_options.add_argument('disable-infobars') driver = webdriver.Chrome(chrome_options=chrome_options) # Авторизация на прокси-сервере driver.get('http://proxyautoauth.com') driver.find_element_by_id('login').send_keys(username) driver.find_element_by_id('password').send_keys(password) driver.find_element_by_id('submit').click() # Здесь можно добавить код для работы с драйвером # ... # Закрытие драйвера driver.quit() |
В данном коде мы создаем списки с прокси-серверами, именами пользователей и паролями. Затем мы используем цикл, чтобы пройти по каждому элементу каждого списка. На каждой итерации цикла мы присваиваем значения соответствующих элементов переменным proxy
, username
и password
.
Затем мы инициализируем драйвер Chrome с настройками прокси-сервера, используя метод add_argument()
объекта chrome_options
. Мы также добавляем расширение proxy-auto-auth.crx
, которое позволяет автоматически проходить аутентификацию на прокси-сервере с помощью переданных пользовательского имени и пароля.
Далее мы можем добавить любой код, который будет выполняться при каждой итерации цикла. Например, мы можем зайти на страницу Google и выполнить поиск.
После того, как мы закончили работу с драйвером, мы закрываем его с помощью метода quit()
. Затем цикл повторяется с новыми значениями переменных proxy
, username
и password
.