楽天とライブドアが採用している、ユーザーのブラウザー履歴を利用する広告システム『ad4U』について

楽天やライブドアのページにアクセスすると、広告枠にバナーが表示される直前に一瞬、なんか数字のカタマリのようなものが表示されるのが気になっていました。

サブリミナル効果を狙ったなにかなのかと思っていたのですが、IT-PLUSの「行動ターゲティング広告はどこまで許されるのか」という記事で、ドリコムが開発した『ad4U』という広告配信システムがあることを知りました。どうやらそれが使われているページは、このような現象が起きるようです。


ad4Uとはドリコムによるターゲティング広告の一種で、ユーザーのブラウザーからアクセス履歴を取得し、ユーザーの特性を把握して、そのユーザーに合った広告を配信するシステムのようです。

たとえば、わたしが楽天にアクセスしたとします。楽天はわたしのブラウザーに「Yahoo!不動産」へのアクセス履歴があるかどうかをチェックし、あるのなら、「いまわたしは物件を探している」と判断し、不動産系の広告を表示する、という動きをします。


仕組み的には、数年前にいちどセキュリティーへの不安が議論になったことがあるもので、目新しくはありません。以下のようなものです。


(中略)


この仕組みは過去に議論になっていますし、海外のエロサイトでもすでにこの技術は使われているようですので(なぜ海外のエロサイトのことを知ってるの?という疑問についてはノーコメント)、ドリコムが特許を取得できてるとは思えません。楽天やライブドアの技術力をもってすれば、ドリコムに頼ることなくad4Uと同等の広告システムは開発できたと思われます。
それでも独自開発しなかったのは、リスク判断が行われた結果なのかな、とか思ったりもします。


ad4Uはセキュリティー的にどうなのか、という議論はあるでしょう。楽天に掲載されている説明文を読むと、ユーザーのブラウザー履歴データはサーバーに送信されることなく、広告配信までの処理はすべてクライアント側で行われているようではあります。
ただ「ブラウザーの履歴を勝手にチェックされ利用されている」というのがいい気分ではない、という意見があることは理解できる気がします。


ネット上では、「悪意のある者がこの仕組みを利用して悪事を働くことができるのでは」という理由から、この仕組みについてオープンにしてはいけない、といった意見が多いようです。

しかしわたしは、この件は隠し立てされることなくネット周辺でもっと情報が広まって議論され、その結果ブラウザーメーカーやセキュリティーソフトメーカーが判断して対応すればいいのかな、と思います。
すでに楽天やライブドアといった大手が採用している時点で隠し立てするのは無意味だと思われるからです。
それならば、(もし問題があるのなら)少しでも早くなにかしらの対策がなされるよう、オープンに議論したほうがいいのではないでしょうか。


追記(1/11 1:00):
ブラウザー履歴の取得方法やサンプルの掲載部分を“(中略)”としました。


【関連エントリー】
- へたれwebディレクターの覚え書き | webでのコラボは「機能の連動」が必要だ
- へたれweb-directorの覚え書き | livedoor Readerが今度はクリスマスモードに
- へたれwebディレクターの覚え書き | 地デジがWebの広告メディアとしての立場を変えるかも
- へたれwebディレクターの覚え書き | 情報の取捨選択
generated by 関連エントリーリストジェネレータ
日常生活 | comments (0) | trackbacks (0)

.htaccessでErrorDocumentを指定するときは相対パスで

自分用覚え書きです。タイトルで言い尽くしている気もします。


ちょっとSEOについて学んでいたりしたのですが、いまだに『Googleウェブマスターツール』を利用したことがないので、試してみることにしました。


しかし、Googleウェブマスターツールにこのサイトを登録する作業中、
「サイトを確認できませんでした。404 (ファイルが見つかりません) ページのヘッダーで 200 (ファイルが見つかりました)」
とのエラーメッセージが表示され、登録作業が完了しません。


