1

如何使用 Selenium、带有 Python 绑定的 PhantomJS 驱动程序为工作人员分配需要用户名 - 密码和自定义用户代理的代理。

我在创建许多遍历我的测试网站的工作人员方面取得了很好的成功。我还可以分配不需要授权的用户代理或代理。但我还没有想出如何同时对同一个工人做这两个。

然而,目前真正的问题是为需要用户名和密码授权的工作人员分配一个代理。

玩家:Selenium 2.33.0 / PhantomJS 1.9.1 / Python 2.7.3 / Ubuntu 12.04

我:努比。Python 周,Linux 日,Selenium 小时,PhantomJS -= ,SO 第一篇文章

搜索结果: 如何在 python webdriver 中为 phantomjs/ghostdriver 设置代理?

答案实际上可能就在那里,而且我已经阅读和重新阅读了许多其他地方,但我无法以我目前的水平将这些点联系起来。

用户代理用这种方法解决。

dcap = dict(DesiredCapabilities.PHANTOMJS)           
dcap["phantomjs.page.settings.userAgent"] = (
                "Any User Agent string here”)
driver = webdriver.PhantomJS(desired_capabilities=dcap)

未经授权的代理适用于此:

service_args = [
    '--proxy=127.0.0.1:9999',
    '--proxy-type=http,
    ]
driver = webdriver.PhantomJS('/usr/local/bin/phantomjs,service_args=service_args)

如果使用上述两种方法,我不确定如何将代理和 UA 都传递给 PhantomJS 驱动程序。ATM 我只能使用需要授权的代理来执行其中一项操作,而根本无法执行此操作。

此 SO 线程的目标:

  1. 了解如何分配需要用户名/密码的代理
  2. 将自定义用户代理分配给同一工作人员。

使用 Selenium、带有 Python 绑定的 PhantomJS 驱动程序。

最终游戏目标是为每个工作人员分配一个唯一的 ip 并从用户代理池中提取。为此创建逻辑我仍然保持乐观,但授权代理目前正在踢我。

正如你所知道的,我对这一切都很陌生,并且会感谢任何有关此特定问题的帮助和示例。

谢谢!

编辑:下面接受的答案不正确。无法重现以下解决方案。仅将具有授权的代理分配给驱动程序。仍然无法将代理和用户代理分配给同一个驱动程序。

任何帮助或方向将不胜感激。

EDIT.02:问题已解决。这从来都不是编码问题。服务器级别的新代理提供程序分配了覆盖上述脚本的默认 UA。一旦这个被删除,一切都很好。

4

1 回答 1

3

按所需功能分配用户代理

dcap = dict(DesiredCapabilities.PHANTOMJS)           
dcap["phantomjs.page.settings.userAgent"] = (
    "Your User Agent String here . . .")

在此处找到代理授权的 API 参考
将“--proxy-auth=username:password”添加到 server_args。喜欢 。. .

service_args = [
    '--proxy=xxx.xxx.xx.xxx:xxxx',
    '--proxy-auth=username:password',
    '--proxy-type=http',
    ] 

然后在启动 webdriver 时同时使用

driver = webdriver.PhantomJS(desired_capabilities=dcap,service_args=service_args)

这解决了我所有的问题。

编辑:无法重现解决方案。上述方法仅更改代理。

EDIT.02:问题已解决。这从来都不是编码问题。服务器级别的新代理提供程序分配了覆盖上述脚本的默认 UA。一旦这个被删除,一切都很好。

于 2013-06-15T16:21:30.170 回答