¿Proxy PhantomJS cuando se utiliza Remote Webdriver?

Estoy tratando de usar selenium en python con PhantomJS. Estoy ejecutando un servidor central de webdriver.Remote así que estoy usando webdriver.Remote para iniciar un webdriver.

La forma normal de pasar un proxy a PhantomJS es:

 service_args = [ '--proxy=127.0.0.1:9999', '--proxy-type=socks5', ] browser = webdriver.PhantomJS('../path_to/phantomjs',service_args=service_args) 

Esto no funcionará para

 webdriver.Remote(service_args=service_args) 

Como webdriver.Remote toma solo capacidades deseadas, no como argumentos de servicio, como un parámetro.

¿Hay alguna forma de pasar un proxy a PhantomJS como una capacidad deseada?

La forma típica en que uno lo haría con un controlador web de Firefox no funciona.

Dado que la instancia de PhantomJS ya se ejecuta, no tendría sentido pasar las opciones de la línea de comandos al constructor RemoteDriver. Aunque hay una manera.

PhantomJS admite una forma programática de configurar un proxy a través de phantom.setProxy(ip, port, type, un, pw) (no documentado, pero disponible desde PhantomJS 2). Esto debe ejecutarse en el contexto fantasma, por lo que driver.execute_script() no funcionará aquí.

GhostDriver acepta el script que se ejecutará en el contexto fantasma a través de un comando especial que puede invocar de esta forma ( fuente ):

 driver.command_executor._commands['executePhantomScript'] = ('POST', '/session/$sessionId/phantom/execute') driver.execute('executePhantomScript', {'script': '''phantom.setProxy("10.0.0.1", 12345);''', 'args' : [] })