Hatena::ブログ(Diary)

Life like a clown このページをアンテナに追加 RSSフィード Twitter

2012-03-11

はてなブックマークボタンの種類(デフォルト or オプトアウト版)をチェックするツール

2012/03/13 18:24 追記

はてなより はてなブックマークボタンから収集した行動情報の第三者提供に関する公式回答 が掲載されました。それに伴って、公開していたチェック用ページ ( SoGap::Tools::HatenaBookmarkChecker ) にもその旨を記載しました。チェック用ページは、騒動が何らかの終息を迎えて必要なくなったと判断できたら削除する予定です。

本文

はてなブックマークボタンの行動履歴追跡クッキー問題まとめ【私家版】 を見ていると「一般ユーザはどちらのボタンかを区別するのが難しい」と言う話が目にとまりました。ソースコードを表示して検索するだけなのであまり気にしてなかったのですが、確かに分からない人にとっては判別のハードルが高くなるのかもしれません。

はてなブックマークボタンの行動履歴追跡クッキー問題まとめ【私家版】- NAVER まとめ

そんな訳で、ざっくりとですが、はてなブックマークボタンの種類(デフォルト or オプトアウト版)をチェックするツールを作成しました。

中身でやってる事は、b.st-hatena.com/js/bookmark_button.js と b.st-hatena.com/js/bookmark_button_wo_al.js がそれぞれいくつ存在するかを数えているだけです。

def check_hatena_bookmark(uri)
    dest = { :default => 0, :optout => 0 }
    parser = URI.parse(uri)
    
    http = Net::HTTP.new(parser.host)
    http.open_timeout = 10
    http.read_timeout = 10
    http.start { |session|
        path  = parser.path
        path += "?#{parser.query}" if (parser.query != nil && parser.query.length > 0)
        response = session.get(path)
        raise "指定された URL からデータを取得できませんでした。" if (response == nil || response.code.to_i >= 400)
        
        v = response.body.toutf8.scan(/<script\s+.*src=\"http\:\/\/b\.st-hatena\.com\/js\/bookmark_button\.js\".*?>/)
        dest[:default] = (v != nil) ? v.length : 0
        
        v = response.body.toutf8.scan(/<script\s+.*src=\"http\:\/\/b\.st-hatena\.com\/js\/bookmark_button_wo_al\.js\".*?>/)
        dest[:optout]  = (v != nil) ? v.length : 0
    }
    return dest
end

その他の対策

Related Pages