連続アクセスを規制する方法

このQ&Aのポイント
  • 掲示板のページで何度も連続アクセスする人を規制する方法を知りたいです。
  • 10秒中に5回以上連続アクセスをしたら30秒間『連続アクセスはおやめ下さい』と表示する機能を掲示板のCGIに組み込みたいです。
  • ニコニコ動画での連続アクセス規制のような機能を掲示板に導入したいです。
回答を見る
  • ベストアンサー

連続アクセスを規制したい

HPで掲示板のCGIを使っているのですが、まれに掲示板のページで何回も連続アクセスする人がいるようで、たまに掲示板が重くなって困っております。(私へのいやみのF5連打?) そこで、10秒中に5回以上連続アクセスをしたら30秒間くらい『連続アクセスはおやめ下さい』と表示する機能を掲示板のCGIに組み込みたいと思っております。 しかし、そのようなプログラムがなく、困っております。 ちなみに、ニコニコ動画でも何度もF5キーを連打するとしばらく ニコニコ動画からのお願い 短時間での連続アクセスはご遠慮ください 混雑緩和のため、皆様のご協力をお願いします とでますが、そんな感じをイメージしております。 どのような文を書けばよいのでしょうか?ご伝授いただけると幸いです。

  • CGI
  • 回答数1
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

色々な方法があると思いますが、cookieを使う方法です。 cookieが無効の場合には機能しませんが・・・ #!/usr/bin/perl use strict; use CGI::Carp qw(fatalsToBrowser); use CGI; my $cgi = new CGI; #cookie(access_log)の取得 my @access_log=split(/,/,$cgi->cookie(-name=>'access_log')); #現在日時取得 #time関数は、GMT(世界標準時)の1970年1月1日0時0秒からの秒数を返します my $now=time; my $ret; #5回前のアクセスと比較 if($access_log[4] eq ''){ $ret=0; #まだ5回アクセスしてない }else{ $ret=$now-$access_log[4]; } #cookie(access_log)の保存 splice @access_log,0,0,$now; #先頭に今回の時間を入れる splice @access_log,5; #6番目からの要素を削除 my $cookie=$cgi->cookie(-name=>'access_log',-value=>join(',',@access_log)); print $cgi->header(-charset=>'Shift_JIS',-cookie=>$cookie); #headerは1回しかできないので、文字出力の前に保存する #チェック print "$ret<br>\n"; if(($ret>0)&&($ret<10)){ print"もう少し時間をあけてアクセスしてください<br>\n"; exit; } #ok print"いらっしゃい<br>\n"; exit;

n31792
質問者

お礼

おお! すばらしい!!! 私の思い通りの動作をしてくれます!! やはり、Cookieが無効だと機能しませんでしたね。 ちょっとおしいです。とりあえず、Cookieが無効だとエラーを出すことを考えてみます。 どうもありがとうございました!!!感謝です。

n31792
質問者

補足

補足という形で申し訳ありませんが、無事にCookieが無効だとエラーを出すようにでき、解決しました!! 方法を伝授していただき、改めて本当にありがとうございました! 本当に感謝です!!!!!

