-
-
Save tushortz/cba8b25f9d80f584f807b65890f37be5 to your computer and use it in GitHub Desktop.
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) |
This is the working script of the above script . I removed prox.socks_proxy = pxy
and it started working as intended . Thanks !
from selenium import webdriver
from selenium.webdriver.chrome.options import DesiredCapabilities
from selenium.webdriver.common.proxy import Proxy, ProxyType
import time
# Add path to your WebDriver according to the browser you are using
PATH = "E:\SeleniumProject\chromedriver.exe"
co = webdriver.ChromeOptions()
co.add_argument("log-level=3")
co.add_argument("--headless")
def get_proxies(co=co):
driver = webdriver.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 PROXIES:
pxy = PROXIES[-1]
else:
print("--- Proxies used up (%s)" % len(PROXIES))
PROXIES = get_proxies()
prox.proxy_type = ProxyType.MANUAL
prox.http_proxy = pxy
prox.ssl_proxy = pxy
capabilities = webdriver.DesiredCapabilities.CHROME
prox.add_to_capabilities(capabilities)
driver = webdriver.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
something()
# 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)
i've updated the code. Sorry guys didn't even know that this script was being used
tushortz can you please help me add sms bomber code into your code which changes its proxies . I tried but its not working !
Thanks!
from selenium import webdriver
from selenium.webdriver.chrome.options import DesiredCapabilities
from selenium.webdriver.common.proxy import Proxy, ProxyType
import time
PATH = "E:\SeleniumProject\chromedriver.exe"
co = webdriver.ChromeOptions()
co.add_argument("log-level=3")
co.add_argument("--headless")
def get_proxies(co=co):
driver = webdriver.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()
# print(PROXIES)
return PROXIES
ALL_PROXIES = get_proxies()
def proxy_driver(PROXIES, co=co):
prox = Proxy()
if PROXIES:
pxy = PROXIES[-1]
else:
print("--- Proxies used up (%s)" % len(PROXIES))
PROXIES = get_proxies()
prox.proxy_type = ProxyType.MANUAL
prox.http_proxy = pxy
prox.ssl_proxy = pxy
capabilities = webdriver.DesiredCapabilities.CHROME
prox.add_to_capabilities(capabilities)
driver = webdriver.Chrome(options=co, desired_capabilities=capabilities)
return driver
def smsBomber():
browser1 = proxy_driver(ALL_PROXIES)
mobile_number = "6239027206"
frequency = 2
for i in range(frequency):
# try:
# browser1.get('https://www.flipkart.com/account/login?ret =/')
# number = browser1.find_element_by_class_name('_2zrpKA')
# number.send_keys(mobile_number)
# forgot = browser1.find_element_by_link_text('Forgot?')
# forgot.click()
# time.sleep(3)
# except:
# pass
try:
browser1.get('https://www.oyorooms.com/login?country=&retUrl=/')
number = browser2.find_element_by_class_name('textTelInput__input')
number.send_keys(mobile_number)
verify = browser2.find_element_by_class_name('loginCard__button')
verify.click()
time.sleep(3)
except:
pass
running = True
while running:
try:
smsBomber(browser1)
browser1.quit()
except:
new = ALL_PROXIES.pop()
pd = proxy_driver(ALL_PROXIES)
should i replace all instances of my own "driver" with "pd"?
co = webdriver.ChromeOptions()
co.add_argument("log-level=3")
co.add_argument("--headless")
def get_proxies(co=co):
driver = webdriver.Chrome(chrome_options=co,executable_path=ChromeDriverManager().install())
driver.get("https://free-proxy-list.net/")
PROXIES = []
trs = driver.find_elements_by_tag_name("tr")
for tr in trs:
tds = tr.find_elements_by_tag_name("td")
if tds[-2].text == "yes":
PROXIES.append(tds[0].text+":"+tds[1].text)
print(PROXIES)
driver.close()
return PROXIES
ALL_PROXIES = get_proxies()
print(ALL_PROXIES)
def proxy_driver(PROXIES, co=co):
prox = Proxy()
if len(PROXIES) < 1:
print("--- Proxies used up (%s)" % len(PROXIES))
PROXIES = get_proxies()
print(PROXIES)
pxy = PROXIES[-1]
prox.proxy_type = ProxyType.MANUAL
prox.http_proxy = pxy
prox.ssl_proxy = pxy
capabilities = webdriver.DesiredCapabilities.CHROME
prox.add_to_capabilities(capabilities)
driver = webdriver.Chrome(chrome_options=co, desired_capabilities=capabilities,executable_path=ChromeDriverManager().install())
return driver
This works for me guys, thanks tushortz for the script!
glad it helped
Why don't you try like the following way instead:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
import time
import requests
from bs4 import BeautifulSoup
link = 'https://stackoverflow.com/questions/tagged/web-scraping'
def filter_proxies():
response = requests.get('https://www.sslproxies.org/')
soup = BeautifulSoup(response.text,"html.parser")
proxies = []
for item in soup.select("table.table tbody tr"):
if not item.select_one("td"):break
ip = item.select_one("td").text
port = item.select_one("td:nth-of-type(2)").text
proxies.append(f"{ip}:{port}")
return proxies
def create_proxy_driver(PROXY):
options = Options()
options.add_argument("--headless")
options.add_argument(f'--proxy-server={PROXY}')
driver = webdriver.Chrome(options=options)
return driver
def get_content(ALL_PROXIES,driver):
while True:
try:
driver.get(link)
title = driver.find_element(By.CSS_SELECTOR,"h3.s-post-summary--content-title > a").text
if title:
driver.quit()
return title
except Exception as e:
driver.quit()
if not ALL_PROXIES:
print("Proxies used up (%s)" % len(ALL_PROXIES))
ALL_PROXIES = filter_proxies()
new_proxy = ALL_PROXIES.pop()
driver = create_proxy_driver(new_proxy)
print("proxy being used: %s" % new_proxy)
time.sleep(1)
if __name__ == '__main__':
ALL_PROXIES = filter_proxies()
new_proxy = ALL_PROXIES.pop()
driver = create_proxy_driver(new_proxy)
print(get_content(ALL_PROXIES,driver))
But can you please post the fixed version.