PHP で mixi の足跡データを取得

  横取り丸で、送信されたHTTPヘッダを取得



取得できるのは、自分のデータだけです。
ログイン済み(次回から自動的にログイン)の PC で、足跡ページにアクセスして生きたクッキーを手に入れます。

  
GET http://mixi.jp/show_log.pl HTTP/1.0
Accept: */*
Referer: http://mixi.jp/show_log.pl
Accept-Language: ja
Proxy-Connection: Keep-Alive
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
Host: mixi.jp
Cookie: 生きたクッキー
  

  PHP コード



このサンプルよりさらに、日付と時間を同時に出力するようにしておけば、足跡ログデータの取得はほぼ完成です。

このページを定期的にリロードするか、コマンドラインからのバッチファイルで呼び出すようにし、
自分のPCのスケジューラに登録しておけば、データベースに足跡データを落として後で自由に集計が可能です。

  
<?
# mixi は euc-jp なので、一応あわせておきます。
# ソースコードは、後で正規表現使うので euc-jp で保存します
mb_language( "ja" );
mb_internal_encoding("EUC-JP");

$sock = fsockopen("mixi.jp", 80, $errno, $errstr, 30);
if (!$sock) {
	die("$errstr ($errno)\n");
}

# GET コマンドの出力です
fwrite($sock, "GET http://mixi.jp/show_log.pl HTTP/1.0\r\n");
fwrite($sock, "Accept: */*\r\n");
fwrite($sock, "Referer: http://mixi.jp/show_log.pl\r\n");
fwrite($sock, "Proxy-Connection: Keep-Alive\r\n");
fwrite($sock, "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)\r\n");
fwrite($sock, "Host: mixi.jp\r\n");
fwrite($sock, "Cookie: 生きたクッキー\r\n");
fwrite($sock, "\r\n");

# 上記処理で既にレスポンスは PHP が取得しています。
# 仕様にあわせて、何も無い行までを取得します
$headers = "";
while ($str = trim(fgets($sock, 4096))) {
	$headers .= "$str\n";
}

# HTML 部分の取得です。( euc-jp のデータです )
$body = "";
while (!feof($sock)) {
	$body .= fgets($sock, 4096);
}

fclose($sock);

# このサンプルでは、足跡ページが表示される為、ユーザの ID や ハンドル名を伏せる処理です。
# $1 と $2 にそれぞれ ID と ハンドルが入ります。
# 日付と時間をさらに取得すれば、データーベース等に落とすデータが完成します
$pattern = '/show_friend.pl\?id=(\d+)">([^\n]+)<\/a>/';
$replacement = 'show_friend.pl?id=999999">謎</a>';
$body = preg_replace($pattern, $replacement, $body);

print $body;

?>
  

上記は置換ですが、id と 名前のみ取得する場合は以下のようにします

  
$pattern = '/show_friend.pl\?id=(\d+)">([^\n]+)<\/a>/';
preg_match_all($pattern, $body, $matches );
print "<pre>";
print_r($matches);
print "</pre>";
  

  POST 処理

上記処理の元となったサンプルコードが以下にあります。

( https のサーバに対して POST リクエストを行う )
http://www.php.net/manual/ja/ref.stream.php#AEN180510

既存の POST されるページから戻される結果から必要な情報のみを取り出すサンプルは以下にあります
http://winofsql.jp/VA003334/skywalker060715035203.htm











   SQLの窓    create:2006/07/08  update:2014/09/07   管理者用(要ログイン)





フリーフォントWEBサービス

SQLの窓WEBサービス

SQLの窓フリーソフト

写真素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