2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Web Beacon で情弱を消し去りたい

Last updated at Posted at 2017-12-08

この記事は私の所属する研究室,田胡研究室のアドベントカレンダー8日目の記事です.
adventar.org

はじめに

弊研では,情報の共有のツールとしてメーリングリストや Wiki を使用しています.
結構大事な情報を発信しているのですが悲しいことに見てないと言われることが多いんですよね...

そこで,どれくらいの人が情報をチェックしたかを調べる方法を求めてみました.(決して監視したいわけではありません!)
簡単にかけそうなものとして,Web Beaconを作って見ようと思います.

Web Beacon とは

原理は簡単です.
Wiki などに imgタグを仕込み,その画像データを返すサーバ上でHTTPヘッダなどの情報を抜くだけです.
アクセス時刻,端末,IP など以外にも多くの情報が抜きとれ 得られます.

実際に書いてみた

Rails アプリのコントローラー部分になります.Herokuで動かすとわりと一瞬で完成!!

beacon_controller.rb
require "json"

class BeaconController < ActionController::Base
  TRANSPARENT_GIF = "R0lGODlhAQABAPAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=="

  def get_log
    logs = {}
    request.headers.sort.map { |k, v|
      logs.store("#{k}","#{v}") unless Settings.accepts_headers["#{k}"]
    }
    params.delete(:action)
    params.delete(:controller)
    logger.info("#{Time.zone.now} #{logs.to_json} #{params.to_json}")
  end

  def show_gif
    get_log
    send_data(Base64.decode64(TRANSPARENT_GIF), type: "image/gif", disposition: "inline")
  end
end

show_gif 関数の部分がgifを返す関数でその中で時刻,Railsのログ,クエリ を出力する処理をするget_log関数を呼ぶだけです.
もっといろいろイタズラできそうですね.

本当は実行画面貼りたかった

家ネットが死んで繋げない!!!!
そのうち追記します...すみません

最後に

内容がないよ〜〜〜
研究室で動かす際にはLDAP名とって,Slackへ通知する機構まで備えたいですね...
これでメール見ない人を撲滅したいです(本音)

明日は,よく学校へ帰って行く @namazu510 さんの記事になります.
乞うご期待!!

2
2
1

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
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?