imgタグを使ってCGIを起動する

CGIを起動させる方法として、ちょっと抜け道のような方法があります。

それは、imgタグを使ってCGIを呼び出す方法です。

imgタグというのは、画像を表示させるために使います。例えば、次のような感じですね。

<img src="abcd.jpg" />


ここでは、普通に画像ファイルを呼び出していますが、実は、ここで、次のようにして、CGIファイルを呼び出すことができるのです。

<img src="abcd.cgi" />

一部のアクセスカウンタやログ解析プログラムは、このような形でcgiプログラムを呼び出します。


例えば、前回紹介した、某会社の無料アクセス解析用のHTMLファイルです。

<SCRIPT LANGUAGE="JAVASCRIPT"><!--
var ID="XXXXXXXXX";
var AD=0;
var FRAME=0;
// --></SCRIPT>
<SCRIPT LANGUAGE="JAVASCRIPT"
SRC="http://j1.ax.xrea.com/l.j?id=XXXXXXXXX"></SCRIPT>
<NOSCRIPT>
<A HREF="http://w1.ax.xrea.com/c.f?id=XXXXXXXXX" TARGET="_blank">
<IMG SRC="http://w1.ax.xrea.com/l.f?id=XXXXXXXXX&url=X" BORDER="0">
</A></NOSCRIPT>

ここで、下から2行目の部分を見てみましょう。大きさ0の画像を表示していますよね?

(想像ですが)この部分でCGIプログラムを呼び出しているのだと思います。


このHTMLファイルの場合、JavaScriptが実行できればJavaScript経由でCGIが呼び出されるのですが、JavaScriptが使えないケースでもimgタグを通して、CGIを起動していると考えられます。


imgタグを使ってCGIを呼び出す方法のメリットとしては、下記の点があります。

  • 設置が簡単
  • CGIを必ずしも、自分のサーバに設置する必要がない

一方で、imgタグを使ってCGIを呼び出すデメリットとしては、下記の点があります。

  • 画像を読み込まない設定にしているブラウザからだとCGIが呼び出されない
  • HTMLソースを見れば、CGIを呼び出していることがわかってしまう
  • imgタグを使うだけでは、Referer(どのページのリンクからたどってきたか)のデータが取れない→とくに、アクセス解析では、この弱点は致命傷になります。

imgタグを使って、CGIを呼び出すというのは、あまり自然ではないので、個人的には、避けたほうが無難だと思います。

JavaScriptを使ってCGIを起動する

CGIを起動させる方法として、3番目に挙げられるのが、JavaScriptを使ってCGIを起動する方法です。

例えば、某無料アクセス解析ツールを使おうとすると、次のような文字をHTMLファイルに貼り付けるように言われます。

<SCRIPT LANGUAGE="JAVASCRIPT"><!--
var ID="XXXXXXXXX";
var AD=0;
var FRAME=0;
// --></SCRIPT>
<SCRIPT LANGUAGE="JAVASCRIPT"
SRC="http://j1.ax.xrea.com/l.j?id=XXXXXXXXX"></SCRIPT>
<NOSCRIPT>
<A HREF="http://w1.ax.xrea.com/c.f?id=XXXXXXXXX" TARGET="_blank">
<IMG SRC="http://w1.ax.xrea.com/l.f?id=XXXXXXXXX&url=X" BORDER="0">
</A></NOSCRIPT>

これは、JavaScriptを呼び出しているのですが、実は、このJacaScriptから、CGIが呼び出されているのです。

JavaScriptを使ってCGIを呼び出す方法のメリットとしては、下記の点があります。

  • 設置が簡単
  • CGIを必ずしも、自分のサーバに設置する必要がない

一方で、JavaScriptを使ってCGIを呼び出すデメリットとしては、下記の点があります。

  • JavaScriptが使えないユーザが来ても、CGIが呼び出されない
  • あえて、JavaScriptを使わないように設定しているユーザが来ても、CGIが呼び出されない(全ユーザの10%程度が、このような設定をしていると言われています)
  • JavaScriptはプログラムが誰からでも見えてしまうので、この部分で重要な処理をしていると、簡単にマネされる
  • SEO的には全く効果がない

ちなみに、私は、よほど見たいページでない限り、JavaScriptを使わない設定にしています。

そういうユーザ相手に、JavaScriptを使った無料アクセス解析を仕込んでいると、動きが全然つかめない・・・、なんてことになってしまうわけですね。

