Como criar e salvar emails reais em uma base de dados com Python? 🚀
Fala, galera! 👋
Estou trabalhando em um projeto onde preciso criar emails reais e salvá-los em uma base de dados. Estava usando a biblioteca Selenium, mas nada deu certo até agora. 😢
Também tentei o PyAutoGUI, mas continuo recebendo o erro: "Error code 7". 🛑
Alguém aí já passou por isso e tem uma ideia de como resolver? 🔧
Se puderem sugerir outras bibliotecas ou maneiras mais eficazes de fazer isso, seria incrível! 🙌
Detalhes do que preciso:
- Criar emails reais automaticamente. 📧
- Salvar essas informações (email, senha, etc.) em um banco de dados. 💾
- Usar Python como linguagem principal. 🐍
Valeu demais pela ajuda! 💪🔥
PS: Se puderem, mandem exemplos ou links úteis pra me dar um norte. 🌟
Codigo Atual
from selenium import webdriver
from selenium.webdriver.firefox.service import Service
from webdriver_manager.firefox import GeckoDriverManager
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException, WebDriverException
import logging
import time
import random
from task import get_phone_number, get_verification_code, fetch_emails, connect_db, save_email
import pyautogui as pg
GOOGLE_SIGNUP_URL = "https://accounts.google.com/signup"
PROXY_SERVER = "ukGDVRlSLkZYfG4A:senha:rotating.proxyempire.io:9000"
DEFAULT_WAIT_TIME = 120
class EmailAutomation:
def __init__(self, proxy):
options = webdriver.FirefoxOptions()
# options.add_argument("--headless")
options.add_argument("--disable-automation")
options.add_argument("--disable-blink-features=AutomationControlled") # Remove a detecção de automação
options.add_argument("--disable-infobars") # Remove a mensagem "Controlado por automação"
options.add_argument("--disable-extensions")
options.add_argument("--disable-dev-shm-usage")
options.add_argument("--no-sandbox")
options.add_argument("-private")
options.set_preference("general.useragent.override", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36")
if proxy:
proxy_config = proxy.split(":")
if len(proxy_config) == 4:
user, password, ip, port = proxy_config
options.set_preference("network.proxy.type", 1)
options.set_preference("network.proxy.http", ip)
options.set_preference("network.proxy.http_port", int(port))
options.set_preference("network.proxy.ssl", ip)
options.set_preference("network.proxy.ssl_port", int(port))
options.set_preference("network.proxy.socks_username", user)
options.set_preference("network.proxy.socks_password", password)
else:
logging.error("Formato de proxy inválido. Por favor, revise a configuração.")
try:
service = Service(GeckoDriverManager().install())
self.driver = webdriver.Firefox(service=service, options=options)
logging.info("Navegador iniciado com sucesso")
except WebDriverException as e:
logging.error(f"Erro ao iniciar o navegador: {e}")
raise
def create_email_account(self, email):
driver = self.driver
driver.execute_script("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})")
try:
# abrir página de signup do Google
driver.get(GOOGLE_SIGNUP_URL)
wait = WebDriverWait(driver, DEFAULT_WAIT_TIME)
email_names = [
"Ana", "Maria", "Beatriz", "Julia", "Gabriela", "Fernanda", "Carla", "Patricia", "Luana", "Rita",
"Mariana", "Catarina", "Luciana", "Marta", "Juliana", "Vanessa", "Tania", "Simone", "Isabela", "Raquel",
"Larissa", "Aline", "Tatiane", "Camila", "Monique", "Daniele", "Caroline", "Bianca", "Renata", "Elaine",
"Lúcia", "Adriana", "Sandra", "Cristiane", "Sabrina", "Lilian", "Letícia", "Rosana", "Márcia", "Sílvia",
"Natalia", "Priscila", "Cíntia", "Marina", "Verônica", "Michele", "Juliana", "Paula", "Kelly", "Cláudia",
"Ester", "Joana", "Gláucia", "Rafaela", "Gabrielle", "Luciane", "Elaine", "Mariane", "Jéssica", "Kátia",
"Thais", "Silvia", "Eliane", "Andreia", "Cleusa", "Vilma", "Lorena", "Roseli", "Sueli", "Neide", "Vera"
]
email_surnames = [
"Silva", "Santos", "Oliveira", "Pereira", "Costa", "Almeida", "Rodrigues", "Souza", "Lima", "Gomes",
"Martins", "Fernandes", "Carvalho", "Melo", "Ribeiro", "Nascimento", "Araujo", "Dias", "Lopes", "Barbosa",
"Ferreira", "Batista", "Castro", "Pinto", "Cavalcanti", "Vieira", "Freitas", "Moreira", "Teixeira", "Machado",
"Queiroz", "Maciel", "Ramos", "Figueiredo", "Viana", "Moura", "Cunha", "Macedo", "Nunes", "Pereira", "Santos",
"Tavares", "Marques", "Brito", "Gonçalves", "Zanetti", "Serrano", "Lima", "Rosa", "Brandão", "Azevedo",
"Pimentel", "Simões", "Cunha", "Barreto", "Pecanha", "Rochas", "Vasquez", "Farias", "Monteiro", "Martins",
"Lopes", "Morais", "Correia", "Pinheiro", "Nascimento", "Dias", "Cunha", "Lima", "Barbosa", "Silveira",
"Siqueira", "Salles", "Borges", "Assis", "Fonseca", "Valente", "Mota", "Fagundes", "Galvão", "Santiago", "Xavier",
"Vilela", "Serrano", "Vieira", "Vargas", "Ribeiro", "Moreira", "Cavalcanti", "Tavares", "Pereira", "Pimentel"
]
try:
first_name_input = wait.until(EC.presence_of_element_located((By.XPATH, "//input[@id='firstName']")))
first_name_input.clear()
first_name_input.send_keys(random.choice(email_names))
last_name_input = wait.until(EC.presence_of_element_located((By.ID, "lastName")))
last_name_input.clear()
last_name_input.send_keys(random.choice(email_surnames))
next_button = wait.until(EC.element_to_be_clickable((By.XPATH, "//span[text()='Next']")))
driver.execute_script("arguments[0].scrollIntoView();", next_button)
next_button.click()
except TimeoutException as e:
logging.error(f"Timeout ao tentar encontrar o botão 'Next': {e}")
driver.save_screenshot("timeout_next_button.png")
return False
except Exception as e:
logging.error(f"Erro ao interagir com o botão 'Next': {e}")
driver.save_screenshot("unexpected_error_next_button.png")
return False
except Exception as e:
logging.error(f"Erro ao criar conta de email: {email}")
return False
def close(self):
if self.driver:
self.driver.quit()
logging.info("Navegador fechado com sucesso")
def main():
db = connect_db()
if not db:
logging.error("Tentativa falha ao conectar-se com o banco de dados")
return
emails = fetch_emails(db)
if not emails:
logging.error("Nenhum email encontrado para o processamento")
db.close()
return
automation = None
try:
automation = EmailAutomation(proxy=None)
for entry in emails:
email = entry['email']
senha = entry['senha']
gmail = entry['primeiro_nome']
if not automation.create_email_account(email):
logging.warning(f"Tentativa de criar email {email} falhou. Prosseguindo para o próximo.")
finally:
if automation:
automation.close()
db.close()
if __name__ == "__main__":
main()