◆うちのこ◆

うちのこは、swfファイルを無断転載・直リンクから保護するための配布スクリプトです。
利用には注意すべき点がたくさんあるので、必ず説明を読んでから利用してください。
また、いくつかの設定を状況に合わせて変更できます。
(この場合の「保護する」とは、「転載・直リンを不可能にする」という事ではなく、「転載・直リンされた場合はFlashを再生させない」=「転載・直リンする意味を無くす」という事です。)


index - / 履歴 / 動作サンプル / 効果とメリット・デメリット / 注意事項 / 導入手順 / 設定 /


履歴

ver.100504 ローカルでの動作テストに対応
ver.070623 許可アドレスでのワイルドカードの使用に対応
ver.070226 自作CGIへのデータ送信に対応
ver.070212 Mozilla系ブラウザに対応
ver.061125 スクリプトの記述ミスを修正
ver.061124 初期バージョン

動作サンプル

チェック終了後、Flash内をクリックすると、本編のサンプルに移ります。
(設定により、チェック画面非表示、また自動的に本編に移行できます。)

サンプルの扱いについて

このサンプルのswfファイルは、うちのこの効果を確認する目的でのみ、ご自由に扱って頂けます。 このファイルを別のサーバーに転載できるかどうか、またこのファイルに直リンクできるかどうか実験してみてください。
ただし、確認後は必ずサーバーから削除、また直リンクを削除するようお願いします。
万一、転載・直リンクしているにもかかわらず、「problem was not fouond.~」と表示される場合、その状況を添えてnowloまでご連絡ください。

Download : [sample.swf] (右クリックで保存)

効果とメリット・デメリット

うちのこ導入により期待できる効果

うちのこ導入のメリット

うちのこ導入のデメリット

注意事項

導入手順

スクリプトファイルの準備

  1. まずはスクリプトファイルをダウンロードして、解凍します。
    Download : [uchinoko.zip]
  2. Flashのソースファイル(.pfl .fla 等)を開き、2フレーム目にスクリプトファイル「uchinoko.as」を読み込みます。
    ParaFlaの場合は、pflと同じフォルダにuchinoko.asを置き、メインイベントの【フレーム2】で[アクションを挿入(スクリプト)]→[スクリプトを編集]→スクリプトエディタに「#FILE "uchinoko.as"」と書く→[適用]とします。(ロード画面を設定している場合、イベントリストは【フレーム2】から始まるので注意してください。)
  3. uchinoko.asをメモ帳等のテキストエディタで開きます。
  4. 9行目、12とある所を、Flashのfpsと同じ数値に書き換えます。
  5. 12行目、"uchinoko"とある所を、必要があれば任意のオブジェクト名に書き換えます。
    よくわからなければ、このまま書き換えなくても問題ありません。
  6. 16行目、http://~/とある所に、Flashの再生を許可するアドレスを前方一致で入れます。 改行して複数のアドレスを指定できます。
    基本的に、自分のサイトのインデックスページのアドレスを入力すればOKです。
    ※blog等のウェブサービスは、ファイルの置き場所が別になっている場合があるので注意が必要です。
  7. ファイルを上書き保存して、閉じます。

HTMLファイルの修正

「無断転載」のみを防止したい場合は、この準備は必要ありません。直リンクのチェックを行わないように設定を変更するだけでOKです。

「直リンク」を防止したい場合、HTMLも修正する必要があります。
※注意: スクリプトファイルの準備5 でオブジェクト名を変えた場合、uchinokoとある部分をそのオブジェクト名に置き換えて読んでください。

  1. HTMLファイルをエディタで開きます。
  2. bodyタグを、以下のように書き換えます。
    <body onLoad="window.document.uchinoko.SetVariable('_root.complete','OK');">
    
  3. Flashを呼び出すobjectタグに、「id="uchinoko"」を書き加えてください。
    例:
    <object id="uchinoko" classid=~~~>
    
  4. Flashを呼び出すembedタグに、「name="uchinoko"」を書き加えてください。
    例:
    <embed name="uchinoko" src=~~~>
    
  5. ファイルを上書き保存して、閉じます。

動作の確認

ここまでで最低限必要な準備はできました。
ひとまず、正常に動いているか確認してみましょう。

  1. uchinoko.asをエディタで開きます。
  2. 25行目あたりの、チェック画面を表示 [1:する/0:しない] という部分を探します。
  3. そこの最初の設定項目「pSWF.log_view」の値を1にします。
    //チェック画面を表示 [1:する/0:しない]
    	pSWF.log_view = 1;
    	pSWF.autoplay = 0;		//自動再生(チェック画面非表示時は設定無視)
    	pSWF.log_size = 11;	//文字サイズ
    	pSWF.log_txt = 0xffffff;	//文字色
    	pSWF.log_bg = 0x000000;	//背景色(背景なしの場合は"none")
    
  4. ファイルを上書き保存して、閉じます。
  5. うちのこを導入したFlashファイルを生成(パブリッシュ)します。
  6. swfファイルとhtmlファイルを自分のサイトにアップロードし、ブラウザでアクセスしてみます。
  7. このページのサンプルのような「黒背景+白文字」の画面が出れば、正常に導入できています。

設定

