2019年11月10日日曜日

FireTV の WebView のユーザエージェントを調べてみた

概要

公式のドキュメントでは FireTV の WebView は Amazon WebView と呼ばれています
ユーザエージェントのサンプルも記載されているのですが気になったので実際にサーバにリクエストして確認してみました

環境

  • FireTV 3gen
  • macOS 10.15
  • Ruby 2.6.2p47

確認用アプリ

  • bundle init
  • vim Gemfile
gem "sinatra"
  • bundle install --path vendor
  • vim app.rb
require 'sinatra/base'
require 'net/https'
require 'json'

class TestWebApp < Sinatra::Base
  get '/' do
    @user_agent1 = request.env['HTTP_USER_AGENT']
    uri = URI.parse 'https://kaka-request-dumper.herokuapp.com/'
    http = Net::HTTP.new(uri.host, uri.port)
    http.use_ssl = true
    req = Net::HTTP::Get.new uri.request_uri
    res = http.request req
    @user_agent2 = JSON.parse(res.body)['headers']['HTTP_USER_AGENT']
    erb :user_agent
  end
end
  • vim config.ru
$stdout.sync = true
require './app'
run TestWebApp
  • mkdir views
  • vim views/user_agent.erb
<html>
  <head>
    <title></title>
  </head>
  <body text="#FFFFFF" style="padding: 30px;">
    <h2>user_agent1</h2>
    <div><%= @user_agent1 %></div>
    <h2>user_agent2</h2>
    <div><%= @user_agent2 %></div>
  </body>
</html>

ホスティング

  • bundle exec rackup config.ru -o 0.0.0.0

Web App Tester から IP でアクセスするためバインドする IP を外部からアクセスできるようにします

Web App Tester で確認

Web App Tester を起動してホスティングしているホストの「IP:9292」を入力して動作確認します
結果は以下の通りです

Mozilla/5.0 (Linux; Android 7.1.2; AFTN Build/NS6268; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/70.0.3538.110 Mobile Safari/537.36 cordova-amazon-fireos/3.4.0 AmazonWebAppPlatform/3.4.0;2.0

最後の部分が FireTV を特定しそうな文字列でした
WebView -> Ruby アプリのユーザエージェント (user_agent1) が上記になります
user_agent2 は確認用のアプリから外部のサーバにアクセスした際のユーザエージェントなのでそれはサーバのものになりました

おまけ: JavaScript だけで User-Agent を確認する方法

<html>
  <head>
    <title></title>
    <script type="text/javascript">
      function show_ua() {
        var ua = window.navigator.userAgent;
        document.getElementById("ret").textContent = ua;
      }
      window.onload = show_ua;
    </script>
  </head>
  <body text="#FFFFFF" style="padding: 30px;">
    <h2>User Agent</h2>
    <div id="ret"></div>
  </body>
</html>
  • docker run -d -p 80:80 -v $(pwd):/usr/share/nginx/html --name host nginx

最後に

FireTV の WebView のユーザエージェントを調べてみました
実際に外部のサーバから見えたユーザエージェントなので間違いないと思います
FireTV の OS のバージョンによってユーザエージェントの値も変わってくるので参考程度に見てください
実際の自身のデバイスを調べたい場合は同じようにアプリを立ち上げてみるのが良いと思います

0 件のコメント:

コメントを投稿