スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

EC2LinkFinder

EC2LinkFinderというUserAgentのアクセスが時々来ていて
それがrobots.txtを無視して片っ端からリンクをたどっていきます。
Amazonの管理するサーバからくるみたいで、Amazonのrobotかと思っていたら
そうでもなく、借りているだけみたいです。
しかも、なんと行儀の悪いクローラーだとおもっていたら、
どうも、何かを探る悪質なbotらしいです。。。

ということは、robots.txtさえも探るための情報として利用しているんですよね。
なんらかの拒否の設定が必要かもしれませんね。。
ttp://www.sipylus.com/press/144-ec2linkfinder/
には

* 23.20.0.0/14 (23.20.0.0 – 23.23.255.255)
* 50.16.0.0/15 (50.16.0.0 – 50.17.255.255)
* 50.19.0.0/16 (50.19.0.0 – 50.19.255.255)
* 67.202.0.0/18 (67.202.0.0 – 67.202.63.255)
* 72.44.32.0/19 (72.44.32.0 – 72.44.63.255)
* 75.101.128.0/17 (75.101.128.0 – 75.101.255.255)
* 107.20.0.0/14 (107.20.0.0 – 107.23.255.255)
* 174.129.0.0/16 (174.129.0.0 – 174.129.255.255)
* 184.73.0.0/16 (184.73.0.0 – 184.73.255.255)
* 184.72.128.0/17 (184.72.128.0 – 184.72.255.255)
* 184.72.64.0/18 (184.72.64.0 – 184.72.127.255)
* 204.236.192.0/18 (204.236.192.0 – 204.236.255.255)

という情報が載っていますが、これを全部httpd.confにいれないといけないんですかね。。


http://chattera.net/
http://chattera.net/chaberilist.php
スポンサーサイト

UTF-8

このサイトの文字コードはUTF-8にしています。
そうすると、名前に「✿」とか「✈」とかちょっと面白い文字をいれることができます。
また、チャットのテキストにもこういった文字を入れることができます。
イメージをいれたり、顔文字を使ったりするのもいいのですが、ユニコードの面白い文字を
使うのも一味違いますね。
どんな文字があるかは、「ユニコード表」でぐぐってみてくださいね。

ただ、難点もあります。
サーバでviエディタでUTF-8以外でサポートしてないコードをいれようとすると、化けるとか、
jquery-uiのDialogでフォントをちゃんとしないとUTF-8以外でサポートしてないコードが化けるとか。
サーバのLANGはja_JP.UTF-8なんですけどね。
まあ、今はブラウザでチャットする分には、ちゃんとUTF-8のコードは使えていると思いますが、
もし、どこか変なところがあったら、教えてくださいね。

http://chattera.net/
http://chattera.net/chaberilist.php

ちょっとにぎわいを

まだ部屋がすかすかなので、ちょっとにぎわいを入れようと思って
ダミーの入室者をいれてみました。
大人数の部屋にいれてしまって、間違って話しかけられると失礼なので
2人の部屋をつくって、ダミーを2人いれて満室状態にしました。
ただ、ずっと同じ人が入っているのも変なので、ときどき入室者をいれかえします。

プログラム的には、PostgreSQLの部屋のテーブルを読んで2人部屋の空き数を調べて
一定以上あいていれば、そこに入室者を2人入れるようにします。
このとき、以前お話した「自動応答君」のように、サーバ内部からチャットサーバに接続するプロセスを起動します。
またある程度の時間がくると自動的に接続クローズ(つまり部屋を落ちる)するようにします。
どの部屋に入るか、誰をいれるか、何分で落ちるかは乱数で決めています。
これをcronで一定時間で呼び出せば、一丁できあがりということです。
うまくいきますかね。。

2人部屋は部屋一覧の終わりの方にありますので、興味のある方がどうぞ。

http://chattera.net/
http://chattera.net/chaberilist.php


ユーザID

チャットする人にはユーザIDをつけて、そのIDを使って部屋でチャットの通信をしています。
ユーザIDはCookieにひもつけてあって、リピータは既存のユーザIDを使えますが、
新規の人にはユーザIDを発行することになります。
実装としてはPostgreSQLでsequenceを作っていて、それで順番に番号を発行します。

