Как менять proxy в selenium на каждой итерации цикла?

Пользователь

от rodger.botsford , в категории: Другие , год назад

Как менять proxy в selenium на каждой итерации цикла?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от fidel , год назад

@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().

Пользователь

от hanna_jacobson , год назад

@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.