関連するQ&A

  • ニコニコ動画 過剰アクセス?

    ニコニコ動画 過剰アクセス? 3日前ほどからニコニコ動画で動画を見れなくなりました。 いままでは普通に見れていたのに、ログインはできるのですが、動画を見ようとしてクリックすると 短時間での連続アクセスはご遠慮ください 混雑緩和のため、ご協力をお願いいたしします。 外部ツールなどをお使いの場合、意図しない過剰アクセスが発生し、この画面が表示されやすくなることがあります。 とメッセージがでてきてしまいます。 連続アクセスなどはしておらず、パソコンを開いてすぐに動画を見ようとしてもこのような表示がでます。 1日ぐらい日にちを置いてアクセスしてもこうなります。 ちなみにプレミアム会員です。 外部ツールの意味もちょっと良く分かりませんが、調べてみたらwinnyなどのことを意味するようですがそのようなものはいれていません。 どうしたらまた動画を見れるようになるでしょう? あと気づいたことなんですが、ニコニコ動画のマイページの視聴履歴というところに見たことのない動画が入っています。 それは私がアクセスした瞬間の時間に視聴されたことになっています。 また、みたい動画を検索すると、たとえば「リンゴ」というキーワードでニコニコ動画内で検索すると 「りんご」に関連する動画一覧が30件ぐらい出てきます。 そこまではふつうなのですが、その30件の動画でまだひとつも見てないうちににマイページに戻り視聴履歴のところをみると、その30件の動画が入っています。 これは普通のことなのでしょうか? それともウイルスか何かなのでしょうか? 教えてください。

  • プロバイダ付属のアクセスカウンタについて

     BIGLOBEのHPサービスを利用してHPを開設している者です。それに、無料で使えるアクセスカウンタを利用しているのですが、このアクセスカウンタはデフォルトだと、「更新」ボタンを連打すると、アクセスカウンタが連打分だけ増えてしまいます。なんとか、これを直す(要するに、ある人がカウントするのは、一日に一回だけのカウントにしてほしいということです。)方法を教えてください。  私なりに考えてみたところ、CGIプログラムをいじればできるようですが、なにせプロバイダのサービスの中のプログラムなので変更(編集)することはできないと思うのですが・・・。  あと、CGIはまったく理解できないので(HTMLぐらいなら少し・・・。)できるだけCGIに関する言葉を抜いていただけると幸いです。  よろしくおねがいします。

    • 締切済み
    • CGI
  • 負荷テスト(htmlファイルにアクセスする)

    こんにちは。 perl/cgiを使用して、簡単なアクセス負荷テストをしたいのですが、どのように書けばよいのでしょうか? 例えば、 index.htmlファイルに、1秒間に10回アクセスする というようなものです。 テスト用ツールやモジュールなどを使用するのでしょうか? どうぞよろしくお願いしますm(_ _)m

    • ベストアンサー
    • Perl
  • 掲示板で記事を出力するとき*.datや*.logなどではなくhtmlで

    掲示板(phpもcgiも可)で記事を出力するとき*.datや*.logなどではなくhtml形式で出力する掲示板って存在するでしょうか?そしてそのhtmlにアクセスすると記事は見れるような。 ご存知の方がいらっしゃいましたらご伝授お願いします。

    • ベストアンサー
    • CGI
  • iモーションの連続再生

    F902iSのユーザーです。 iモーションを携帯の待ち受け動画として 連続再生させたいのですが、現在1回再生すると停止してしまいます。 iモーションを連続でループ再生させる方法って ないのでしょうか? どなたかご教授ください。

  • サーバーによる違い

    自宅サーバーに設置したKentWebのカウンターを連打したところ1秒間に約50回程度カウンターが回りました。xrea等のサーバーに同じカウンターCGIを設置して試したところ、1秒間に1回程度しかカウントしません。サーバースペックは数倍xreaの方が高性能です。 VineLinux4.1にapache2を使っています。 apache2の設定による違いだと思いますが、どのようにすればXREAのように1秒間に一回程度しかカウントしないようになるのでしょうか? perlを改造すれば簡単ですが、xreaのようにサーバーレベルで出来ればと考えています。よろしくお願いいたします。

  • 強制的にキャッシュ読まないようにするには?

    CGIで掲示板作成していますが、書き込んだあと再び掲示板にアクセスするとキャッシュを読み込み、前回書き込んだ内容が表示しないです。一回リロード押すと出てきますが...ここでCGIにアクセスした時強制的にキャッシュ読まないようにする書き方とはありますか? ブラウザの設定でキャッシュ読まないようにはできるが、他所の人の設定まで変えられないので..... よろしくお願いします。

    • ベストアンサー
    • CGI
  • アクセス時に真っ白い画面になってしまいます。

    初めて投稿させていただきます。 実は昨日夜11時あたりから、今まで使用できていた掲示板が、アクセスすると白い画面しか出てこなくなりました。 白い画面になるまでに多少時間もかかります。 その状態の時のアドレスバーには、表示させたいその掲示板へ行く前に表示されていたサイトのアドレスが載ったままになっています。 そこから一回ブラウザの戻るボタンを押すと、普通に一つ前の表示していたページに戻る場合もあれば、一つ前のページを表示しかけてから「●●のページは見つかりませんでした」となってしまう時もあります。 単にサーバが混雑していて・・・なら良いのですが、現時点(朝6時過ぎ)でも同じ状態なので、ひょっとして何かの間違いかでアクセス拒否でもされたのではないか・・と心配です。(無記名の掲示板なので・・2ちゃんではないのですが。) アクセス拒否だと403と認識しているのですが、403も含めエラーの表示は全くなく白い画面のみです。 ちなみにブラウザはIE6.0、WINDOWSXPです。 こちら側で解決方法があるのか、どなたかご指導下さい・・・

  • 掲示板cgi、同一ホストからの一定時間投稿を制限する機能をつけるには?

    掲示板のcgiで苦戦しております。 自分でも色々調べてみて、他の掲示板cgiを参考にしながらやってみたのですが、どうしても「同一ホストからの一定時間投稿を制限する」機能がつけられません。 いつでも結構ですので、ご教示いただけますと助かります。 今使わせていただいている掲示板には、掲示板荒らし対策として「PROXY からのアクセスを制限」「特定ホストからのアクセスを制限」「特定IPからのアクセスを制限」「二重投稿のチェック」があります。 2apes 様: http://www.2apes.com/products/index.html そちらへプラスして、「同一ホストからの一定時間の投稿を制限する」を加えたいのです。 可能でしょうか? とても難しいことをしようとしてますでしょうか…。すみません、cgiを少し触れる程度しか経験がないもので。 色々なcgiを拝見させていただいて、    if (!$PostMode && $regist && $time - $tim < $regist)    { &error("連続投稿はできません。しばらく時間を置いてからお願い致します"); } ―と、このようなソースを目にしました。恐らくこのように組み込めば宜しいのかと思うのですが、やはりよく分からずにおります。 どうぞ宜しくお願いいたします。

    • ベストアンサー
    • CGI
  • 入力の暴走 a入力でaffffffffffffff

    文字を一字入力するとその後にfが勝手に連打されます。たとえぼ aをタイプするとafffffffffffffffffffff(数十回続いてとまる)のようになります。「あ」を入力するとあf f f f f f ・・・・のようにfが繰り返し入力されます。 キーボードのASDFHJKの列の文字入力でおきます。勝手に連打される文字は常にfです、 デバイスマネージャーからキーボードドライバを削除し入れ直しましたが 症状は治りませんでした。 ほぼ常に起きますが、まれに数秒間起きないこともあります Wordやメールなどすべてのソフトで生じます。 OSはWindow 10です。PC はLENOVO Ideapad100です。 放電させるという書き込みも在りましたがバッテリ内臓で取り除けず放電できません。

専門家に質問してみよう