ヘルプを見てみると
存在しない URL では 4xx ステータス コードを返すことが重要となります。存在しない URL に対して他のステータス コード (2xx や 5xx など) を返すよう設定されているサイトは、誰でもサイトの所有権を確認できてしまうため、Google でサイトの確認を行うことができません。

との記述が。


Live HTTP headersで、studio-no9.com上に存在しないURLにアクセスしとときのステータスコードを確認してみたところ、どうやら302が返されているようです。302は一時的リダイレクトが発生しているときに返されるコードですね(うろ覚えですが)。

URLが存在しないということを正しく(ややこしいですね)通知するなら404を返すべきなのですが。


原因ですが、レンタルサーバーやプロバイダーのwebスペースでは良くあることのようですが、存在しないページにアクセスしたときに、そのレンタルサーバーやプロバイダーのPRページにリダイレクトして表示することがあるようです。このサイトで利用しているBANANAサーバーも同じです。


404を返して欲しいので、.htaccessファイルに
ErrorDocument 404 http://www.studio-no9.com/sb/err/404.html

を設定します。


これでもまだ302を返します。


ここで自力解決はギブアップ。ネットで検索してみたところ、「御の字でございます」さんで以下のような記述を見つけました
チカッパやロリポップのレンタルサーバーは、存在しないURIにリクエストがあると302で広告ページにリダイレクトをかける。
.htaccessでErrorDocumentを「相対パス」で指定すると404のステータスコードを返す。


ということで今度は.htaccessファイルを、
ErrorDocument 404 /sb/err/404.html

に修正してみます。


これでアクセスしたところ、無事404ステータスを返してくれるようになり、Googleウェブマスターツールの使用も可能になりました。
解決です。


ついでに、『百式』さんで紹介されていた「Custom 404 pages」も採用してみました。


無事に動いているようです。良かった良かった。
存在しないURLを入力したときの表示例はこちら


まとめ


レンタルサーバーで404ステータスを正しく返してくれないときは、.htaccessで独自に用意した404ページを相対パスで指定してみるといい


【関連エントリー】
- へたれwebディレクターの覚え書き | PGでもSEでもないのにサイトを ...
- へたれwebディレクターの覚え書き | 他力本願でモバイル版『へたれ ...
generated by 関連エントリーリストジェネレータ
Web > PG | comments (0) | trackbacks (0)

mixiとYahoo! Daysで、編集途中の日記を自動保存しておくGreasemonkeyスクリプト

javascriptの勉強をしていて、自分への課題で作ったものを何となく公開します。
今回は「タイマーによる関数呼び出しを使う」、がテーマでした。


『mixi』と『Yahoo! Days』で、編集途中の日記を自動保存しておき、いちどブラウザを閉じても復帰できるGreasemonkeyスクリプト


タイトルが長いですね。おかげですべて説明しつくした気がします。

仕組み自体は相変わらずシンプルです。
  • 編集フォーム内でキーが押されたらその2秒後に編集途中のデータをローカルに保存する
  • 2秒のカウント中にさらにキーが押されたら、カウントを2秒前の状態にリセット
  • 日記編集が正常に終了(つまり日記投稿完了)したら、自動保存データをクリア
  • 日記編集画面表示時に、自動保存データがあるようなら、「復帰」というリンクをこっそりと追加

仕組みがシンプルなかわりに、ソースは初心者丸出しのスパゲッティかと思います(どのくらい効率悪いコードなのかも自分でよく分かっていない…)。

たぶんすでに誰かがもっと良くできたものを公開していそうな気もしますが、一応アップロードしておきます。

mixidiaryeditreminder.user.js(mixi用)
daysdiaryeditreminder.user.js(Yahoo! Days用)