それでCookieが使えないと新規ユーザIDを発行するのですが、クローラもCookie使わないので
新規ユーザIDを発行してしまうんですよね。。
しかも短期間で全部の部屋にいったりして。。。
そうすると無駄にユーザIDがどんどん消費されていきます。。。
でもまあ一日に数100IDくらいで、一年でも数万IDくらいですかね。
とりえあずはほっておいて、様子を見ようと思っています。


http://chattera.net/
http://chattera.net/chaberilist.php

自動応答君

チャットを受けて配信しているのは、サーバにあるchatserverプロセスで、
チャットするクライアントは、このプロセスにSocketで接続して送受信するようになっています。
ブラウザからはFLASHでサーバと通信していて、Javascriptでやり取りしています。

そういう仕組みなのでサーバ内に自動で応答するアプリを作りました。
これは、chatserverにSocketで接続して部屋に入り、誰かの書き込みに対して
返事を返すというものです。
現在は誰か部屋にきたときの挨拶と、誰かの書き込みに対しておうむ返しをするだけですが、
そのうち賢くして人工知能的になればいいなと思っています。

みてみたい人は、

http://chattera.net/room.php?room=test
にきてみてくださいね。このURLをクリックすると、対応ブラウザであれば(FLASHがインストールしてあって、Javascriptが使える等)、すぐに自動応答君と会話できると思います。入室者の名前は、はじめてきた場合は「ゲストXX」のような名前になっていると思います。


http://chattera.net/
http://chattera.net/chaberilist.php

Naver拒否その後の続き

Naverの拒否設定を解除してすぐあとに、naverがやってきました。
でもページを4つほど読んで帰っていきました。
そのあとしばらくして、ページを1つ読んでいきました。
こころなしか、謙虚になったような感じがしますね。
この調子でいてくれたらいいんですがね。

そのかわりに、38.99.82.XXXというアドレスのBotらしいのがやってきます。
UserAgentは
Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 6.0)
なのですが、明らかにBotです。
ドメインを調べてみても何もでてきませんでした。。。
半日くらいかけて大量にアクセスして帰っていきました。
robots.txtも無視しているみたいだし、今度また大量にアクセスしにきたら、Denyの設定を入れようと思っています。


http://chattera.net/
http://chattera.net/chaberilist.php

Naver拒否その後

先日naverという韓国のロボットが大量にきていたので
httpd.confに
Deny from 119.235.237.0/24
を書いてnaverからのアクセスを403 (Forbidden)で返し続けた件の続報です。

あれからnaverのアクセスはピタっととまりました。
そして2日に一度くらい/robots.txtを読んでいくくらいになりました。
設定は成功のようです。

ずっと拒否しつづけるのもかわいそうなので
Deny from 119.235.237.0/24
をはずしました。
今度はrobots.txtにもfile=xxxxの大量にあるURLについてはDisallowを入れているので
robots.txtにしたがってくれる限りは、そんな大量のアクセスはしないはずです。
robots.txtを無視するようだったら、またDenyを入れて拒否するつもりです。

http://chattera.net/
http://chattera.net/chaberilist.php

robots.txtを編集

昨日かいたように chaberilist.php?file=をやめて
chaberilistfile.php?file=に変更したまではよかったのですが、
以前のchaberilist.php?file=のときにGoogleが読み込んだURLを何度もアクセスしてくるので、
やめさせたいです。
そこでrobots.txtを編集することにしました。
クローラーを制御するにはrobots.txtを書いて/においておきます。
そこにDisallow:でアクセスして欲しくないURLを書いておけば、(ワイルドカードOK)
行儀のいいロボットならアクセスをやめて、インデックスから削除してくれるはずです。

とりあえず、
Disallow: /chaberilist.php?file=*dat
Disallow: /chaberilistfile.php?file=*dat
の2つを入れておきました。
最初の行は以前のURLでGoogleが取り込んだものを削除するわけですが、
2番目はfile=xxx.datが日付時刻分大量に作成されるので、それをやめさせようと思って入れました。
そのかわり
chaberilistfile.php?file=new
という最新の日付を表示するオプションを作成して、これだけをGoogleに読ませようと思っています。

まだGoogleはrobots.txtを読んでいませんが、はたしてうまくいくでしょうかね・・

http://chattera.net/
http://chattera.net/chaberilist.php

Googleのクローラー