スクリプトの先頭部分を編集して、設定を変更できます。
項目によっては弊害が生じる場合もあるので、よく読んで設定してください。
スクリプトファイルの上にあるものから順に説明していきます。

FlashのFPS

うちのこを導入するFlashのFPSを設定します。
待機時間をセットする目安に使います。

オブジェクトID

HTML側で指定する必要がある、オブジェクトIDを設定します。
ここで決めたIDを、HTMLにも記述する必要があります。導入手順を参照してください。
また、同一ページに複数のFlashを配置し、いずれもうちのこを適用する場合は、それぞれ別のIDを設定する必要があります。

再生許可アドレス

Flashの再生を許可するアドレスを、改行で区切って指定します。
swfファイルのアドレスと、表示するページのアドレスを指定しておく必要があります。
転載チェックのみ行い、直リンクをチェックしない場合は、swfファイルのアドレスだけでOKです。
前方一致でチェックするので、多くのサーバーの場合はインデックスとなるディレクトリを指定しておけば問題ないと思います。
また、ワイルドカードとして「*」の記号を使用できます。ただし、ディレクトリ(スラッシュ記号"/")をまたぐような使い方はできません。

(例)http://www.hoge.info/user/ID/flash/
(正) → http://*hoge.info/user/ID/flash/ http://*/user/ID/*/ http://*/*/ID/flash/
(誤) → http://*/ID/flash/ http://*hoge.info*ID/flash/

また、アドレスにチルダ(~)が含まれている場合、ブラウザによっては%7Eまたは%7eに変換されてしまいます。
すると正しいアドレスでも再生できなくなってしまうので、以下のように設定してください。

(例)http://www.hoge.info/~ID/ の場合
   http://www.hoge.info/~ID/
   http://www.hoge.info/%7EID/
   http://www.hoge.info/%7eID/

このように3つのアドレスを指定すると、大丈夫だと思います。

チェック項目

◆無断転載のチェック
c_reprintの値を1にすると、swfファイル自体の場所をチェックします。
◆直リンクのチェック
c_directの値を1にすると、swfファイルが呼び出された場所をチェックします。
このとき、JavaScriptを使用して場所を調べるため、ブラウザがJavaScriptを強く拒否する環境では正常なチェックができず、不正なアドレスと判断されることがあります。また、HTMLでのオブジェクトIDの記述が不正確だった場合や、Web上のswfファイルに直接アクセスされた場合にも、不正なアドレスとして扱われます。
◆ページの読み込みチェック
c_completeの値を1にすると、ページを完全に読み込むのを待ってからチェックを行います。
これは、直リンクをチェックする際にブラウザによってはページの読み込みを中止してしまうことがあるため、それを防ぐべく設定するものです。
c_directを1にするのなら、c_completeも1にすることを推奨します。
それでもc_completeの値を0にする場合、ページの読み込みが中止されてしまったら、リロードすると正常に表示できることがあります。

チェック画面を表示

チェック中の画面についての設定をします。
autoplayの値を1にすると、チェック終了後問題がなければ自動的に再生を開始します。
autoplayの値を0にすると、チェック終了後、画面クリックまたはいずれかのキーを押すまで、チェック画面を表示したまま停止します。
log_viewの値が0のときは、autoplayの設定に関係なく、チェックが終わり次第再生されます。
ただし、チェックに引っかかって再生できない場合は再生されず、その画面のまま停止します。

待機時間の目安

各待機時間の目安を秒で指定します。特に変更の必要はありません。
時間はFlashのFPSを基に算出するので、あくまで目安です。
ページを完全に読み込むまでの待機時間を過ぎると、まだページが読み込み中であっても処理を続行します。

再生拒否時の動作選択

許可しないアドレスでFlashが呼び出された場合に、どんな動作をするのか指定します。

動作1のジャンプ先

再生拒否時の動作で1を選択した場合の、ジャンプするアドレスを指定します。
ここで何も指定しないと、「再生許可アドレス」で指定した一番最初のページが自動的にジャンプ先アドレスに設定されます。
act1_addurlの値を1にすると、指定アドレスの末尾に「SWFファイルのアドレス」を付加してジャンプします。
ジャンプ先にCGIを設置し、"http://~~/error.cgi?URL="のように引数を設定してアドレスを指定しておけば、転載されたアドレスをCGIに渡すことができます。
直リンクの場合は正規のアドレスが渡されますが、どのSWFファイルに直リンクされているのかは知ることができます。

動作2のメッセージ内容

再生拒否時の動作で2を選択した場合の、メッセージや配色を指定します。
改行したい場合は\nを使ってください。

不正なアドレスの場合、CGIにデータを送信する

URLチェックに引っかかった場合に、別途用意した自作のCGIにそのアドレスを送信します。
CGIに渡される変数は、「fileurl(swfファイルの場所)」と「pageurl(表示したページ)」の2つです。 ただし、表示したページのアドレスは、かなり限られた状況でないと取得できません。
また、この場合おそらく外部のサーバーからCGIが呼び出されることになるため、 CGIを設置したディレクトリにポリシーファイルを配置する必要があります。
そのファイルの場所をpolurlで指定してください。
なお、ポリシーファイルで全てのドメインからのアクセスを許可するよう設定することになるので、 ポリシーファイル及びCGIの設置場所は十分考慮してください。
よくわからない場合は、セキュリティ上やめておいた方がいいと思います。