なおDaysでは、単純にフォームの内容を保存すると復帰したときにエラーになってしまうため(フォームに貼り付けた画像の情報をDBと照合しているようです)、タグをすべて削った状態を自動保存するようにしています。そのため保存されるのはテキスト情報のみです。
「まあ、ないよりはいいよね」ということで許してください。


今回ハマったところ:iframe内の情報取得


初心者なわたしがハマったのなら、ほかの初心者な人も同様だろう、と思い覚え書きを残しておきます。

mixiの日記編集画面は単純なform - textareaタグで構成されています。そのため、編集中データの取得も
document.getElementsByTagName('textarea')[0]

こんな感じで簡単です。

Daysはさらに簡単で、textarea自体にid名“rteEditIframe”がつけられていたので
document.getElementById('rteEditIframe')
であっさり取得できる

…と思っていたのです、最初は。

でもまったく取得できず。

調べてみたところ、iframeの場合、
document.getElementById('rteEditIframe').contentWindow.document.body.innerHTML

のようにしないといけないのですね。

iframeの仕組みを考えれば当然なのですが、この部分だけで3時間くらいかけてしまいました…。

しかしそのおかげで、けっこう頑張ってソースを読んだことと(Daysのjsソースをみてiframe内情報の取得方法を知った)、“designMode”というものの存在を知ることができました。

怪我の功名です。


参考にさせていただいたサイト


Greasemonkeyの共通な落とし穴を避ける』(minghaiの日記さん)
を参考にさせていただきました。ありがとうございました。
Web > PG | comments (0) | trackbacks (0)

Yahoo!Daysの足あとページからスパマーを消すGreasemonkeyをちょっとだけ改良

10月12日のエントリー、「Yahoo!Daysの足あとページからスパマーを消すGreasemonkey」の続きです。


前回のスクリプトでは、自分とつながりのない訪問者のプロフィール画像とリンクを消して、名前を「GUEST」に書き換えているという処理をしていました。

がそれだと、コミュニティ経由で訪問してきてくれた人、つまりスパマーじゃない普通の人まで足あとから排除してしまいます。


その対策ということで、タイトル横に、スパマー候補(?)の表示と非表示を切り替えるリンクを加えてみました。
daysfootprintcleaner.user.js


どこかがクリックされたらGreasemonkeyスクリプトの関数を呼ぶ方法


今回、初心者なわたしを混乱させたのが、ページ上のどこかがリックされたらスクリプトの関数を呼び出す、という仕組みの部分。

クリックされたらfootprintToggle()という関数を呼び出すリンクを設置したいとき、よくあるやり方だと
<a href="javascript:footprintToggle()">テキスト</a>

だと思うのですが、Greasemonkeyではこのやり方がが使えなくて困りました。

手元に『Greasemonkeyスクリプティング TIPS&SAMPLES』という本もあったのですが、この件について特に触れているページは見つからず。



ネットをあさったところ、addEventListenerだと呼び出せるということが分かりました。
そこで今回は以下のようにしています。
// 画面にリンクを貼る
document.getElementsByClassName('mgc_title_func')[0].innerHTML = '<span style="color:#0000FF;text-decoration:underline;">切り替え</span>';

// グリモンがクリックでも起動するように頑張ってみる
var elmLink = document.getElementsByClassName('mgc_title_func')[0];
elmLink.addEventListener("click", footprintToggle, true);


本にまとめるのであれば、一般的なjavascriptとgreasemonkeyの相違点については確実に記載して欲しいなぁ、と思いました。


ちなみになぜこんな恥さらしなコードを公開しているかといいますと、コードを書けないわたしのような人のために会社のエンジニアさんが「初心者プログラム講座」を開いてくれまして、その成果物なのでした。
Web > PG | comments (0) | trackbacks (0)

Yahoo!Daysの足あとページからスパマーを消すGreasemonkey

(10/19追記)
改良したものを「Yahoo!Daysの足あとページからスパマーを消すGreasemonkeyをちょっとだけ改良」で公開しています。