先日のチャベリに来た人のリストhttp://chattera.net/chaberilist.phpですが、
このページは、chaberilist.phpのオプションをつかって
chaberilist.php (オプションなし)だと日付時刻の一覧
chaberilist.php?file=xxxxx だとその時刻の部屋と来た人一覧
chaberilist.php?summary=namelist だと名前の集計
を表示するようにしていました。

ところが、Googleはこれらのリンクは全部だどるものの、
全部が同じページの少し違うものだという扱いになって、
これらの3種類がGoogle検索に出てくれません・・・・

しかたがないので、その時刻の部屋と来た人一覧は
chaberilistfile.php?file=xxxxx
名前の集計は
chaberilistname.php?summary=namelist
のようにphpのファイル名を変えました。
実際には同じchaberilist.phpをシンボリックリンクしているだけなんですけどね。

効果があるかどうかはまだわかりません。

http://chattera.net/
http://chattera.net/chaberilist.php


部屋名

チャットの部屋名は、データベースのテーブルにいれてあって、
それをチャットサーバが起動するときに読み込むようになっています。
部屋名が変更される場合は、ブラウザからチャットサーバにコマンドを送って
チャットサーバがテーブルを更新します。
部屋の一覧表示では、テーブルを検索して部屋名を表示することにしています。

そこまではよかったのですが、先日部屋名変えようと思ってデータベースのテーブルを
直接更新してしまいました。
そこでチャットサーバを再起動すればよかったのですが、それを怠ったまま
何日も過ぎたある日、部屋に入ると、一覧の部屋名と内部の部屋名が違う事態に。。
なにかとんでもないバグでもあるのかとおもって、調べると、チャットサーバを再起動していなかった。。
でも、再起動を忘れるくらいずっとチャットサーバを起動しつづけて、落ちたりしないのは
それはそれで立派なものだ。

http://chattera.net/


naverを拒否する

ちょっとしくじって、リンクをたくさんつけてしまったのですが、
それをnaverという韓国のロボットが見つけて、大量のアクセスをしています。
そうなると負荷が高くなって困るので、拒否する方法を探しました。

今のところやった方法は httpd.confにdenyを入れるということです。


<Directory "/var/www/html/">
Order Deny,Allow
Allow from All
Deny from 119.235.237.0/24
</Directory>

<Files robots.txt>
order allow,deny
Allow from all
</Files>



こうするとアクセスに対して403が返るようになりました。
いつまでアクセスが続くんだろう・・・

http://chattera.net/


チャベリの来た人リスト

ちょっとそれますが、チャベリに来た人をあとから確認できるようなページをつくりました。

http://chattera.net/chaberilist.php

ncというコマンドで、http://hiratara.dyndns.org/chaberi/に接続して現在の部屋の状況一覧を取得して、それをperlで加工してファイルに落としておいて、chaberilist.phpで表示したり、検索したりするというものです。
データはcronで10分間隔くらいで取得しにいっています。3日くらいで過去のファイルは削除しようと思っています。
結構便利なんですが、ストーカーみたいなことには使わないでね。

http://chattera.net/
http://chattera.net/chaberilist.php

チャットサーバプロセスとのプロトコル

チャッとサーバとはSocketで通信すると書きましたが、
通信の内容は実は文字列です。
チャットの内容は文字化けしないようにUTF8の文字列をエンコードして送って、受信したときにデコードするようにしています。
あとはURLのパラメータのようにkey=valueを&でくっつけて送ります。
こうしておくとJavaScriptでも簡単にエンコード、デコードできるかなおもってそうしました。
細かい仕様はまたいつか。

http://chattera.net/

チャットサーバとの接続

画面はapacheとPHPで作成していますが、チャットの通信は
ブラウザのFLASHがサーバのチャットサーバに接続して通信しています。
実は、このチャットサーバとの通信は、ブラウザのFLASHからだけでなく
他のSocketクライアントプログラムでも接続して通信できます。
したがって、telnetでchattera.netの特定のポートに接続すれば
チャットができることになります。
実際にそうやってテストしてたりします。
今のところ通信は暗号化してないので、会話はだだもれですが・・
http://chattera.net/
プロフィール

chattera.net

Author:chattera.net
フリーでソフト開発の仕事をしています。
自作したこのチャットシステムは、何か世の中に役に立つこともあるかと思いますので、お呼びがかかるとうれしいですね。

連絡先は chatteranet@gmail.com です。

また、ソフト開発関連のお誘いもうけたまわっております。

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。