Google Analytics でソース IP アドレスが見れない
◆ ソース IP アドレスは扱えなくなってる
◆ カスタム変数という機能で JavaScript で取得したデータをアクセスデータに追加できる
◆ IP を取得する API を呼び出して 結果を送信すれば一応見れるようにはできる
◆ カスタム変数という機能で JavaScript で取得したデータをアクセスデータに追加できる
◆ IP を取得する API を呼び出して 結果を送信すれば一応見れるようにはできる
簡易なアクセス解析情報を見ていた時 ちょっと気になる部分があったので 特定のリクエストのアクセス元の IP アドレスを確認したかったのですが 簡易なものにはそこまでの情報は含まれていません
ウェブサーバにログインしてログファイルから探すのも面倒だなぁと思っていた時 そういえばこのサイトは Google Analytics を入れてたっけと気づきました
Analytics が入ってるんだし ログファイルを探すよりもとても快適で簡単に情報が見えるはずと期待して Analytics の画面を開きました
ただ いろいろな基準で集計した数値を見るのが目的なようで 特定リクエストを絞り込んでも そのリクエストの詳細な情報は見れないようでした
フィルタ機能で IP アドレスを指定すればいいかなと思ったのですが フィルタ項目に IP アドレスはありませんでした
集計時の group by に相当するディメンションというのがあり セカンドディメンションを指定することでも指定したデータを見れそうでしたが ここにも IP アドレスはありませんでした
あまり使わない項目だから隠されていたりでしょうか
カスタム変数というのがあったので マイナーな項目はここで設定できるのかなと思ったのですが そういう使い方をする機能ではないようでした
あれだけいろいろな情報があるのにソース IP アドレスなんて基本的なものを扱えないとは考えにくいので どこかにあるはずと思いググってみました
見つかった QA サイトによれば プライバシーを理由に見ることができなくされているそうです
地域で新宿とか横浜とか大阪というのは見れるのに IP アドレスは非公開というのは理解できません
IP アドレスを知ったところで一般人が具体的な住所の特定なんてできませんし
そもそも Analytics を設置できる時点で基本的にそのサーバを管理しているわけで 生のアクセスログを見れます
そこに当たり前のように表示されている情報なのになぜ隠すのでしょうか
ですが 自分で Analytics の設定で IP アドレスを取得させるようにしておけば取れなくもないです
さっき見たカスタム変数という機能は ページに埋め込む JavaScript で追加データをサーバに送るためのものでした
作るとこういうコードが表示されます
この dimensionValue の値を置き換えてサイト内に埋め込みます
ga という Analytics の関数を呼び出しています
JavaScript で自由にデータを取得して そのデータを Analytics の分析に使えるようです
ログインするシステムならユーザの ID をセットすれば アクセスがどのユーザによるものかもわかるみたいな使い方でしょう
JavaScript なので自由に処理できるのですが 自身の IP アドレスはブラウザ内で取得できるものではありません
しかし API としてリクエスト元の IP アドレスを返すサービスはいくつもあります
例えば httpbin を使うなら
という感じで IP アドレスを取得できます
これを dimensionValue に設定すれば ページにアクセスしたユーザが自分の IP アドレスを取得して Analytics に送信するということができます
ただ 本来ユーザ側で API を呼び出さないと取れないような情報ならともかく Analytics サーバにアクセスしている以上 IP アドレスは内部的には持ってるはずのデータです
それを取得するためにわざわざユーザに外部 API にアクセスしてもらって IP を取得して Analytics に送るなんてムダでしかないです
そんなことをしないといけないというのは釈然としません
それにこの方法では カスタム変数でデータを追加する JavaScript を設置した後のアクセスでしか IP アドレスはわかりません
それ以前のアクセスではデータが送られてきていないので IP アドレスはわからないままです
ウェブサーバにログインしてログファイルから探すのも面倒だなぁと思っていた時 そういえばこのサイトは Google Analytics を入れてたっけと気づきました
Analytics が入ってるんだし ログファイルを探すよりもとても快適で簡単に情報が見えるはずと期待して Analytics の画面を開きました
Analytics で IP アドレスが見れない
普段自分で見ないのですが 結構いろいろな情報が入っていて分析できるようになっていましたただ いろいろな基準で集計した数値を見るのが目的なようで 特定リクエストを絞り込んでも そのリクエストの詳細な情報は見れないようでした
フィルタ機能で IP アドレスを指定すればいいかなと思ったのですが フィルタ項目に IP アドレスはありませんでした
集計時の group by に相当するディメンションというのがあり セカンドディメンションを指定することでも指定したデータを見れそうでしたが ここにも IP アドレスはありませんでした
あまり使わない項目だから隠されていたりでしょうか
カスタム変数というのがあったので マイナーな項目はここで設定できるのかなと思ったのですが そういう使い方をする機能ではないようでした
あれだけいろいろな情報があるのにソース IP アドレスなんて基本的なものを扱えないとは考えにくいので どこかにあるはずと思いググってみました
見つかった QA サイトによれば プライバシーを理由に見ることができなくされているそうです
地域で新宿とか横浜とか大阪というのは見れるのに IP アドレスは非公開というのは理解できません
IP アドレスを知ったところで一般人が具体的な住所の特定なんてできませんし
そもそも Analytics を設置できる時点で基本的にそのサーバを管理しているわけで 生のアクセスログを見れます
そこに当たり前のように表示されている情報なのになぜ隠すのでしょうか
一応できなくもない
標準機能では取得できていない というか Analytics のサーバにアクセスしている以上内部的には保存されてはいるものの ユーザには公開されていないですですが 自分で Analytics の設定で IP アドレスを取得させるようにしておけば取れなくもないです
さっき見たカスタム変数という機能は ページに埋め込む JavaScript で追加データをサーバに送るためのものでした
作るとこういうコードが表示されます
var dimensionValue = 'SOME_DIMENSION_VALUE';
ga('set', 'dimension1', dimensionValue);
この dimensionValue の値を置き換えてサイト内に埋め込みます
ga という Analytics の関数を呼び出しています
JavaScript で自由にデータを取得して そのデータを Analytics の分析に使えるようです
ログインするシステムならユーザの ID をセットすれば アクセスがどのユーザによるものかもわかるみたいな使い方でしょう
JavaScript なので自由に処理できるのですが 自身の IP アドレスはブラウザ内で取得できるものではありません
しかし API としてリクエスト元の IP アドレスを返すサービスはいくつもあります
例えば httpbin を使うなら
(await fetch("https://httpbin.org/ip").then(x => x.json())).origin
// '100.100.100.100'
という感じで IP アドレスを取得できます
これを dimensionValue に設定すれば ページにアクセスしたユーザが自分の IP アドレスを取得して Analytics に送信するということができます
ただ 本来ユーザ側で API を呼び出さないと取れないような情報ならともかく Analytics サーバにアクセスしている以上 IP アドレスは内部的には持ってるはずのデータです
それを取得するためにわざわざユーザに外部 API にアクセスしてもらって IP を取得して Analytics に送るなんてムダでしかないです
そんなことをしないといけないというのは釈然としません
それにこの方法では カスタム変数でデータを追加する JavaScript を設置した後のアクセスでしか IP アドレスはわかりません
それ以前のアクセスではデータが送られてきていないので IP アドレスはわからないままです