Googleアドセンス競合広告フィルタ更新補助スクリプト

   このエントリをはてなブックマークに登録    2008/6/27-1

アドセンスの競合広告フィルタに記述してあるドメインがまだ存在するかどうかを簡単にチェックするスクリプトを作ってみました。 恐らく同様のものやサービス等はあるような気がしますが、探すのが面倒だったので自作してみました。 あまりまともな機能はありませんが、いくつか存在しないドメインを見つけて新しいものと差し替えました。

アドセンスをやっていると様々な理由から「表示したくない広告」というものを発見するようになります。 それらの広告を表示しないようにするには「競合広告フィルタ」を使うのが簡単です。 しかし、競合広告フィルタに登録できるURLやドメインは200個までに制限されています。 この200個という貴重な資源を有効活用するには、存在しなくなった広告に対するフィルタを削除する必要があります。

今回作った簡単なスクリプトが行っている事は非常に単純です。 そのドメインに対するNSレコードが存在しているかどうかを確認しています。

NSレコードが発見できなかった場合、Aレコードも確認しています。 これは、例えば「blog.○○.jp」のようなエントリが競合広告フィルタに含まれている場合に対処したものです。

以下のスクリプトの使い方ですが、まず最初にGoogle Adsenseの競合広告フィルタ管理画面に記述されているエントリを全てコピーしてdomains.txtというファイルに保存します。 そのファイルがある場所で、以下のperlスクリプトを実行します。 DNSを使った名前解決に失敗したものは、恐らくobsoleteなフィルタエントリだと思われます。

あまり美しさのない、いい加減な方法だとは思いますが、興味のある方はご利用下さい。


#!/usr/bin/perl

use Net::DNS;

$res = Net::DNS::Resolver->new;

open(FILE, "domains.txt") || die $! . "\n";

while (<FILE>) {
  chop;
  $domain = $_;
  $query = $res->query($domain, 'NS');

  print $domain;
  print "\n";

  if (!$query) {
    $query2 = $res->query($domain, 'A');
    if (!$query2) {
      print "  ERROR !!! ";
      print $res->errorstring;
      print "\n";
    } else {
      print "  found as host\n";
    }

    next;
  }

  foreach $rr ($query->answer) {
    if ($rr->type eq "NS") {
      print "  ";
      print $rr->nsdname;
      print "\n";
    }
  }
}

close(FILE);

exit;


   このエントリをはてなブックマークに登録