« スパムサイト作成講座23 - RSS を配信する | メイン | スパムサイト作成講座25 - AdSense 汚染ドメインを排除してアクセスが劇的に回復 »

2007年04月19日

スパムサイト作成講座24 - RSS の更新pingを送信する あとで読む

RSS を配信するようになったので、今度は「RSSが更新されたよ」という情報をいろいろなサーバーに知らせる「更新ping」を送信してみることにしよう。
#無理やり得意分野に引きこんでいるという噂もあるが…

ブログを書いている人なら、なんやら ping 先にいろいろ指定しておくとイイらしい、ということは知っているだろう。

まぁ、もはや更新 ping 自体の半分以上はスパムとも言われているし(sping)、ping を機械的に送信するというのはちょっと微妙なところではあるが、昨日開始したRSS配信により実験サイトも Technorati に登録されたことだし、ちょっと実験してみることにする。

なお、今回のエントリは少々 PHP のプログラムコードが多くなっている。予めご容赦いただきたい。

さて、更新pingであるが、XML-RPC を利用して送信する。簡単にいえば XML コードを POST するということだ。送信するものはサイトのタイトルとトップのURLのみであり、フィードやアイテムのPermalinkなどは送信する必要はない(送信できる拡張pingもあるが、あまり対応していないし実際不要だろう)。

XML-RPC についてはライブラリなどもあるのでそちらを使ってもかまわない。

が、ライブラリを使わなくても簡単に書ける。


function updatePing($host, $path, $title, $url)
{
    $sock = @fsockopen($host, 80, $errno, $errstr, 2.0);
    $result = "";
    if ($sock)
    {
        $title_str = htmlspecialchars($title);
        $content =
               "<?xml version=\"1.0\"?>\r\n" .
               "<methodCall>\r\n" .
               "<methodName>weblogUpdates.ping</methodName>\r\n" .
               "<params>\r\n" .
               "<param>\r\n" .
               "<value>$title_str</value>\r\n" .
               "</param>\r\n" .
               "<param>\r\n" .
               "<value>$url</value>\r\n" .
               "</param>\r\n" .
               "</params>\r\n" .
               "</methodCall>\r\n";
        $length = strlen($content);
        $req = "POST $path HTTP/1.0\r\n" .
               "Host: $host\r\n" .
               "Content-Type: text/xml\r\n" .
               "Content-Length: $length\r\n" .
               "\r\n" . $content;
        fputs($sock, $req);
        while(!feof($sock)){
            $result .= fread($sock, 1024);
        }
    }
    return $result;
}

更新 ping のサーバー一覧は wikipedia などに掲載されている。

掲載されているものの中にはすでにサービス終了しているものもあるし、日本のサービスは網羅されていない。

いずれにせよ、すべてに ping を送信する必要はないので、上記から適当なものをピックアップして ping を送信すればいいだろう。

上記関数を使って、例えば


$title = "入れ替え検索 SFA-CMS";
$url = "http://www.sfa-cms.com/";

updatePing("blogsearch.google.com", "/ping/RPC2", $title, $url);
updatePing("rpc.technorati.com", "/rpc/ping", $title, $url);
updatePing("api.my.yahoo.com", "/RPC2", $title, $url);
updatePing("rpc.weblogs.com", "/RPC2", $title, $url);
updatePing("ping.ask.jp", "/xmlrpc.m", $title, $url);

のように実行すれば更新pingが送信される。

ping を送信すると、こんな感じで次々にクローラーがやってきて RSS を自動的に見つけてもっていってくれる。

208.66.64.172 - - [19/Apr/2007:12:13:40 +0900] "GET /index.xml HTTP/1.0" 200 269350 "-" "Technoratibot/0.7"
221.186.129.224 - - [19/Apr/2007:12:14:07 +0900] "GET /index.xml HTTP/1.1" 200 269350 "-" "libwww-perl/5.65"
72.13.32.7 - - [19/Apr/2007:12:15:08 +0900] "GET /index.xml HTTP/1.0" 200 269350 "-" "Moreoverbot/5.00 (+http://www.moreover.com)"
64.158.138.84 - - [19/Apr/2007:12:20:05 +0900] "GET /index.xml HTTP/1.1" 200 16378 "-" "Blogslive (info@blogslive.com)"
66.249.66.3 - - [19/Apr/2007:12:29:36 +0900] "GET /index.xml HTTP/1.1" 200 261780 "-" "Mozilla/5.0 (compatible; Googlebot/2.1 +http://www.google.com/bot.html)"


更新 ping を送信することで RSS が取得され、その RSS を利用してページを作成しているサイト(スパムサイトも多いけど)からバックリンクを獲得できる。


実験サイトはこのところ 1万~1.5万PV/日のあたりをうろうろしているので、RSS + ping 配信の効果もじっくり観察してみることにしよう。


※注意)更新pingは1時間に1回以上送信すべきではない。また ping の機械送信は乱用しないよう、改めてお願いしたい。


※本エントリはスパムサイトをネタにしたSEO講座です・・・いい意味で。⇒序章を参照

投稿者 aka : 2007年04月19日 13:03  / 2007年04月 / SEO (スパムサイト講座)

トラックバック

人気ブログランキング - a++ My RSS 管理人ブログ

このエントリーのトラックバックURL:
http://133.242.136.64/mt-tb-sf.cgi/600

コメント

はじめまして。PHPでping送信の実装について調べていました。
とても参考になりました。ありがとうございました!

投稿者 yamazon : 日時 2010年03月27日 03:31

コメントしてください

あわせて読みたい




保存しますか?