概要
公式のドキュメントでは 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 件のコメント:
コメントを投稿