es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Selenium con Firefox no acepta la IP del proxy HTTP con autenticación de usuario.

Estoy buscando usar Selenium con un proxy autenticado por nombre de usuario/contraseña en Ruby. Me doy cuenta de que la mayoría de las personas usan ProxyChain al hacer esto en Chrome, pero me gustaría utilizar una solución sin ninguna gema adicional ya que no funciona bien en Heroku. Además, estoy usando Firefox, por lo que parece haber otra opción posible, según esta pregunta aunque está escrita en Python.

Usé la documentación de Selenium para traducir ese código a Ruby, pero Selenium aún no está utilizando mi proxy al navegar a una página web. Curiosamente, cuando actualizo la página manualmente, me solicita el nombre de usuario/contraseña, pero no lo hace en la carga inicial de la página.

profile = Selenium::WebDriver::Firefox::Profile.new

profile["network.proxy.type"] = 1
# proxy ip and port are fake for this example
profile["network.proxy.http"] = "182.192.157.60"
profile["network.proxy.http_port"] = 12345

# set the username and password
profile["network.proxy.socks_username"] = "mi_usuario"
profile["network.proxy.socks_password"] = "mi_contraseña"

options = Selenium::WebDriver::Firefox::Options.new(profile: profile)

driver = Selenium::WebDriver.for :firefox, options: options

Si alguien tiene alguna idea, agradecería enormemente la ayuda. Gracias.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para utilizar un proxy autenticado por nombre de usuario / contraseña con Selenium en Ruby, puedes crear un perfil de Firefox con la configuración del proxy y las credenciales de nombre de usuario / contraseña, y luego pasar ese perfil a las opciones del controlador de Firefox. Aquí tienes un ejemplo de código:

    profile = Selenium::WebDriver::Firefox::Profile.new
    
    profile["network.proxy.type"] = 1
    # proxy ip and port are fake for this example
    profile["network.proxy.http"] = "182.192.157.60"
    profile["network.proxy.http_port"] = 12345
    
    # establecer el nombre de usuario y la contraseña
    profile["network.proxy.socks_username"] = "mi_usuario"
    profile["network.proxy.socks_password"] = "mi_contraseña"
    
    options = Selenium::WebDriver::Firefox::Options.new(profile: profile)
    
    driver = Selenium::WebDriver.for :firefox, options: options
    

    Este código crea un nuevo perfil de Firefox con la configuración del proxy y las credenciales de nombre de usuario / contraseña, y luego crea nuevas opciones del controlador de Firefox con ese perfil. Finalmente, crea un nuevo controlador de Firefox con esas opciones.

    Ten en cuenta que la dirección IP y el puerto del proxy deben ser reemplazados con los detalles reales del servidor proxy, y el nombre de usuario y la contraseña deben ser reemplazados con las credenciales reales. También ten en cuenta que este código asume que ya has instalado las bibliotecas necesarias de Selenium y el controlador de Firefox.

Comments are closed.