Automações Web e Proxies¶
Ao desenvolver automações, geralmente é útil usar proxies para evitar bloqueios.
Os proxies podem ser autenticados ou anônimos.
Os proxies anônimos são os mais fáceis de usar e são amplamente suportados pelos navegadores.
Os proxies autenticados também são suportados pelos navegadores, mas infelizmente o processo de autenticação não é exposto por meio de argumentos da linha de comando para evitar a exposição das credenciais.
Neste guia, levaremos você nas etapas para usar proxies anônimos e autenticados.
Proxy anônimo¶
Através dos recursos do navegador, você pode definir as configurações de proxy para o navegador.
Com suas configurações de proxy prontas, como o endereço e a porta do servidor proxy, você pode usar o seguinte snippet de código para configurar o proxy no seu bot da web.
# Importe para WebBot
from botcity.web import WebBot, Browser, By
# Descomente a linha para o navegador desejado abaixo
# from botcity.web.browsers.firefox import default_capabilities
# from botcity.web.browsers.chrome import default_capabilities
# from botcity.web.browsers.edge import default_capabilities
# from botcity.web.browsers.ie import default_capabilities
# Modifique as configurações de proxy aqui
PROXY = "186.251.64.10:8085"
# Obtenha os recursos padrão para o navegador
capabilities = default_capabilities()
# Ajuste conforme necessário para o proxy
capabilities['proxy'] = {
"httpProxy": PROXY,
"sslProxy": PROXY,
"proxyType": "MANUAL",
}
bot = WebBot()
# Configura proxy no capabilities
bot.capabilities = capabilities
# Abre navegador usando o proxy definido acima
bot.browse("https://whatsmyip.org")
// descomamente A linha para o navegador desejado abaixo
// importar dev.botcity.framework.web.browsers.firefoxconfig;
// import dev.botcity.framework.web.browsers.chromeconfig;
// importar dev.botcity.framework.web.browshers.edgeConfig;
// Modifique as configurações de proxy aqui
String proxy = "186.251.64.10:8085";
// Obtenha os recursos padrão para o navegador
FirefoxConfig firefoxConfig = new FirefoxConfig();
MutableCapabilities capabilities = firefoxConfig.defaultCapabilities();
// Configuração de configuração de proxy
// ajuste conforme necessário para o proxy
Map<String, String> proxyConfig = new HashMap<String, String>();
proxyConfig.put("httpProxy", proxy);
proxyConfig.put("sslProxy", proxy);
proxyConfig.put("proxyType", "MANUAL");
capabilities.setCapability("proxy", proxyConfig);
setCapabilities(capabilities);
browse("https://whatsmyip.org");
Proxy Autenticado¶
Como mencionado acima, os proxies autenticados são suportados pelos navegadores, mas o processo de autenticação não é exposto via código para evitar a exposição das credenciais.
Aqui estão algumas alternativas para usar um proxy autenticado:
- Configure o proxy no seu sistema operacional.
- Use o Firefox com a extensão AutoAuth.
roteiro
Nossa equipe atualizará este guia à medida que encontrarmos mais alternativas para usar um proxy autenticado.
Usando o Firefox com AutoAuth¶
AutoAuth é um complemento simples do Firefox baseado em WebExtension que envia credenciais de autenticação HTTP automaticamente.
Na primeira vez em que você abre uma página da web, o Autoauth solicitará as credenciais.
A página de login contém um formulário com os seguintes campos:
Campo | Descrição | ID do DOM |
---|---|---|
Nome de usuário | O nome de usuário a ser usado | nome de usuário |
Senha | A senha a ser usada | senha |
Enviar | O botão enviar | enviar |
Para usar esta extensão com seu Web Bot, você precisará baixar o arquivo xpi
da página de versões do repositório AutoAuth e salve-o em um local acessível ao seu Web Bot.
Dica
Você pode adicionar o arquivo xpi
à pasta resources
do seu bot e ele tornará seu código portátil em diferentes ambientes de tempo de execução.
Com o arquivo xpi
, você pode usar o seguinte trecho de código para configurar o proxy no seu Web Bot.
# Importe para WebBot
from botcity.web import WebBot, Browser, By
# Descomente a linha para o navegador desejado abaixo
# from botcity.web.browsers.firefox import default_capabilities
# from botcity.web.browsers.chrome import default_capabilities
# from botcity.web.browsers.edge import default_capabilities
# from botcity.web.browsers.ie import default_capabilities
# Modifique as configurações de proxy aqui
PROXY = "186.251.64.10:8085"
NOME_USUARIO = "proxyuser"
SENHA = "s3cr3tp4ssw0rd"
# Obtenha os recursos padrão para o navegador
capabilities = default_capabilities()
# Ajuste conforme necessário para o proxy
capabilities['proxy'] = {
"httpProxy": PROXY,
"sslProxy": PROXY,
"proxyType": "MANUAL",
}
bot = WebBot()
# Configuração para usar o Firefox
bot.browser = Browser.FIREFOX
# Configura proxy no capabilities
bot.capabilities = capabilities
# Assumindo que o AutoAuth.xpi esteja na pasta 'resources' do seu bot
autoauth_xpi = bot.get_resource_abspath("autoauth-3.1.1-an.fx.xpi")
# Adicione a extensão AutoAuth ao navegador
bot.install_firefox_extension(autoauth_xpi)
bot.browse("https://whatsmyip.org")
# Preencha o formulário de login
nome_usuario = bot.find_element("login", By.ID)
nome_usuario.send_keys(NOME_USUARIO)
senha = bot.find_element("password", By.ID)
senha.send_keys(SENHA)
# Envie o formulário
enviar = bot.find_element("submit", By.ID)
enviar.click()
// descomamente A linha para o navegador desejado abaixo
// importar dev.botcity.framework.web.browsers.firefoxconfig;
// import dev.botcity.framework.web.browsers.chromeconfig;
// importar dev.botcity.framework.web.browshers.edgeConfig;
// Modifique as configurações de proxy aqui
String proxy = "186.251.64.10:8085";
String NOME_USUARIO = "proxyuser";
String SENHA = "s3cr3tp4ssw0rd";
// Obtenha os recursos padrão para o navegador
FirefoxConfig firefoxConfig = new FirefoxConfig();
MutableCapabilities capabilities = firefoxConfig.defaultCapabilities();
// Configuração de configuração de proxy
// ajuste conforme necessário para o proxy
Map<String, String> proxyConfig = new HashMap<String, String>();
proxyConfig.put("httpProxy", proxy);
proxyConfig.put("sslProxy", proxy);
proxyConfig.put("proxyType", "MANUAL");
capabilities.setCapability("proxy", proxyConfig);
setCapabilities(capabilities);
// Assuming AutoAuth XPI is in the `resources` folder of your bot
String autoAuthXPI = "./src/resources/autoauth-3.1.1-an.fx.xpi";
// Adicione a extensão Autoauth ao navegador
installFirefoxExtension(autoAuthXPI);
browse("https://whatsmyip.org");
// Preencha o formulário de login
WebElement elementoNomeUsuario = findElement(By.id("login"));
elementoNomeUsuario.sendKeys(NOME_USUARIO);
WebElement elementoSenha = findElement(By.id("password"));
elementoSenha.sendKeys(SENHA);
// Envie o formulário
WebElement = findElement(By.id("submit"));
elementoEnviar.click();
Importante
Depois de se autenticar com o AutoAuth, você não será solicitado a fornrcer credenciais novamente.