NoHarvesterを自力改変(改悪?)
NoHarvesterのソースを自力でその場しのぎで改変^^;
効果バツグンのNoHarvesterだが、あまりに強力ゆえに、サブドメインで運用しているTOBのコメント投稿でちょっとした問題が発生していた。
あちらではDoCoMoなどのケータイでアクセスしている人が何人かいて、彼らがコメントを投稿しようとすると、NoHarvesterに引っかかってコメント受け付けエラーとなってしまう。 詳細は別途記しているが、なぜこのようなことになるのかというと、例えばDoCoMoのiモードではアクセス中にIPが頻繁に変わっているからで、そのような異なるIPからの投稿を弾くのはNoHarvesterの本来の動作なわけである。 ケータイからのコメント投稿なんてNoHarvesterの作者様にとっては想定外の使われ方だろうが、一応現象を報告して、もし可能であればホワイトリストのような機能をつけていただきたいと要望まで出してしまった。
一方、Perlはさっぱりわからないもののわからないなりに、自分でも対処法を暫定的に施してみた。 NoHarvester.plの中で、途中でユーザエージェント名をみるようにしてDoCoMo・au・Softbankなどの場合はIP判別処理をバイパスさせるという、単にその場しのぎな改変でしかないが^^;
改変ソース
NoHarvester.plの109行目あたりを下記のように改変。
# Different IP if ($q->param('remote_ip') ne $app->remote_ip) { # Bypass for Mobile phones. Customised by Kazz.[http://asamuzak.jp/] my $agent = $ENV{'HTTP_USER_AGENT'}; unless ($agent =~ /DoCoMo|FOMA|KDDI|UP\.Browser|J-PHONE|Vodafone|SoftBank/) { # Allow same class C IP my($cclass_input_ip) = $q->param('remote_ip') =~ /^(.*)\.[0-9]{1,3}$/; my($cclass_remote_ip) = $app->remote_ip =~ /^(.*)\.[0-9]{1,3}$/; if ($cclass_input_ip ne $cclass_remote_ip) { MT::log("Blocked comment: 中略") if $log eq '1'; return $app->handle_error("Cached page? Jumping IPs?"); } } # end Bypass for Mobile phones. }
"NoHarvesterを自力改変(改悪?)"へのTwitter上でのコメントやRT
ツイートを取得できませんでした。