Como automatizar o login em um site
Digamos que você queira automatizar seu fluxo de trabalho com um site. Na maioria das vezes, você faz login no site antes de fazer qualquer outra coisa. Você também pode automatizar essa ação! Neste artigo, você aprenderá como criar um script de automação simples que fará login no site para você.
Este artigo tem como objetivo orientá-lo na criação do seu script passo a passo. Se desejar usar o script completo como referência, fique à vontade para rolar até o final.
Passo 1: prepare seu IDE ou um software similar
Você precisará de qualquer ferramenta para escrever seu script. A escolha é sua, mas recomendamos um IDE. Siga os primeiros 4 passos do seguinte artigo: Primeiros passos na automação por scripts.
Passo 2: crie o script de conexão com a API e defina as funções
Nesta etapa, você precisará fazer o script funcionar com API. O script incluirá:
- Endpoints da API
- Variáveis para credenciais
- Funções definidas para iniciar sessão, abrir e fechar perfil.
- Módulos importados, incluindo
requests,hashlibetime. Alguns módulos relacionados ao Selenium também serão incluídos. - Solicitação de login
Utilize o seguinte modelo:
import requests
import hashlib
import time
from selenium import webdriver
from selenium.webdriver.chromium.options import ChromiumOptions
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.common.by import By
MLX_BASE = "https://api.multilogin.com"
MLX_LAUNCHER = "https://launcher.mlx.yt:45001/api/v1"
MLX_LAUNCHER_V2 = (
"https://launcher.mlx.yt:45001/api/v2" # recommended for launching profiles
)
LOCALHOST = "http://127.0.0.1"
HEADERS = {"Accept": "application/json", "Content-Type": "application/json"}
# TODO: Insert your account information in both variables below
USERNAME = ""
PASSWORD = ""
# TODO: Insert the Folder ID and the Profile ID below
FOLDER_ID = ""
PROFILE_ID = ""
def signin() -> str:
payload = {
"email": USERNAME,
"password": hashlib.md5(PASSWORD.encode()).hexdigest(),
}
r = requests.post(f"{MLX_BASE}/user/signin", json=payload)
if r.status_code != 200:
print(f"\nError during login: {r.text}\n")
else:
response = r.json()["data"]
token = response["token"]
return token
def start_profile() -> webdriver:
r = requests.get(
f"{MLX_LAUNCHER_V2}/profile/f/{FOLDER_ID}/p/{PROFILE_ID}/start?automation_type=selenium",
headers=HEADERS,
)
response = r.json()
if r.status_code != 200:
print(f"\nError while starting profile: {r.text}\n")
else:
print(f"\nProfile {PROFILE_ID} started.\n")
selenium_port = response["data"]["port"]
driver = webdriver.Remote(
command_executor=f"{LOCALHOST}:{selenium_port}", options=ChromiumOptions()
)
# For Stealthfox profiles use: options=Options()
# For Mimic profiles use: options=ChromiumOptions()
return driver
def stop_profile() -> None:
r = requests.get(f"{MLX_LAUNCHER}/profile/stop/p/{PROFILE_ID}", headers=HEADERS)
if r.status_code != 200:
print(f"\nError while stopping profile: {r.text}\n")
else:
print(f"\nProfile {PROFILE_ID} stopped.\n")
token = signin()
HEADERS.update({"Authorization": f"Bearer {token}"})O modelo é semelhante ao exemplo de automação Selenium, exceto que possui o seguinte módulo importado no início (que precisaremos para a extração de dados):
from selenium.webdriver.common.by import By
Passo 3: escolha a página da web para automatizar o processo de login
Você pode usar qualquer site que contenha uma página de login. Mas, para este guia, recomendamos experimentar esta página – ela é ótima para praticar tarefas de automação: Login Page.
Passo 4: procure as informações do alvo
No nosso caso, serão as barras de texto para as credenciais e o botão de login:

Vamos incluir todos os 3 elementos nesta página. Veja o que você pode fazer:
- Abra as Ferramentas de Desenvolvedor no seu navegador. Veja como fazer isso para navegadores baseados no Chromium e no Firefox:
- Windows e Linux: pressione
Ctrl + Shift + I - macOS: pressione
Cmd + Option + I
- Windows e Linux: pressione
- Certifique-se de estar na aba “Elementos”.
- Use a tecla de atalho de pesquisa para encontrar o valor desejado.
- Windows e Linux :
CTRL + F - macOS:
Cmd + F
- Windows e Linux :
- Procure o valor que você precisa usar para a extração de dados. No nosso caso, será o seguinte:
-
id="username"para o campo de texto Nome de usuário -
id="password"para o campo de texto Senha -
class="radius"para o botão de login
-
- Selecione os elementos com as tags na aba “Elementos”.
- Clique no valor selecionado e copie o valor dos atributos
idouclass. Por exemplo, se você virid="username", você precisa copiarusername - Anote o valor em algum lugar – você precisará dele mais tarde.

Passo 5: volte ao IDE e adicione novas linhas de código
- Volte para a ID de usuário de sua escolha (por exemplo, VS Code)
- Clique no campo de código e adicione uma variável para abrir e executar ações no perfil:
driver = start_profile() - Adicione
driver.get(“<site alvo>”). No nosso caso, será o seguinte comando:driver.get("https://the-internet.herokuapp.com/login") - Agora precisamos de um pequeno atraso para o script, para que ele tente executar os outros comandos 5 segundos após a abertura da página web:
time.sleep(5)
Passo 6: crie o script para encontrar o elemento
Use este comando para encontrar o elemento: driver.find_element(By.<atributo na pagina>, “<element>”. Ele informa ao script exatamente o que procurar na página. Copiamos vários valores para os atributos id e class em nosso caso de uso. Adicione as strings correspondentes da lista abaixo:
- Adicione a seguinte sequência de caracteres ao campo de texto do nome de usuário:
driver.find_element(By.ID, "username") - Adicione a seguinte sequência de caracteres ao campo de texto da senha:
password = driver.find_element(By.ID, "password") - Adicione a seguinte string ao botão de login:
button = driver.find_element(By.CLASS_NAME, "radius")
Precisaremos usar esses valores mais tarde, então precisamos criar variáveis para os comandos. Você pode nomeá-las como quiser; aqui estão alguns exemplos:
login = driver.find_element(By.ID, "username")
password = driver.find_element(By.ID, "password")
button = driver.find_element(By.CLASS_NAME, "radius")Passo 7: diga ao script o que fazer.
Informamos ao script o que ele deve detectar na página. Agora, vamos instruir o script a adicionar as credenciais e fazer login na página. Você usará as seguintes funções para isso:
-
send_keys()para fornecer quais símbolos devem ser digitados nos campos de texto -
click()para simular o clique esquerdo do mouse
Em nosso caso de uso, você deve ter notado que o site indicou os seguintes valores para as credenciais:
-
tomsmithpara o nome de usuário -
SuperSecretPassword!para a senha
Precisamos instruir o script a digitar esses valores e clicar no botão de login. Aqui estão os trechos de código:
login.send_keys("tomsmith")
password.send_keys("SuperSecretPassword!")
button.click()Passo 8: finalize o script com a notificação de texto.
Nosso script está pronto. Você pode prosseguir com os preparativos e executar o script, mas recomendamos adicionar a função print() , que irá notificá-lo quando o script terminar com sucesso. Pense no texto para a função e adicione-o ao final do script:
print("Signed in")É opcional, mas você também pode adicionar a função stop_profile() após print() . Recomendamos não usá-la, pois essa string não faz sentido para o script.
Passo 9: prepare o script antes de executá-lo
- Instale as seguintes bibliotecas Python (consulte a documentação do seu IDE para obter mais detalhes):
requestsselenium
- Insira seus valores nas variáveis abaixo no script:
-
USERNAME: o e-mail da sua conta Multilogin X -
PASSWORD: Sua senha da conta Multilogin X (a criptografia MD5 não é necessária) -
FOLDER_ ID,PROFILE_ ID: encontre esses valores usando nossos guias no DevTools ou no Postman
-
Passo 10: execute o script
- Abra o aplicativo para desktop (ou conecte o agente se estiver usando a interface web)
- Por padrão, o script abaixo funciona para Mimic. Para usá-lo com Stealthfox, substitua
options=ChromiumOptions()poroptions=Options()na seguinte linha:driver = webdriver.Remote(command_executor=f'{LOCALHOST}:{selenium_port}', options=ChromiumOptions()) - Execute o arquivo
.pycom seu código de automação
Para executar o script no VS Code, clique em “Executar” → “Executar sem depuração” (ou “Iniciar depuração”).
Se você fez tudo corretamente, poderá ver o resultado no terminal. Você também notará uma conta conectada no perfil.

Observações
Agora você está pronto para começar! Você não está limitado apenas a essas opções. Python e Selenium são ferramentas bastante flexíveis e com muito mais potencial. Aqui vão algumas dicas:
- Você pode forçar o script a esperar com base em condições específicas (por exemplo, o script esperará até que um elemento específico apareça na página). Você pode ler mais sobre isso na documentação correspondente Selenium: Waiting Strategies
- Você pode combinar isso com o script do seguinte artigo: Web scraping com Selenium: o básico. Será um ótimo ponto de partida para o seu projeto de automação!
- Existem outras maneiras de implementar Selenium. Consulte a central de ajuda para obter mais detalhes: Selenium Documentation
Script completo
import requests
import hashlib
import time
from selenium import webdriver
from selenium.webdriver.chromium.options import ChromiumOptions
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.common.by import By
MLX_BASE = "https://api.multilogin.com"
MLX_LAUNCHER = "https://launcher.mlx.yt:45001/api/v1"
MLX_LAUNCHER_V2 = (
"https://launcher.mlx.yt:45001/api/v2" # recommended for launching profiles
)
LOCALHOST = "http://127.0.0.1"
HEADERS = {"Accept": "application/json", "Content-Type": "application/json"}
# TODO: Insert your account information in both variables below
USERNAME = ""
PASSWORD = ""
# TODO: Insert the Folder ID and the Profile ID below
FOLDER_ID = ""
PROFILE_ID = ""
def signin() -> str:
payload = {
"email": USERNAME,
"password": hashlib.md5(PASSWORD.encode()).hexdigest(),
}
r = requests.post(f"{MLX_BASE}/user/signin", json=payload)
if r.status_code != 200:
print(f"\nError during login: {r.text}\n")
else:
response = r.json()["data"]
token = response["token"]
return token
def start_profile() -> webdriver:
r = requests.get(
f"{MLX_LAUNCHER_V2}/profile/f/{FOLDER_ID}/p/{PROFILE_ID}/start?automation_type=selenium",
headers=HEADERS,
)
response = r.json()
if r.status_code != 200:
print(f"\nError while starting profile: {r.text}\n")
else:
print(f"\nProfile {PROFILE_ID} started.\n")
selenium_port = response["data"]["port"]
driver = webdriver.Remote(
command_executor=f"{LOCALHOST}:{selenium_port}", options=ChromiumOptions()
)
# For Stealthfox profiles use: options=Options()
# For Mimic profiles use: options=ChromiumOptions()
return driver
def stop_profile() -> None:
r = requests.get(f"{MLX_LAUNCHER}/profile/stop/p/{PROFILE_ID}", headers=HEADERS)
if r.status_code != 200:
print(f"\nError while stopping profile: {r.text}\n")
else:
print(f"\nProfile {PROFILE_ID} stopped.\n")
token = signin()
HEADERS.update({"Authorization": f"Bearer {token}"})
driver = start_profile()
driver.get("https://the-internet.herokuapp.com/login")
time.sleep(5)
login = driver.find_element(By.ID, "username")
password = driver.find_element(By.ID, "password")
button = driver.find_element(By.CLASS_NAME, "radius")
login.send_keys("tomsmith")
password.send_keys("SuperSecretPassword!")
button.click()
print("Signed in")Este artigo inclui links de terceiros que não endossamos oficialmente.