Androidから更新Pingを送信させてみた結果
スポンサーリンク
またまた更新Pingネタです。
以前の日記でレンタルサーバに更新Ping通知のPHPファイルを置くならばパスワード認証を設け、他者もしくはクローラBOTにアクセスされないようにした方がいいのではないかと書きました。
それでですね、私は結構面倒くさがり屋でパスワード認証画面とかセッションがどうのこうのとか作るのが億劫なので、プライベート環境から簡単に更新Ping通知できないか考えました。
そんなわけで今回はAndroidからPingを送ってみたらどうなるか試してみました。
Android上にPHPサーバを建てる
そんなことできるの!?って思うかもしれませんが、実はできてしまいます!
今回は"Server for PHP"というアプリを使ってAndroid上にPHPサーバを建ててみます。
ソースコード
「はてなブログで更新Pingを送信したら彼女ができました ~手動Ping実装法~ - 水菜巻のメモ的ななにか。」で書いたものとほぼ同じです。
送信先サーバだけ少し変えてます。
<?php // Pingサーバ $ping_servers = array( "http://ping.dendou.jp/", "http://blogsearch.google.co.jp/ping/RPC2", "http://blogsearch.google.com/ping/RPC2", "http://ping.fc2.com", "http://ping.freeblogranking.com/xmlrpc/", "http://ping.blogmura.com/xmlrpc/*********’", "http://rpc.reader.livedoor.com/ping", "http://blog.goo.ne.jp/XMLRPC", "http://rpc.weblogs.com/RPC2" ); // url重複回避 $ping_servers = array_unique($ping_servers); // ブログ名(共通言語の英語表記が無難です) $blog_name = "mizna.hatenablog.com"; // ブログURL $blog_url = "http://mizna.hatenablog.com"; // weblogUpdates.pingのXMLデータ $content = '<?xml version="1.0" encoding="UTF-8"?> <methodCall> <methodName>weblogUpdates.ping</methodName> <params> <param><value>'.$blog_name.'</value></param> <param><value>'.$blog_url.'</value></param> </params> </methodCall> '; $headers = array( 'Content-Type: application/xml', 'Content-Length: '.strlen($content) ); $context = stream_context_create( array( 'http'=>array( 'method'=>'POST', 'header'=>implode( "\r\n", $headers ), 'content'=>$content ) ) ); foreach($ping_servers as $ping_server){ $http_response_header = null; $response = file_get_contents($ping_server,false,$context); echo $ping_server,"...",$response,"<br>"; }
公開ディレクトリにPHPファイルを設置する
まずは"Server for PHP"アプリを起動させます。
上のスクリーンショットのように標準の公開ディレクトリは内部メモリの"www"ディレクトリです。
PCで作ったファイルはDropboxやOneDriveなどを駆使してAndroid端末に移動できると便利です。
もちろんUSBケーブル経由、SDカード経由でもOKです。
あとはファイルマネージャなどで内部メモリの"www"ディレクトリにPHPファイルを設置するだけです!
既に"www"ディレクトリ内に更新PingのPHPファイルを"index.php"というファイル名にして上書きすると、Webページにアクセスするだけで結果が得られるので楽かもしれません!
PHPサーバにアクセス
"Server for PHP"アプリ画面の下のほうに「Start server」ボタンがあるので押します。
サーバが起動すると上のスクリーンショットのようにサーバのリンクが出現するので、これをタップします。
あとは表示するWebブラウザアプリを選択し、レスポンスを待つだけです!
結果
レンタルサーバにPHPファイル置いてアクセスしたときと比較してみると・・・
※にほんブログ村の専用通知URLは隠しています
Android
http://ping.dendou.jp/... flerror 0 message Thanks for the ping. http://blogsearch.google.co.jp/ping/RPC2... flerror0 messageThanks for the ping. http://blogsearch.google.com/ping/RPC2... flerror0 messageThanks for the ping. http://ping.fc2.com... flerror 0 message Thanks for your ping. http://ping.freeblogranking.com/xmlrpc/... flerror 0 message Thanks for the ping. http://ping.blogmura.com/xmlrpc/***********...messageThanks for the pingflerror0 http://rpc.reader.livedoor.com/ping...flerror_value0_signature_typeboolean_attrmessageThanks for the ping http://blog.goo.ne.jp/XMLRPC... flerror 1 message Thanks for the ping. http://rpc.weblogs.com/RPC2...messageThanks for the ping.legalYou agree that use of the Weblogs.com ping service is governed by the Terms of Use found at www.weblogs.com.flerror0
レンタルサーバ
http://ping.dendou.jp/... flerror 0 message Thanks for the ping. http://blogsearch.google.co.jp/ping/RPC2... flerror0 messageThanks for the ping. http://blogsearch.google.com/ping/RPC2... flerror0 messageThanks for the ping. http://ping.fc2.com... flerror 0 message Thanks for your ping. http://ping.freeblogranking.com/xmlrpc/... flerror 0 message Thanks for the ping. http://ping.blogmura.com/xmlrpc/***********...messageThanks for the pingflerror0 http://rpc.reader.livedoor.com/ping...flerror_value0_signature_typeboolean_attrmessageThanks for the ping http://blog.goo.ne.jp/XMLRPC... flerror 1 message Thanks for the ping. http://rpc.weblogs.com/RPC2...messageThanks for the ping.legalYou agree that use of the Weblogs.com ping service is governed by the Terms of Use found at www.weblogs.com.flerror0
考察的な何か
今回の結果ではレンタルサーバとAndroid上のサーバでレスポンス内容の違いはありませんでした。
現状ではそうかもしれないが、例えばPingサーバ(受け手)側でスパム通知や連続通知防止のためにドメインでブロックされることも考えられるので、更新Ping通知するときには過度に送り過ぎないようにしたほうがいいかもしれません。
あとは"Server for PHP"ではPingサーバのレスポンスが逐次返ってきたので驚きました。
通常のWebサーバだと全部の処理が終わってからページ表示されるのに対して、"Server for PHP"はajaxのようにシームレスに処理されているように見えました。
中でどんな処理しているんだろう・・・とにかくすげぇ!