SSIを使ってCGIを起動する

CGIを起動させる方法として、2番目に挙げられるのが、SSIを使ってCGIプログラムを呼び出す方法です。

SSI(Server Side Include)とは、普通のHTMLでありながら、特定のタグを組み込むことで、一部分を動的なページにすることができる仕組みです。


SSIでCGIをよびだすためには、次のようなタグを書きます。

<--#include virtual="/cgi-bin/linkanalayze.cgi" -->

このvirtual="・・・"の部分に呼び出したいCGIプログラムを書くことで、CGIプログラムが呼び出されます。

このようにSSIを使ってCGIを呼び出す方法のメリットとしては、下記の点があげられます。

  • CGIが呼び出されていることがわからない。
  • 検索エンジンから見ても静的ページに見えるため、SEO的に有利

一方で、SSIを使ってCGIを起動するデメリットとしては、下記の点があります。

  • そもそも、SSIを使えるサーバが少ない
  • SSIを使うためには、普通にやるとファイル名を「・・・.shtml」というようにshtmlという拡張子をつけなければいけないため、ファイル名に違和感が残る
  • 自分のサーバにCGIを導入しなければいけないため、作業が面倒
  • サーバへの負荷が高い

私自身は、このSSIを使ったCGIの呼び出しを多用しています。

理由は、上にもかいたようにメリットが大きいからです。

  • SEO的に支障がない動的ページが作れる
  • ユーザにばれないでアクセス解析ができる

こんなことは、普通にやるとSSIを使わないとできません。

最近、PHPがはやっているせいで、SSIを使ったCGI呼び出しは急速にその存在感を失ってきているようです。でも、私自身は、まだまだ利用価値は高いと思いますよ。


もっとも、あらゆる技を駆使すれば、動的ページでかつSEO的に全く問題のないページを作ることもできます。初心者にはお勧めしませんが(^^)

CGIを直接起動する

CGIを起動させる方法として、一番簡単なのは、直接「XXXXX.cgi」というファイルを呼び出す方法です。


CGIを直接起動するメリットとしては、下記の点があげられます。

  • CGIを起動する方法の中では、一番ストレートでわかりやすい
  • CGIで柔軟な処理を行うことができる
  • 後ろに「?XXXX=XXXX」などといったパラメータを付加することで、様々な処理を行うことができる。

一方で、CGIを直接起動するデメリットとしては、下記の点があります。

  • SEO(検索エンジン対策:Search Engine Optimization)的に良くない場合がある。
  • CGIを起動していることが一目瞭然でばれてしまう。
  • 自分のサーバにCGIを導入しなければいけないため、作業が面倒

私の場合、直接CGIを起動する方法による場合、「SEO的に問題がある」という部分がいやなので、普通にファイルを表示する用途(掲示板等、HTMLファイルを表示するCGIとしての用途)では、このような形式は使いません。

一方で、外部へのリンクログをとる場合等、SEOを意識する必要がない場合には、この手法を積極的に取り入れています。

CGIの起動方法

CGIを起動させる方法には、様々な方法があります。

このうち、普通に行われている方法としては、下記の4つがあげられます。

  1. 直接「XXXXX.cgi」というファイルを呼び出す
  2. SSIを使って呼び出す
  3. javascript経由で呼び出す
  4. Imageタグを使って呼び出す

これらの方法には一長一短があります。


まず、CGIを使う人(ホームページ作成者)からすると、手間がかかるのは、1番目の直接「.cgi」というファイルを呼び出す方法と、2番目のSSIを使って呼び出す方法です。

これは、どちらも、自分のサーバにCGIを導入しなければならないため、どうしてもCGI導入という難しい作業をこなさなければならないのです。

逆に、3番目と4番目の方法は、必ずしも自分のサーバにCGIを導入する必要はないため、CGIの利用は比較的簡単です。

今度は、ホームページにアクセスしてきたユーザからみると、SSIを使ってCGIを呼び出しているもの以外は、CGIが呼び出されていることがわかります。

そのため、アクセス解析CGI等を仕込んでいる場合には、アクセス解析をしているな、ということがバレバレになってしまいます。

その点、SSIを使って、CGIを呼び出すと、CGIが呼び出されていることがユーザからは100%見えません。


私は、SSIを愛用しているのですが、その理由はこのあたりにあるんですね。

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は1年以上新しい記事の投稿がないブログに表示されております。