Every time I opened an new browser in my for loop for set new proxy but is there any way I can set new proxy in every request without opening the new browser. I want browser will be open once then it will be set new proxy for every loop.
here is my code:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium_stealth import stealth
from selenium.webdriver.common.action_chains import ActionChains
import time, csv
from proxy import *
ip_list = []
free_proxy_list_func(ip_list) # this function scraping proxy from website
options = Options()
options.add_argument("start-maximized")
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)
options.add_argument("--disable-blink-features=AutomationControlled")
driver = webdriver.Chrome(options=options,desired_capabilities = proxy_func(ip_list))
stealth(driver,
languages=["en-US", "en"],
vendor="Google Inc.",
platform="Win32",
webgl_vendor="Intel Inc.",
renderer="Intel Iris OpenGL Engine",
fix_hairline=True,
)
file1 = open('url.txt', 'r')
Lines = file1.readlines()
for i in Lines:
product_link = i
driver = webdriver.Chrome(options=options,desired_capabilities = proxy_func(ip_list)) #proxy_func(ip_list) this my proxy function
driver.get(i)
if write driver = webdriver.Chrome(options=options,desired_capabilities = proxy_func(ip_list)) outside of my for loop then it will not set new proxy on every url request.
here is my proxy function:
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from selenium.webdriver.common.proxy import Proxy, ProxyType
def proxy_func(ip_list):
print('total number of ip',len(ip_list))
item = random.choice(tuple(ip_list))
print("ip: ",item)
proxy_ip_port = item
proxy = Proxy()
proxy.proxy_type = ProxyType.MANUAL
proxy.http_proxy = proxy_ip_port
proxy.ssl_proxy = proxy_ip_port
capabilities = webdriver.DesiredCapabilities.CHROME
proxy.add_to_capabilities(capabilities)