如何为工作人员分配需要用户名的代理 - 密码和自定义用户代理?

时间:2013-06-14 21:52:31

标签: python-2.7 selenium-webdriver phantomjs gevent ghostdriver

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

我在创建遍布测试网站的许多工作人员方面取得了很大的成功。我还可以分配不需要授权的用户代理或代理。但我还没弄明白如何同时对同一个工人做两件事。

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

球员: Selenium 2.33.0 / PhantomJS 1.9.1 / Python 2.7.3 / Ubuntu 12.04

我: NUBE。 Python周,Linux天,Selenium小时,PhantomJS - =,SO首发

搜索结果: How do I set a proxy for phantomjs/ghostdriver in python webdriver?

答案实际上可能存在于我和其他许多地方,我已阅读并重新阅读,但我无法将这些点连接到目前的水平。

使用此方法解决了用户代理。

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. 将自定义用户代理分配给同一工作人员。
  3. 使用Selenium,PhantomJS驱动程序和Python绑定。

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

    正如你所知,我对这一切都很陌生,并希望对这个特殊问题有任何帮助和例子。

    谢谢!

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

    非常感谢任何帮助或指示。

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

1 个答案:

答案 0 :(得分:3)

按所需功能分配用户代理

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

Found API Reference here for the proxy authorization
将“--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,它覆盖了上述脚本。一旦删除,一切都很好。