gpt4 book ai didi

python - 使用远程 Webdriver 时的 PhantomJS 代理?

转载 作者:行者123 更新时间:2023-12-01 04:32:26 25 4
gpt4 key购买 nike

我正在尝试在 python 中使用 selenium 和 PhantomJS。我正在运行 selenium hub 服务器,因此使用 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_capability 作为参数,而不采用服务参数。

有什么方法可以将代理作为desired_capibility传递给PhantomJS吗?

使用 Firefox Webdriver 执行此操作的典型方法不起作用。

最佳答案

由于 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' : [] })

关于python - 使用远程 Webdriver 时的 PhantomJS 代理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32192210/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com