ブックマーク / qiita.com/POPOPON (2)

  • 閲覧者のユーザーエージェントを三角関数で判定できるか? - Qiita

    概要 先日ふと自分のPCのフィンガープリントを取ってみたところ「IPアドレス」など様々な項目が並ぶ中に「Math.tan」という変な項目を見つけました。 「なぜ三角関数が出てくるの?」と気になって調べてみたところ、**三角関数の値はブラウザやOSの実装により微妙に異なることがあり、特定の式をブラウザに計算させることで利用者を識別する手段になり得る1**という話でした。 面白そうだなと思ったので、記事ではその手法で実際どの程度までブラウザ/OSを判別できるのか調査してみました。 検証方法 今回は様々な文献12の情報を参考に、以下の式を各OSの各ブラウザに計算させました。 tan(-1e300) cosh(10)(厳密には三角関数の類似ですが) これら以外も10数種類ほど試したのですが、判別に使えたのはこの2つのみでした。 試したOSとバージョン macOS Catalina (ver.10

    閲覧者のユーザーエージェントを三角関数で判定できるか? - Qiita
    tmatsuu
    tmatsuu 2021/04/11
    わいわい。面白い
  • console.log の落とし穴:console.log にはオブジェクトの参照が渡るので気を付けよう - Qiita

    TL; DR console.log()に大きなオブジェクトや配列を渡すと、console.log()を呼び出した時点での値ではなく、コンソールでそれをクリック展開した時点で評価した値が表示される。 もう少し詳しく console.log()に大きなオブジェクトを渡すとコンソール上で省略されて表示されますが、その省略表示を展開すると、console.log()が呼び出された時点の値ではなく、展開したその時点で評価した値が表示されます。 つまり例えばあるオブジェクトに操作を施す前にconsole.log()を取っていても、実行終了後のコンソールには操作を施した後のオブジェクトが表示されるということです。 要はオブジェクトへの参照を保持しているような挙動です(参考)。 例 (以下の例ではわかりやすさのため常に省略表示されるconsole.dirを使っています) obj.aをに値を代入する前後で

    console.log の落とし穴:console.log にはオブジェクトの参照が渡るので気を付けよう - Qiita
    tmatsuu
    tmatsuu 2019/06/02
    へー知らなかった
  • 1