残念ながら引用だけなんですけどね。
オリジナル
require 'watir-webdriver' capabilities = Selenium::WebDriver::Remote::Capabilities.phantomjs("phantomjs.page.settings.userAgent" => "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1468.0 Safari/537.36") driver = Selenium::WebDriver.for :phantomjs, :desired_capabilities => capabilities browser = ::Watir::Browser.new driver # Quick test to make sure it's set browser.goto 'http://www.useragentstring.com/' browser.textarea(:id => "uas_textfeld").value # => "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1468.0 Safari/537.36"
後半の
http://www.useragentstring.com/
は、User-Agentの確認が出来るサイトです。
やってみる
User-Agentは"Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac OS X; en-us) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53"にします。
これはChrome(はてダ作成時はバージョン34)のEmulationでDeviceをiPhone 5にすると設定されるUAです。
ではpryします。
pry(main)> require 'watir-webdriver' => true pry(main)> capabilities = Selenium::WebDriver::Remote::Capabilities.phantomjs("phantomjs.page.settings.userAgent" => "Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac OS X; en-us) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53") => #<Selenium::WebDriver::Remote::Capabilities:0x007ffc235937e8 @capabilities= {:browser_name=>"phantomjs", :version=>"", :platform=>:any, :javascript_enabled=>true, :css_selectors_enabled=>true, :takes_screenshot=>true, :native_events=>false, :rotatable=>false, :firefox_profile=>nil, :proxy=>nil, "phantomjs.page.settings.userAgent"=> "Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac OS X; en-us) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53"}> pry(main)> driver = Selenium::WebDriver.for(:phantomjs, desired_capabilities: capabilities) => #<Selenium::WebDriver::Driver:0x..fd893634c9bbd5460 browser=:phantomjs> pry(main)> browser = Watir::Browser.new(driver) => #<Watir::Browser:0x12d823457a844410 url="about:blank" title="">
設定できました。
では確認します。
pry(main)> browser.goto 'http://www.useragentstring.com/' => "http://www.useragentstring.com/" pry(main)> browser.textarea(:id => "uas_textfeld").value => "Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac OS X; en-us) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53"
設定通りです。上手く行きました。
参考資料
歌うキツネ : User-Agent (ユーザー エージェント) 一覧
http://s-ej.com/glossary/useragent.html
- スマートフォン・携帯判定/ユーザーエージェント
- ガラケーUAへのリンクが載ってます
- UserAgentString.com - List of User Agent Strings
- 情報すこし古め
おまけ
PhantomJSのメモいろいろ - console.lealog();
「UserAgentを偽装する」の段落でPhantomJSのUserAgent設定方法が載っている。
page.settingsに設定
// var page = require('webpage').create(); page.settings = { userAgent: 'Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A403 Safari/8536.25' };
PhantomJS本体での設定箇所のうち
page.settings = {userAgent: 'Agent'}
の部分が
Selenium::WebDriver::Remote::Capabilities.phantomjs( "phantomjs.page.settings.userAgent" => 'Agent' )
に対応するわけですね。
2014/12/24追記
PhantomJS の設定については公式サイトに載ってました。
userAgent 以外の設定に関しても、本記事と同様にSelenium::WebDriver::Remote::Capabilities.phantomjs
の "phantomjs.page.settings.なんたら"
キーに値を設定して
driver = Selenium::WebDriver.for(:phantomjs, :desired_capabilities => capabilities) browser = Watir::Browser.new(driver)
とすればよいのでしょう(未確認