ひっそりとYahoo! DaysというSNSを利用しているのですが、足あとページ(訪問者履歴ページ)にスパマーが多くて困っています。

ケータイ1台につき1アカウントのmixiと違い、Yahoo!はアカウント取り放題のため、スパマーが活動しやすいのですね。


そこで、スパマー自体を消すことはできないにしろせめて表示だけでも落ち着かそうと思いGreasemonkeyのスクリプトを作ってみました。

やっていることは単純で、自分とつながりのない訪問者のプロフィール画像とリンクを消して、名前を「GUEST」に書き換えているだけです。

自分とつながりのない人ならスパマーでなくても消してしまうのが仕様として厳しいのですが、javascriptの学習用に作ったというのを口実に許してください。


daysfootprintcleaner.user.js

getElementsByClassNameを利用しているので、Firefox3からでないと動かないかもしれません。


必要な方はご利用ください。

Web > PG | comments (0) | trackbacks (0)

XAMMP再インストールでMySQLが起動しなくなったら

自分が何度も引っかかるので、覚え書きを残しておきます。
なお、以下の記述はWindows XP professionalでのものです。


XAMPPを何度かインストール(アップデート含む)をしていると、MySQLが起動しなくなるときがあります。
古いバージョンのMySQLがサービスとして残っており、それが新しいバージョンとconflictを起こしていることが多いです。

その場合、古いMySQLのサービスを止めてしまえば正常に動作するようになります。


  1. コントロールパネルの「管理ツール」を選択
  2. その中の「サービス」を起動
  3. 「Mysql」をダブルクリック
  4. 表示されるダイアログボックス内の「実行ファイルのパス」がXAMPPをインストールした場所と違うことを確認(同じなら正常に上書きインストールができているので原因が別のところにある可能性が)

画面1・Windows XPのサービス管理画面(クリックで拡大)
  1. コマンドプロンプトを起動
  2. 現在XAMMPがインストールされているディレクトリに移動し、その中の「mysql\bin」に移動
  3. mysqld-nt --removeを実行

画面2・コマンドプロンプトでコマンドを実行
  1. XAMPPコントロールパネルからMySQLを起動

画面3・XAMPPコントロールパネルからMySQLを起動
これで無事に起動に成功しました。


ネット上では「mysqld-max-nt --removeを実行」と書かれている情報があったのですが、mysqld-max-ntといファイルが見つからなかったので、とりあえず「mysqld-nt --remove」を実行したらうまくいったので、もうこれでいいことにしてしまいます。


以上、自分用メモでした。
Web > PG | comments (0) | trackbacks (0)

Dreamweaverのテストサーバー機能を使うための設定

わたしはサイトの制作にDreamweaverを利用しています。

サイトの構築では、本番環境に反映する前のテストランは欠かせません。

企業でサイトを構築するときには、本番と同じ環境のテストサーバーをたてると思いますが、個人で作るサイトのためにそこまではできません。おそらくローカルでテストする場合がほとんどだと思います。

Dreamweaverには「テストサーバー」という設定項目があります。しかしこれの使い方の説明がマニュアルにあまり詳しい形で記載されておらず、市販の本でもほとんど触れられていません。

テストサーバー機能は、
  • レンタルサーバーを借りている
  • 自分用のドメインを利用している
  • PHP、MySQLを利用している
  • 本番サーバーにアップロードする前に、ローカルでテストしたい

上記に該当する人(要するにわたし)に便利な機能です。

先日、PCを再インストールしたときにテスト環境も再構築しました。そのときのメモを自分用の覚え書きとして載せてみます。

なお、以下の記述はWindows XP professionalでのものです。環境により、異なる点はあると思います。

ファイルを変更するときは、その前にバックアップを必ず取りましょう。また、下記の作業をされる方は、自己責任でお願いします
続きを読む>>
Web > PG | comments (2) | trackbacks (0)

BANANAサーバー