Automatización web y proxies¶
Cuando se desarrollan automatizaciones, a menudo es útil utilizar proxies para evitar ser bloqueado.
Los proxies pueden ser autenticados o anónimos.
Los proxies anónimos son los más fáciles de usar y ampliamente compatibles con los navegadores.
Los proxies autenticados también son compatibles con los navegadores, pero desafortunadamente el proceso de autenticación no se expone a través de argumentos de línea de comandos para evitar la exposición de las credenciales.
En esta guía, te guiaremos a través de los pasos para usar proxies anónimos y autenticados.
Proxy anónimo¶
A través de las capacidades del navegador, puedes configurar la configuración del proxy para el navegador.
Con tu configuración de proxy lista, como la dirección del servidor proxy y el puerto, puedes usar el siguiente fragmento de código para configurar el proxy en tu Web Bot.
# Import for the WebBot
from botcity.web import WebBot, Browser, By
# Uncomment the line for your desired browser below
# 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
# Modify the proxy settings here
PROXY = "186.251.64.10:8085"
# Get the default capabilities for the browser
capabilities = default_capabilities()
# Adjust as needed for the proxy
capabilities['proxy'] = {
"httpProxy": PROXY,
"sslProxy": PROXY,
"proxyType": "MANUAL",
}
bot = WebBot()
# Configure proxy in capabilities
bot.capabilities = capabilities
# Opens browser using the proxy defined above
bot.browse("https://whatsmyip.org")
// Uncomment the line for your desired browser below
// import dev.botcity.framework.web.browsers.FirefoxConfig;
// import dev.botcity.framework.web.browsers.ChromeConfig;
// import dev.botcity.framework.web.browsers.EdgeConfig;
// Modify the proxy settings here
String proxy = "186.251.64.10:8085";
// Get the default capabilities for the browser
FirefoxConfig firefoxConfig = new FirefoxConfig();
MutableCapabilities capabilities = firefoxConfig.defaultCapabilities();
// Setting proxy configuration
// Adjust as needed for the 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 se mencionó anteriormente, los proxies autenticados son compatibles con los navegadores, pero el proceso de autenticación no se expone a través del código para evitar la exposición de las credenciales.
Aquí hay algunas alternativas para usar un proxy autenticado:
- Configura el proxy en tu sistema operativo.
- Usa Firefox con la extensión AutoAuth.
Hoja de ruta
Nuestro equipo actualizará esta guía a medida que encontremos más alternativas para usar un proxy autenticado.
Usando Firefox con AutoAuth¶
AutoAuth es un complemento simple de Firefox basado en WebExtension que envía automáticamente las credenciales de autenticación HTTP.
La primera vez que abres una página web, AutoAuth te pedirá las credenciales.
La página de inicio de sesión contiene un formulario con los siguientes campos:
Campo | Descripción | ID DOM |
---|---|---|
Usuario | El nombre de usuario a utilizar | username |
Contraseña | La contraseña a utilizar | password |
Enviar | El botón de enviar | submit |
Para usar esta extensión con tu Web Bot, deberás descargar el archivo xpi
desde la página de lanzamientos del repositorio de AutoAuth y guardarlo en una ubicación accesible para tu Web Bot.
Tip
Puedes agregar el archivo xpi
a la carpeta resources
de tu bot y esto hará que tu código sea portable en diferentes ambientes de ejecución.
Con el archivo xpi
en su lugar, puedes usar el siguiente fragmento de código para configurar el proxy en tu Web Bot.
# Import for the WebBot
from botcity.web import WebBot, Browser, By
# Uncomment the line for your desired browser below
# 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
# Modify the proxy settings here
PROXY = "186.251.64.10:8085"
USERNAME = "proxyuser"
PASSWORD = "s3cr3tp4ssw0rd"
# Get the default capabilities for the browser
capabilities = default_capabilities()
# Adjust as needed for the proxy
capabilities['proxy'] = {
"httpProxy": PROXY,
"sslProxy": PROXY,
"proxyType": "MANUAL",
}
bot = WebBot()
# Setting to use Firefox
bot.browser = Browser.FIREFOX
# Configure proxy in capabilities
bot.capabilities = capabilities
# Assuming AutoAuth XPI is in the `resources` folder of your bot
autoauth_xpi = bot.get_resource_abspath("autoauth-3.1.1-an.fx.xpi")
# Add the AutoAuth extension to the browser
bot.install_firefox_extension(autoauth_xpi)
bot.browse("https://whatsmyip.org")
# Fill in the login form
username = bot.find_element("login", By.ID)
username.send_keys(USERNAME)
password = bot.find_element("password", By.ID)
password.send_keys(PASSWORD)
# Submit the form
submit = bot.find_element("submit", By.ID)
submit.click()
// Uncomment the line for your desired browser below
// import dev.botcity.framework.web.browsers.FirefoxConfig;
// import dev.botcity.framework.web.browsers.ChromeConfig;
// import dev.botcity.framework.web.browsers.EdgeConfig;
// Modify the proxy settings here
String proxy = "186.251.64.10:8085";
String username = "proxyuser";
String password = "s3cr3tp4ssw0rd";
// Get the default capabilities for the browser
FirefoxConfig firefoxConfig = new FirefoxConfig();
MutableCapabilities capabilities = firefoxConfig.defaultCapabilities();
// Setting proxy configuration
// Adjust as needed for the 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";
// Add the AutoAuth extension to the browser
installFirefoxExtension(autoAuthXPI);
browse("https://whatsmyip.org");
// Fill in the login form
WebElement usernameElement = findElement(By.id("login"));
usernameElement.sendKeys(username);
WebElement passwordElement = findElement(By.id("password"));
passwordElement.sendKeys(password);
// Submit the form
WebElement submit = findElement(By.id("submit"));
submit.click();
Important
Una vez que hayas autenticado con AutoAuth, no se te pedirá nuevamente las credenciales.