Elixir&猎犬无头浏览器

时间:2014-08-24 22:39:21

标签: browser elixir headless hound

当您需要无头浏览器时,

Hound非常适合测试网络应用等。我得到了它的工作,玩了测试等但有2个关于猎犬的问题,也许有人可以解释谁熟悉Elixir:)

1。)我正在使用PhantomJS的远程WebDriver模式(localhost上为phantoms -w)。我已经设置了配置:猎犬,驱动程序:" phantomjs"'在config.exs中这样一个简单的" navigate_to @url“启动一个PhantomJS实例并正常工作。现在我想要更改此请求的HTTP用户代理字符串。 PhantomJS提供此page.settings哈希。在远程WebDriver模式下对本地PhantomJS运行上述请求会显示以下设置:

[INFO  - 2014-08-24T21:54:00.232Z] Session [27b92460-2bd9-11e4-a77f-1daa5df28587] - 
page.settings - {"XSSAuditingEnabled":false,"javascriptCanCloseWindows":true,"javascriptCanOpenWindows":true,"javascriptEnabled":true,
"loadImages":true,"localToRemoteUrlAccessEnabled":false,
"userAgent":"Mozilla/5.0 (Macintosh; PPC Mac OS X) AppleWebKit/534.34 (KHTML, like Gecko) PhantomJS/1.9.7 Safari/534.34","webSecurityEnabled":true}
[INFO  - 2014-08-24T21:54:00.232Z] Session [27b92460-2bd9-11e4-a77f-1daa5df28587] - page.customHeaders:  - {}
[INFO  - 2014-08-24T21:54:00.232Z] Session [27b92460-2bd9-11e4-a77f-1daa5df28587] - Session.negotiatedCapabilities -
{"browserName":"phantomjs","version":"1.9.7","driverName":"ghostdriver","driverVersion":"1.1.0",
"platform":"mac-unknown-64bit","javascriptEnabled":true,"takesScreenshot":true,"handlesAlerts":false,"databaseEnabled":false,
"locationContextEnabled":false,"applicationCacheEnabled":false,"browserConnectionEnabled":false,"cssSelectorsEnabled":true,
"webStorageEnabled":false,"rotatable":false,"acceptSslCerts":false,"nativeEvents":true,"proxy":{"proxyType":"direct”}}

问题是:如何更改上面的userAgent?我没有找到任何与之相关的例子。我知道如何将PhantomJS实例作为CLI工具直接运行并使用相应的JS配置,但不确定,猎犬如何管理它。

2。)我还需要使用带有身份验证的HTTP代理。与1相同。我知道如何处理从命令行启动PhantomJS,但是在猎犬顶部运行它们的正确位置是什么?

2 个答案:

答案 0 :(得分:1)

您应该将map作为additional_capabilities参数传递给任何启动会话的函数。

Hound.start_session(%{userAgent: "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36"})

对于代理选项,该值应该是具有属性的另一个地图。

Hound.start_session(%{proxy: %{property: "parameter", property: "parameter"}})

我从未将它与代理一起使用,因此我不确定如何正确配置它。

答案 1 :(得分:1)

我花了很多时间试图让这个工作。 cevado的答案对我没有用,但我可以通过设置以下内容来设置用户代理。

Hound.start_session(%{"phantomjs.page.settings.userAgent" => "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36"})

希望这有帮助。