Forked from tushortz/selenium-python-proxy-rotate.py
Created
August 19, 2020 04:35
-
-
Save hamzarana07/4b9e2569d5e68acf5139a1b72587bbb6 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from selenium import webdriver | |
from selenium.webdriver.chrome.options import DesiredCapabilities | |
from selenium.webdriver.common.proxy import Proxy, ProxyType | |
import time | |
co = webdriver.ChromeOptions() | |
co.add_argument("log-level=3") | |
co.add_argument("--headless") | |
def get_proxies(co=co): | |
driver = webdriver.Chrome(chrome_options=co) | |
driver.get("https://free-proxy-list.net/") | |
PROXIES = [] | |
proxies = driver.find_elements_by_css_selector("tr[role='row']") | |
for p in proxies: | |
result = p.text.split(" ") | |
if result[-1] == "yes": | |
PROXIES.append(result[0]+":"+result[1]) | |
driver.close() | |
return PROXIES | |
ALL_PROXIES = get_proxies() | |
def proxy_driver(PROXIES, co=co): | |
prox = Proxy() | |
if len(PROXIES) < 1: | |
print("--- Proxies used up (%s)" % len(PROXIES)) | |
PROXIES = get_proxies() | |
pxy = PROXIES[-1] | |
prox.proxy_type = ProxyType.MANUAL | |
prox.http_proxy = pxy | |
prox.socks_proxy = pxy | |
prox.ssl_proxy = pxy | |
capabilities = webdriver.DesiredCapabilities.CHROME | |
prox.add_to_capabilities(capabilities) | |
driver = webdriver.Chrome(chrome_options=co, desired_capabilities=capabilities) | |
return driver | |
# --- YOU ONLY NEED TO CARE FROM THIS LINE --- | |
# creating new driver to use proxy | |
pd = proxy_driver(ALL_PROXIES) | |
# code must be in a while loop with a try to keep trying with different proxies | |
running = True | |
while running: | |
try: | |
mycodehere() | |
# if statement to terminate loop if code working properly | |
# you need to modify condition_met | |
if condition_met: | |
running = False | |
# you | |
except: | |
new = ALL_PROXIES.pop() | |
# reassign driver if fail to switch proxy | |
pd = proxy_driver(ALL_PROXIES) | |
print("--- Switched proxy to: %s" % new) | |
time.sleep(1) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment