Saltar a contenido

Configurar Proxy Autenticado en las Herramientas BotCity

Esta guía muestra cómo proporcionar las credenciales del proxy corporativo autenticado a las herramientas del BotCity Studio SDK (Wizard, BotRunner, BotCLI, BotStudio, Diagnostic) y a las automatizaciones Python, para que la instalación, la ejecución de los robots y la comunicación con el Orquestador pasen por la autenticación de la red.

Versiones mínimas

En versiones anteriores a las listadas abajo, las propiedades descritas en esta guía son ignoradas.

  • Wizard 3.4.0
  • BotRunner 3.6.0
  • BotCLI 2.2.0
  • BotStudio 3.3.0
  • Diagnostic 1.4.0

Las propiedades del proxy

La red exige un usuario y una contraseña para el proxy. Hoy esa credencial ya se proporciona al pip mediante el parámetro --proxy. Las aplicaciones Java del SDK necesitan exactamente la misma información, pero entregada como propiedades de la JVM. Con las propiedades configuradas, las herramientas envían la credencial al proxy ya en la primera solicitud (el mismo comportamiento del pip) y la conexión queda autorizada.

Existen ocho propiedades. Complete las cuatro para https y repita los mismos valores en las cuatro para http:

-Dhttps.proxyHost=proxy.empresa.com
-Dhttps.proxyPort=puerto
-Dhttps.proxyUser=usuario
-Dhttps.proxyPassword=contraseña
-Dhttp.proxyHost=proxy.empresa.com
-Dhttp.proxyPort=puerto
-Dhttp.proxyUser=usuario
-Dhttp.proxyPassword=contraseña

¿Su proxy no tiene usuario?

Si su proxy no exige autenticación, no defina proxyUser/proxyPassword con valores vacíos. En ese caso, elimine por completo las cuatro propiedades *User y *Password y mantenga solo proxyHost y proxyPort. Un valor vacío todavía puede hacer que el cliente envíe una credencial en blanco, lo que algunos proxies rechazan. Lo mismo aplica a las variables de entorno de Python descritas más abajo: use http://host:puerto, sin el segmento usuario:contraseña@.

Alternativas para configurar las propiedades del proxy

Las mismas ocho propiedades pueden llegar a las aplicaciones de dos formas. Basta con una de las opciones, no es necesario hacer las dos.

Opción A: configuración por aplicación, sin usar variable de entorno

En este caso, es necesario crear un archivo .ini junto a cada ejecutable (.exe) y cambiar una línea en los scripts del Runner y del CLI.

1. Archivo .ini junto a los ejecutables

Cree el archivo wizard-3.4.0.l4j.ini junto a wizard-3.4.0.exe con el siguiente contenido:

-Dhttps.proxyHost=proxy.empresa.com
-Dhttps.proxyPort=puerto
-Dhttps.proxyUser=usuario
-Dhttps.proxyPassword=contraseña
-Dhttp.proxyHost=proxy.empresa.com
-Dhttp.proxyPort=puerto
-Dhttp.proxyUser=usuario
-Dhttp.proxyPassword=contraseña

Después de instalar el SDK, esta misma estrategia también puede usarse para iniciar BotStudio con las propiedades adecuadas. En ese caso, basta con crear el archivo BotStudio.l4j.ini junto a BotStudio.exe, con el mismo contenido anterior.

2. Propiedades en los scripts de inicio del Runner y del CLI

En la carpeta de instalación del SDK, edite los tres scripts:

Archivo Función
BotRunnerBackgroundWrapper.bat Inicia el Runner en segundo plano
BotRunner-gui.bat Inicia el Runner con interfaz gráfica
BotCLI.bat Inicia la herramienta de línea de comandos

En cada uno, inserte las propiedades entre java y -jar. Antes y después, para el Runner:

Antes

"%SCRIPTPATH%\win32\java\bin\java" -Dfile.encoding=UTF-8 -jar "%SCRIPTPATH%\bin\botrunner.jar"
Después
"%SCRIPTPATH%\win32\java\bin\java" -Dfile.encoding=UTF-8 "-Dhttps.proxyHost=proxy.empresa.com" "-Dhttps.proxyPort=puerto" "-Dhttps.proxyUser=usuario" "-Dhttps.proxyPassword=contraseña" "-Dhttp.proxyHost=proxy.empresa.com" "-Dhttp.proxyPort=puerto" "-Dhttp.proxyUser=usuario" "-Dhttp.proxyPassword=contraseña" -jar "%SCRIPTPATH%\bin\botrunner.jar"

Ventajas:

  • No crea una variable en el ámbito de la máquina.
  • La credencial queda restringida solo a las aplicaciones del SDK.
  • Ninguna otra aplicación Java de la máquina se ve afectada.

Desventajas:

  • Cada actualización o nueva instalación reemplaza los archivos y exige rehacer la configuración.
  • Hay varios archivos que mantener.

Opción B: mediante la variable de entorno JAVA_TOOL_OPTIONS

Esta es la alternativa más simple: una única variable de entorno en el ámbito de la máquina, leída automáticamente por cualquier aplicación Java.

  • Nombre de la variable: JAVA_TOOL_OPTIONS
  • Valor de la variable:
-Dhttps.proxyHost=proxy.empresa.com -Dhttps.proxyPort=puerto -Dhttps.proxyUser=usuario -Dhttps.proxyPassword=contraseña -Dhttp.proxyHost=proxy.empresa.com -Dhttp.proxyPort=puerto -Dhttp.proxyUser=usuario -Dhttp.proxyPassword=contraseña

Cree la variable en Propiedades del Sistema → Variables de Entorno → Variables del sistema.

Pantalla de Variables de Entorno de Windows mostrando la creación de la variable de sistema JAVA_TOOL_OPTIONS con el valor de las propiedades del proxy.

Reinicie después de crear la variable

Después de crear la variable, cierre y vuelva a abrir cualquier terminal y reinicie el Runner, el BotStudio y el propio Wizard. Cada proceso solo lee el entorno cuando se inicia.

Ventajas:

  • Configuración única, aplicada a todas las herramientas.
  • Sobrevive a actualizaciones y reinstalaciones del SDK.

Desventajas:

  • Es una variable en el ámbito de la máquina: se aplica a toda JVM en el servidor.

Automatizaciones Python: reemplazar --proxy por variables de entorno

Hoy, la instalación de paquetes se hace con pip install --proxy http://usuario:contraseña@proxy..., escrito manualmente. Esto necesita cambiar por dos motivos:

  • Es el Runner quien instala las dependencias del robot. Cada vez que prepara un robot, ejecuta el pip varias veces (actualizando pip, setuptools, wheel y luego el paquete o requirements.txt), y no hay dónde escribir --proxy.
  • El código del robot también accede a la red. Llamadas del SDK como maestro.finish_task() o maestro.alert(), usadas en integraciones con la plataforma, también pueden fallar en la autenticación del proxy si la credencial no está disponible. El --proxy del pip no llega a esas llamadas.

Las variables de entorno resuelven los dos casos a la vez. Cree HTTP_PROXY y HTTPS_PROXY en el ámbito de la Máquina, o en el ámbito del usuario que ejecuta el Runner. El valor es exactamente el mismo que hoy se pasa a la bandera --proxy, en el formato http://usuario:contraseña@host:puerto.

Pantalla de Variables de Entorno de Windows mostrando las variables de sistema HTTP_PROXY y HTTPS_PROXY, ambas con el valor http://user:password@host:port.

Reinicie el Runner después de crear las variables

El Runner traspasa a los robots y al pip el entorno que recibió cuando se inició.

Caracteres especiales en la contraseña

A diferencia de las propiedades de la JVM, donde la contraseña se escribe tal cual, aquí el usuario y la contraseña van dentro de una URL. Cualquier carácter reservado necesita codificarse, o la URL se interpreta de forma incorrecta y la autenticación falla:

Carácter Escribir como Carácter Escribir como
@ %40 # %23
: %3A & %26
/ %2F ? %3F
\ (dominio) %5C % %25

Ejemplo: el usuario Lara con la contraseña p@ss:2026 se convierte en http://Lara:p%40ss%3A2026@proxy.empresa.com:8080.

Entornos virtuales

Como HTTP_PROXY/HTTPS_PROXY son leídas directamente por pip y por la biblioteca requests, funcionan para cualquier venv, sin necesidad de configuración adicional por entorno.