クローラやケータイによってリダイレクト先を変えるCGIの雛形(Perl)
2010-03-15-1
[Programming]
クローラやケータイによっていろいろと内容を切り替えたい場合がある。
例えば、Googlebot が大量に来たときに暫定的に Google のトップページに飛ばしたりとか(嫌がらせ?)。
実現方法はいろいろあるんだけどここでは自分でコピペする用に Perl CGI の雛形を載せておく。
アマゾンを例に飛ばし先(リダイレクト先)を切り替える例。
切り替え部分は随時追加予定。
ref.
- [を] Webサイトをケータイからのみアクセス可能にする方法[2008-01-09-4]
- [を] 同じコンテンツを指す複数のURLをクローラーが来たときだけ一つにまとめる[2007-06-02-1]
- [を] 2ページ目以降のクローラ拒否[2010-03-01-3]
例えば、Googlebot が大量に来たときに暫定的に Google のトップページに飛ばしたりとか(嫌がらせ?)。
実現方法はいろいろあるんだけどここでは自分でコピペする用に Perl CGI の雛形を載せておく。
アマゾンを例に飛ばし先(リダイレクト先)を切り替える例。
切り替え部分は随時追加予定。
#!/usr/bin/perl -T use strict; use warnings; print "Content-Type: text/html\n"; my $qs = $ENV{'QUERY_STRING'} || ""; my $ua = $ENV{'HTTP_USER_AGENT'} || ""; my ($asin, $aid) = $qs =~ /^([0-9B][0-9A-Z]{9})(.*)$/; $aid = "tatsuo-22" unless $aid; if ($asin eq "") { print "\n"; exit; } my $url = "http://www.amazon.co.jp/o/ASIN/$asin/$aid"; # USER default if ($ua =~ /Slurp/) { # CRAWLER Y $url = " ... "; } elsif ($ua =~ /Y!J-(SRD|MBS)/) { # CRAWLER YJ mobile $url = " ... "; } elsif ($ua =~ /Googlebot\//) { # CRAWLER G $url = " ... "; } elsif ($ua =~ /Googlebot-Mobile/) { # CRAWLER G mobile $url = " ... "; } elsif ($ua =~ /msnbot/) { # CRAWLER bing $url = " ... "; } elsif ($ua =~ /bot|craw|spid/i) { # CRAWLER other $url = " ... "; } elsif ($ua =~ /J-PHONE|SoftBank|Vodafone|DoCoMo|KDDI|WILLCOM/) { # USER mobile $url = " ... "; } print "Location: $url\n\n";
ref.
- [を] Webサイトをケータイからのみアクセス可能にする方法[2008-01-09-4]
- [を] 同じコンテンツを指す複数のURLをクローラーが来たときだけ一つにまとめる[2007-06-02-1]
- [を] 2ページ目以降のクローラ拒否[2010-03-01-3]
この記事に言及しているこのブログ内の記事