Como construir um bot de login automático simples com Python e selênio
Automação é, sem dúvida, uma das habilidades mais cobiçadas que um programador pode possuir. A automação é normalmente usada para tarefas que são repetitivo, chato, demorado, ou então ineficiente sem o uso de um script.
Com automação web, você pode facilmente criar um bot para realizar diferentes tarefas na Web, por exemplo, para monitorar tarifas de hotéis concorrentes na Internet e determinar o melhor preço.
Pessoalmente, eu sempre encontrei fazendo login no meu email bastante repetitivo e chato, por isso, por causa de um exemplo simples para obter vocês começou com automação da web, vamos implementar um script Python automatizado para faça o login com um único clique para uma conta do Gmail.
Instalação e Configuração
Neste tutorial vamos usar o seguintes ferramentas:
- Linguagem de programação Python
- Navegador Google Chrome
- Kit de ferramentas de automação do navegador Selenium
- Driver da Web do driver do Chrome para o Chrome
Para o nosso programa, estaremos usando a linguagem de programação Python, especificamente versão 2.7.11. É fundamental que instalemos um bastante nova versão do Python 2 porque vem com PIP, o que nos permitirá instalar pacotes e frameworks de terceiros que precisaremos para automatizar nossos scripts.
Uma vez instalado, reinicie seu computador para que as alterações entrem em vigor. Use o comando pip instalar selênio
para adicionar o Kit de ferramentas de automação da web de selênio para Python. O selênio nos permitirá rolar programaticamente, copiar texto, preencher formulários e clicar nos botões.
Finalmente baixe o Executável do Selenium Chrome Driver, qual vai abra o Google Chrome conforme necessário para executar nossas tarefas automatizadas. O driver do Chrome é simplesmente uma maneira de abrir o Google Chrome (que já deve estar instalado) para acessar operações padrão do navegador programaticamente.
Basta baixar o arquivo ZIP mais recente daqui, extrair o chromedriver.exe
executável e coloque o executável em qualquer diretório. Certifique-se de anotar onde está o seu executável, porque vamos precisar dele assim que começarmos.
Iniciando o Programa
Como mencionado, estaremos usando o Estrutura de automação da web de selênio a fim de logar programaticamente. A primeira ordem de negócios é importar todos os módulos nós precisaremos da biblioteca Selenium Python que instalamos mais com o PIP.
Vamos abrir o IDLE ou outro editor de código, crie um novo arquivo Python com .py
extensão e importar os seguintes módulos:
de selenium import webdriver de selenium.webdriver.common.by import Por de selenium.webdriver.support.ui import WebDriverWait de selenium.webdriver.support import expected_conditions como EC
Em seguida, vamos crie duas cordas que representam o nosso usuário e senha para a conta de email. Preste atenção à capitalização, especialmente na sua string de senha.
usernameStr = 'putYourUsernameHere' passwordStr = 'putYourPasswordHere'
Agora que temos tudo configurado para iniciar o processo de login, precisamos instruir uma janela do navegador para abra o Google Chrome, e navegue até a página de login do Gmail.
Se você ainda não fez isso, certifique-se de que seu script Python esteja salvo no mesmo local que o chromedriver.exe
executável nós extraímos mais cedo.
browser = webdriver.Chrome () browser.get (('https://accounts.google.com/ServiceLogin? "serviço = mail & continue = https: //mail.google" .com / mail / # identifier "))
Encontrando Nosso Elemento
Conseguimos que o navegador abra o Gmail, mas agora precisamos encontrar os campos de entrada na página da web, na qual podemos digite nosso nome de usuário e senha.
Podemos fazer isso facilmente usando as Ferramentas de desenvolvedor do Google Chrome incorporadas. Nós só precisamos clicar com o botão direito nos campos de entrada, e selecionar o “Inspecionar” cardápio.
Agora é só uma questão de usando HTML identidade
atributos encontrar os elementos programaticamente.
No código abaixo, somos simplesmente procurando o campo de entrada de nome de usuário por identidade
, e enchendo com o texto desejado. Então nós estamos procurando pelo botão Avançar que transita com uma animação rápida antes de nos solicitar a senha.
o send_keys ()
e clique()
comandos fazem exatamente como seus nomes sugerem - send_keys ()
simula pressionamentos de tecla no elemento desejado, e clique()
simula um clique do mouse.
# preencha o nome de usuário e aperte o próximo botão username = browser.find_element_by_id ('E-mail') username.send_keys (usernameStr) nextButton = browser.find_element_by_id ('next') nextButton.click ()
Podemos Faça a mesma coisa para o campo de entrada de senha, bem como para o botão Entrar. No entanto, esses dois itens aparecem na página só depois de uma transição animada.
Dito isto, precisamos do programa para aguarde alguns segundos antes de retomar sua busca por elementos. Na maior parte, essa etapa do código não é diferente da anterior. Nós simplesmente temos que instruir o navegador para aguarde no máximo 10 segundos antes de localizar a entrada de senha.
# aguarde a transição e continue a preencher os itens password = WebDriverWait (browser, 10) .until (EC.presence_of_element_located ((By.ID, 'Passwd'))) password.send_keys (passwordStr) signInButton = browser.find_element_by_id ('signIn' ) signInButton.click ()
Palavras finais
Você acabou de terminar criando um bot que visita uma página da web, insere seu nome de usuário e senha e faz login com sucesso, automatizando todo o processo para um único clique. Eu sei que esta foi uma demonstração simples, mas as possibilidades são infinitas.
Na mesma nota, seja cuidadoso de como você usa essa habilidade. Algumas pessoas usam bots e scripts automatizados para entrar nos sorteios milhares de vezes, desconsiderando completamente os termos e condições. Outros os usam para intenções mais maliciosas.
Só não se esqueça de usar a automação de forma proposital e cuidadosa, porque é realmente uma habilidade muito necessária na comunidade de programação!
Nota do editor: Este é um post escrito para Hongkiat.com por Malik Brahimi. Malik é um desenvolvedor localizado na área da Grande Boston, e adora comida, futebol e programação (linguagem favorita Python).
- Fonte de download