Google、ChromeでUser Agent文字列を凍結する計画 53
抜け道ができそうではある 部門より
headless曰く、
GoogleがChromeブラウザーでUser Agent文字列(UA)の凍結を計画しているそうだ(Googleグループ、Chrome Platform Status、Windows Central)。
WebブラウザーのUAは「Mozilla/5.0」「KHTML」「like Gecko」といった現在では特に意味のない情報が含まれる一方、ブラウザーバージョンやOSバージョンなどフィンガープリンティングに使われる可能性のある情報も含まれる。モバイル版ChromeではOSビルド番号も含まれていたが、iOS版ではChrome 69、Android版ではChrome 70で削除されている。また、Googleのサービスを含めUAによってブロックされたり、正常に表示されなかったりすることもある。そのため、VivaldiはChromeと同じUAに切り替えており、Chromiumベースの新Microsoft Edgeは接続先に応じてUAを切り替えて別のブラウザに偽装している。
UAの凍結は過去にSafariチームが試みているが、UAに応じたコンテンツのネゴシエーションに代わる方法がなく、一部の変更を取り消したという。Googleでは現在W3Cに提案しているUser-Agent Client Hints(UA-CH)がUA文字列の代替になると考えているそうだ。ChromeのUA凍結計画ではChrome 81で「navigator.userAgent」を非推奨とし、WebサイトがJavaScriptでUAを取得しようとするとコンソールに警告を出力する。Chrome 83ではWebブラウザのバージョンを凍結し、OSバージョンを統合する。9月中旬に安定版リリース予定のChrome 85ではデスクトップOSを示す文字列をデスクトップ版Webブラウザを示す共通のものにし、モバイルOS/デバイスを示す文字列は画面解像度ごとに共通化するとのこと。
UA凍結について、Safariは上述の通り既に実施しているが、MicrosoftやMozillaも支持しているそうだ。ただし、MozillaではFirefoxへのUA-CH実装に消極的なようだ。
昨年Googleは「Privacy Sandbox」の構想を発表した際、サードパーティーのトラッキングcookieをブロックするとフィンガープリンティングなど不透明な手法の利用が進んでプライバシーがかえって低下すると述べていた。また、先日Chromeでのサードパーティーcookie廃止計画を発表した際にも、同様の説明を繰り返している。
これは仕方ない (スコア:2, 参考になる)
Vivaldiのリンク先の例を読むと、User Agent偽装がはびこっても仕方ないと言わざるを得ない。
Here are just a handful of current examples:
On Google.com if you present a Vivaldi user agent and arrive via a redirect, the search text box will be misaligned
On Google Docs if you present a Vivaldi user agent you will receive a warning
On Facebook’s WhatsApp web interface if you present a Vivaldi user agent, you cannot enter the site and are advised to switch to one of our competitors
On Microsoft Teams (chat and collaboration website), presenting a Vivaldi user agent will stop you from being able to use the website
On Netflix, presenting a Vivaldi user agent results in a suggestion to install Silverlight to play videos… yes… really… Silverlight!
Silverlightは笑う。
かといってGoogleのUser-Agent Client Hintも、仕様書を読む限り仰々しく仕様化されたUser Agentに過ぎず、まったく解決になっていないように思う。
根本的には、機能単位での照会インターフェイスを提供するのが解決策だと思う。
Re:これは仕方ない (スコア:1)
> 機能単位での照会インターフェイス
Googleを含むすべてのブラウザーベンダーはそれを使えと事あるごとに言っているが、Googleを含むほぼすべてのwebサイト開発者が話を聞かないからしかたない。Googleが自分で言っていることすら守れないのは、つまりそのアプローチが非現実的だということを示している。
またDOMやSVGにはかつてhasFeatureという機能検出のためのメソッドが存在したが、無残に失敗して現在は常にtrueを返すだけのメソッドと化している。
Re: (スコア:0)
Vivaldiのリンク先の記事、記事の先頭に無意味なアイキャッチ画像載せてるけど、こういう文化って外国にも普通にあるんだな。
意識したことなかったけど、なんとなく日本のアフィブログの文化だと思ってた
Re: (スコア:0)
馬鹿げた変装だろ?俺もそう思うよ
って表明を画像1個で済ませてるんだと思うとアリ
正直に名乗って欲しい (スコア:0)
余分な情報は付けなくていいけど、「Chrome 81」だののブラウザ名とバージョン番号は正直に名乗って欲しいんだけど…。
UAによってブロックするアホが居るから偽装が横行するのは分かるが、本来はUAに応じて動きを変える必要があるから使ってるわけで、凍結というのは行き過ぎでは?
逆に言えば (スコア:1)
ブラウザ側のバグとか特殊仕様をカバーしようとするからいつまでも
それらが解消されないということもあるのでは?
ダメならとっとと捨てるか替えるか直すかしてくれと。
Re: (スコア:0)
「IEだけクソ仕様!」とか散々グチってきただろ
モダンになったからってCSSもDOMも挙動の違いが無くなったわけじゃないぞ
Re: (スコア:0)
未来に登場するものを含むありとあらゆるすべてのブラウザのそのバグと挙動をまとめた巨大なアカシックレコードでもあるならともかく
どう言い繕っても、UAに応じて動きを変えたい、なんて私はUAによってブロックするアホですという告白でしかないんだから。
Re: (スコア:0)
ユーザーを識別できるのはG..G1εだけで良かろうなのだぁ~!!
Re: (スコア:0)
UAに応じて動きを変えるのは、せいぜい携帯電話などのモバイルか、タブレットなのか、デスクトップPCなのかといった、
サイトを利用する上で操作性や見易さを配慮する必要のある場合に限定するべきなんじゃないかな。
同じ実行環境だけど、ブラウザーが異なるとサイトの挙動を変えなきゃならないというのは、W3Cの互換性からして変だと思う。
ましてや実行環境もブラウザーも同じ、ブラウザーのバージョンが違うことに合わせての挙動変更は、やり過ぎでしょう。
まだWebの仕様に対する解釈の揺らぎがあった黎明期ならばともかく…。
Re: (スコア:0)
outlook.com も、safariを名乗って使うと、全然違ったシンプルビューになり。
問題は JavaScript なんじゃないの。
Re: (スコア:0)
>同じ実行環境だけど、ブラウザーが異なるとサイトの挙動を変えなきゃならないというのは、W3Cの互換性からして変だと思う。
変な挙動だとは思うけど、そもそもUser-AgentやAccept-Languageによって返すコンテンツを変化させることを規格化したのはw3c
>まだWebの仕様に対する解釈の揺らぎがあった黎明期ならばともかく…。
中核機能の解釈揺れは減っても新しい機能がどんどん増えてるから、ブラウザごとの差異は今でも無視出来る問題じゃないと思う
Re: (スコア:0)
UA-CH を使うなら、そっちは正直に名乗るんでしょう。
クライアントに応じて条件分岐するにしても、より具体的な内容で分岐すべきかと思います。
c++で、コンパイラとそのバージョンで分岐するよりも、機能テストマクロで分岐するようなイメージ。(といっても伝わらないんだろうな)
それでも、挙動がバグってる系はバージョン番号で分岐する形で残るとは思いますが。
Re: (スコア:0)
正直に名乗ったところで中途半端な解決にしかならないんだよな。
どうせ世にあるブラウザすべてを判別することは不可能で、問題なくレンダリングや実行できるブラウザなのにサーバ側の持ってるリストにないというだけではじかれることになるから。
問題があるのはテキスト文字列で動作を切り替えようというすでに時代遅れの考えの方。
Re: (スコア:0)
宣言的な(いたる所で「より分かりやすい」との触れ込みで採用されるが、
100%数年で消え去る、実証された筋の悪い)テキスト文字列で動作を。。。
の間違いでは?
Re: (スコア:0)
UAをパースして「このブラウザーならこの関数持ってそう」と判断するのではなく、実行時に実際にその関数が存在しているかを調べて、あれば呼ぶ、なければフォールバックするという実装にしなさいってことです
Re:正直に名乗って欲しい (スコア:1)
同じ関数で、片方がバグあり、片方がバグなしの時はどうするので?
Re: (スコア:0)
バグありの場合の回避手段があるなら、その回避手段の方をバグの有無に関係なく使えばいいじゃん。
無駄に二重実装する必要ない。
Re: (スコア:0)
代替実装は重かったり不完全だったりするからな、あくまで代替
でなきゃ最初からわざわざそんな面倒くさい真似しないっつうの
Re: (スコア:0)
「正直に名乗って欲しいんだけど(ブロックするから)」
で馬鹿正直に名乗るわけがないだろ
変更できるなら文句はない (スコア:0)
スマホ向けページの一覧性の悪さが気に入らなくてデスクトップ用UAにしているので、そのような切り替えに配慮してあるなら文句はない
Re: (スコア:0)
AndroidのChrome自体、PCサイトモードにする=デスクトップ用UAにする、という実装だから、大丈夫じゃない?
Re: (スコア:0)
中途半端なサイズのタブレット(tvdpi)でまともにブラウジングするために、
firefoxのアドオンでiPhoneのUAに偽装している
Android版ChromeってUAの偽装できないよね
アドオンも使えないし
いつかアドオンが使えるようにして欲しいんだが
凍結って (スコア:0)
どういう意味?
このままもうこれ以上変更しないと想像するんだけど、たぶんなくすって意味なんだよね?
Re: (スコア:0)
無くすことはないと思う。
UAをなくしたら互換性もなくなって、正しく動作しないサイトがウジャウジャ出てくるから。
互換性問題は甘く見ない方が良い。
偽装がはびこるそもそもの理由も互換性問題なわけだしな。
Re: (スコア:0)
ロボット扱いされて無視だな
お金が絡むシステムだとバージョンを含めてブラウザを限定する必要があることもある (スコア:0, 興味深い)
お金が絡むシステムだとバージョンを含めてブラウザを限定する必要があることがあります。
何故、UserAgentで制限する必要があるかといいますと、未知のブラウザでは正常動作が保証できないからです。
それでどんな問題が生じたかというと、過去に弊社が関わっていたシステムで生じた分かりやすい問題としては、
過去に主要ブラウザにて JavaScript の confirm や alert を複数回出すと、
「今後ダイアログボックスを生成しない」のようなチェックボックスが現れ、それにユーザがチェックを入れるとダイアログ等が表示されなくなる問題がありました。
しかも、当時は主要ブラウザの間で当該チェックボックスをチェックした際の挙動が異なり、confirm で自動的に false になるブラウザと true になるブラウザが混在するという大問題でした。
# ちなみに、最新版のGoogle Chromeではこういったチェックボックスは表示されなくなり、無限アラートの作成が可能に戻りました。
弊社の開発したシステムでは、このconfirm や alertで重要事項を告知して、ユーザに確認を求めていました。
このブラウザの自動アップデートのせいで、「○○とは聞いていなかった」とか「間違えって○○をタップしたら確認画面も表示されずにトランザクションが実行されたので返金しろ」とか苦情が来て、返金等の対応をせざるを得なくなりました。
重要事項はアラートだけで表示していたわけではないものの、電子消費者契約法における誤操作防止の確認画面や消費者契約法における重要事項の告知といった機能をもっていたアラートだったからです。
このようにブラウザによって重大な変更が勝手にされることもあるので、この事件のあとは、UserAgentの限定に加えて、新しいブラウザのβ版が出るたびの検証作業が必要になりました。
Re:お金が絡むシステムだとバージョンを含めてブラウザを限定する必要があることもある (スコア:2, 参考になる)
悪いのはブラウザじゃなくて仕様書を確認しなかった君
Re: (スコア:0)
J-STAGEがTLS仕様に反した変更を行ったせいでFirefoxから接続できなくなった件を思い出した。
科学技術振興機構の電子ジャーナルプラットフォーム「J-STAGE」では未だにFirefoxが非推奨
https://it.srad.jp/story/18/12/16/0458254/ [it.srad.jp]
そろそろ推奨ブラウザとか推奨バージョンとかやめる頃合いなんじゃないかな。
Re: (スコア:0)
ブラウザ側が独自の拡張機能付けたり勝手に挙動や仕様変えるようなことするのも問題かと
ウェブ開発側とブラウザ開発側で合議して仕様決めて、仕様外の挙動を一切認めないモードを作るぐらいしないとブラウザ判別、バージョン確認の需要は無くならないだろう
じゃないとJavaScriptを使わず処理は全てサーバー側で行うか、
全てのウェブブラウザを禁止にして自ら開発したアプリを使わせる仕様にするかしないと責任持てないかと
Re: (スコア:0)
そもそも、システムを開発した当時はW3C全盛期で、DTDもHTML 4.01 Transitionalを宣言していたんですよ
そのJavaScriptの動作がブラウザのアップデートで勝手にWHATWGの仕様になったわけですね
JavaScriptが動作しない環境への配慮が必要なのは当時でもそうでしたが
confirmやalertが素通り(表示されず)に、trueが返されるるというのは当時としては完全に予想外の動作です
HTML 4.01 の時代に、「将来はアラートを複数回表示させると今後表示しないというチェックボックスが出現するかもしれない」なんて未来の予測はほぼ不可能です
Re: (スコア:0)
2000年に勧告された XHTML ではないってことはそれ以前かな?
すると WHATWG もなかった時代の話で責任はないな
Re: (スコア:0)
こういちいち突っかかる言い方をする奴がスラドをつまらなくする。
Re: (スコア:0)
こういちいち突っかかる言い方をする奴がスラドをつまらなくする。
お前の価値観じゃん。
こういう自分の価値観を人に押し付ける奴が、この世界をつまらなくする。
Re:お金が絡むシステムだとバージョンを含めてブラウザを限定する必要があることもある (スコア:2)
お前の価値観じゃん。
こういう個人化、相対化を人に押し付ける奴が、この世界をめんどくさくする。
Re: (スコア:0)
お前の価値観じゃん。
こういう個人化、相対化を人に押し付ける奴が、この世界をめんどくさくする。
お前の価値観じゃん。
#こういう再帰構造を提示したくて書いたんだ。
#思い通りに動いてくれてありがとねw
Re:お金が絡むシステムだとバージョンを含めてブラウザを限定する必要があることもある (スコア:1)
ここまで問題になってるのに根本のUIを直さずにUAで制限するという明後日の対応になるのが逆にすごい。
Re: (スコア:0)
典型的な国産粗悪品ですわほんと
Re: (スコア:0)
そりゃ期間の問題でしょ
取り急ぎの対応としてはUA制限は確実性が高い
Re: (スコア:0)
これがスラド名物、書かれてないことを読み取れるエスパーでございます。
Re: (スコア:0)
複数回のalertが無視できるようになってたのはChromeからのユーザー離れを防ぐためだろ
それを重要な所に持ってくる反顧客設計が本番環境に出てしまうこと自体が開発体制として問題アリだと思う
Re:お金が絡むシステムだとバージョンを含めてブラウザを限定する必要があることもある (スコア:1)
複数回のalertが無視できるようになってたのはChromeからのユーザー離れを防ぐためだろ
Chromeの複数回のalertやconfirmが無視できる機能は、結局害の方が大きかったので廃止になりました。
Googleはこのように機能を追加したり削除したりとユーザをまるで実験台のように使用しているだけであって、ユーザ離れを防ぐ効果は無いでしょう。
ユーザビリティからしてもalertやconfirmが表示されたままの状態でタブを切り替えたり閉じたりできれば問題ありませんでした。
また、alertやconfirmを無視することで、Webサイトが機能不全になるだけでなく、ループが含まれる場合にJavaScriptの処理が無限ループしてCPUを消費してOS全体が重くなる場合まであり、弊害があまりにも大きかったのです。
Re: (スコア:0)
このようにブラウザによって重大な変更が勝手にされることもあるので、
とか言っておきながらUserAgentは不変と思い込んでいるのがなんとも。
大体IEですら当初からMozillaと偽装してた代物。
UserAgentでブラウザ識別出来ると考える奴はシステム設計しちゃダメだわ。
Re: (スコア:0)
こういうサイトがあるから
こっちはUA偽装しなきゃいけないわけで
プライバシーがかえって低下する (スコア:0)
実際広告業界でフィンガープリンティングに関する問い合わせがすごく増えてるって言ってるのをTwitterで見かけたし、Googleが気に食わなくてもこれは否めない
Microsoft の功績? (スコア:0)
ちょっと前までは、IEじゃないと見られませんというサイトが、それこそ国がやっているWebページでもあったわけで、そこではUAを見て弾いていたんだと思う。
ところが Microsoft Edge が Chromiumベース になれば、サイト制作側のスキル不足で表示や動作がおかしくなるという状況が、将来的に軽減されることが予想される(そうだといいですね……)。
もし Microsoft が自社の独自エンジンに拘ったままだったら、UA偽装の問題提起をしても現実的じゃない話になっていたのではないか、と思いませんか?
Re: (スコア:0)
世界統一国家の支配の下、世界共通言語で話す社会なんざ勘弁してくれって思うが、
アメカスとブリ屑はいい加減にヤードポンドやめろとも思うしなぁ
ブラウザはどっちなのか
しかし実装が一つしかないと、仕様と実装って概念を理解できないバカが溢れそうだ
Re: (スコア:0)
じゃあ、その「一つ」以外の実装を使うことから始めよう。
というか、度量衡をヤードポンドで実装するのも自由じゃないか。
SI系だけしかないと、仕様と実装って概念を(ry
Re: (スコア:0)
確定申告のために配信を3か月延期していますけどね
https://japanese.engadget.com/jp-2020-01-16-edge-4.html [engadget.com]
User-Agentの文字列変更(偽装)機能 (スコア:0)
……を全てのブラウザやツールに盛り込んだ方が早そう
適当な(有名ブラウザっぽい)文字列をランダムで返せばいいんじゃないの?
その昔IriaだかIrvineにはそんな設定があったような。