2004年3月28日日曜日

Yahoo! web rankのtoolbarなしの直接取得(ヒント)

さて、www.digitalpoint.com/tools/webrank/でYahoo!のWeb Rankが
調べられます。(googleのpage rankみたいなものです。)
サイトURLを入れるとWeb Rankが見られますが、どういう仕掛けか調べて見たところ、
当方でもhttpプロトコルでソケットプログラムにて取得できました。
(パケットダンプしてそれをまねてデータを???.????.???.yahoo.comにPOSTデータにて
送信したところ、いろんなサイトのWeb Rankが取得できます。(ハッキング的ですね。。)
※さすがに、CGIでWEBサイトからアクセスサービスできるようにするなんて勇気は私にはございません。(笑う)
Googleのようにch値(サイト固有の値)等のようなIDはないので、
すべてのサイトがプログラムで取得できます。!!
(ch値は、googleからその算出方法が公開されていないので、プログラムでページランクは
取得できません。
 巷のgoogle ページランク調査サイトは、バックエンドで結局IEブラウザーが動いておりそこ
から間接的に取得しているものと思われます。->多分Googleのポリシーに違反している。。)


それでは、またヒントを書いておきます。
ネットワーク屋さんで、ソケットプログラムが書ければできます。
(手っ取りばやく、perlでプログラミングしました。????は伏せています。)
============
use Socket;
$con_host = '???.???.???.yahoo.com';
$port = '80';
$ip = inet_aton($con_host);
$sockaddr = pack_sockaddr_in($port, $ip);
socket(SOCKET, PF_INET, SOCK_STREAM, 0);
if(!connect(SOCKET, $sockaddr)){
print "error";
exit;
}
select(SOCKET);
$| = 1;
select(STDOUT);
$dat = "POST /??/???t=???????? HTTP/1.1\r\n";
$dat = $dat . "Accept: */*\r\n";
$dat = $dat . "User-Agent: Mozilla/4.0 (?????)\r\n";
$dat = $dat . "Host: ???.??????.???\r\n";
$dat = $dat . "Content-Length: ???\r\n";
$dat = $dat . "Cache-Control: no-cache\r\n\r\n";
$dat = $dat . "o=http%3a%2f%2fwww.yahoo.co.jp%2f&n=????????????????&u=http%3a%2f%2fwww.yahoo.co.jp%2f&p=1&q=r&c=c&v=5_4_9&i=us";
print SOCKET $dat;
==================================================
戻り値
p=1&t=???????&r=9&d=0&s=0&u=5
意味
www.yahoo.co.jpのweb rankは9です。
==================================================

0 件のコメント:

コメントを投稿