使用远程Webdriver时,PhantomJS代理?[英] PhantomJS Proxy when using Remote Webdriver?

问题描述

我正在尝试在带有 PhantomJS 的 python 中使用 selenium.我正在运行一个 selenium 集线器服务器,所以我使用 webdriver.Remote 来启动一个 webdriver.

将代理传递给 PhantomJS 的正常方式是:

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

这对

不起作用
webdriver.Remote(service_args=service_args)

因为 webdriver.Remote 只接受desired_capabilities,而不是服务参数,作为参数.

有没有办法将代理传递给 PhantomJS 作为 desired_capibility?

使用 Firefox 网络驱动程序执行此操作的典型方法不起作用.

推荐答案

由于 PhantomJS 实例已经运行,将命令行选项传递给 RemoteDriver 构造函数是没有意义的.不过有办法.

PhantomJS 本身支持编程方式通过 phantom.setProxy(ip, port, type, un, pw)(未记录,但自 PhantomJS 2 起可用).这必须在虚拟上下文中执行,所以 driver.execute_script() 在这里不起作用.

GhostDriver 接受这样的脚本,这些脚本将通过一个特殊命令在幻像上下文中执行,您可以像这样调用该命令(source):

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

本文地址:https://www.itbaoku.cn/post/1740021.html