0
0

More than 3 years have passed since last update.

User AgentからAndroidの端末モデル名を取得

Posted at

趣旨

最近ユーザーエージェントが話題です。
流行に乗ってUser AgentからAndroidの端末モデル名を取得する方法を試してみました。
これで気になるあの子がどの端末を使っているかも丸わかり :dancer:

早速ですが、こちらです。

ua="{User Agent}"
echo $ua | sed -e "s/; wv//" |  sed -e "s/^.*; //"  | sed -e "s/ Build.*//" | sed -e "s/[)].*//"

具体的には、
; wv を空文字に置換
^.*;を空文字に置換
Build.*を空文字に置換
[)].*を空文字に置換

解説

AndroidのUser Agentは

Mozilla/5.0 (Linux; U; Android 8.0.0; {Model} Build/xxxx.xxxxxx.xxx; wv) AppleWebKit/....

みたいな感じ。
最初の()の中にある{Model}を取得したい。
ただし、この()が色々パターンがあって・・・

wsがついていなかったり
(Linux; U; Android 8.0.0; {Model} Build/xxxx.xxxxxx.xxx)
Build番号が入っていなかったり
(Linux; U; Android 8.0.0; {Model})
言語コードが入っていたり
(Linux; U; Android 8.0.0; ja-JP; {Model} Build/xxxx.xxxxxx.xxx; wv)

などなど
そこで・・・・

  1. ; wvを除去(2の処理でこの;が邪魔になるので)
  2. 先頭から;までを全部除去(これで先頭がModel名になるはず。Model以降に;が無いことを祈る(今の所無さそう))
  3. Build番号以降を除去→これでModel名だけ残る
  4. )以降を除去(Build番号がないケースの対応)

取得したモデル名を下記のページで照会すればブランド名も丸わかり :dancer:

おことわり

本来であればUser Agentの構文をちゃんと理解して着手するべきですが、脳みそが足らなかったので、実際のUAを眺めながら帰納的に対応。

どうせUAから取得する意味もなくなるし、もしかしたらもっと楽に取得できるのかもしれないですね。
https://wicg.github.io/ua-client-hints/#http-ua-hints

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0