atelier:mitsuba

i love UI/UX, Blend, XAML, Behavior, P5, oF, Web, Tangible Bits and Physical computing. なにかあればお気軽にご連絡ください。atelier@c-mitsuba.com

mixiボイスのTLをPHPで取ってきた!!!

PHPからmixiボイスのソースを取ってきた。

JSでおんなじようにやろうとしたらクロスドメインのセキュリティでダメだったorz
クロスドメインでDOMっていじれないのね。

PHPBasic認証ってこうやって超えるのねー。
こういうプログラムって初めてだから、勉強になった。

以下ソース

<?php


function MixiLogin($data)
{
    $data = http_build_query($data + array('next_url' => 'home.pl'), '', '&');
    $context = stream_context_create(array(
        'http' => array(
            'method'  => 'POST',
            'header'  => implode("\r\n", array(
                'Content-Type: application/x-www-form-urlencoded',
                'Content-Length: ' . strlen($data)
            )),
            'content' => $data
        )
    ));
    file_get_contents('http://mixi.jp/login.pl', false, $context);
    $cookies = array();
    foreach ($http_response_header as $r) {
        if (strpos($r, 'Set-Cookie') === false) {
            continue;
        }
        $c = explode(' ', $r);
        $c = str_replace(';', '', $c[1]);
        $cookies[] = $c;
    }
    return $cookies;
}


function MixiGetPage($url, $cookies)
{
    $context = stream_context_create(array(
        'http' => array(
            'method'  => 'GET',
            'header'  => implode("\r\n", array(
                'Cookie: ' . implode('; ', $cookies)
            ))
        )
    ));
    return file_get_contents($url, false, $context);
}


$data = array(
    'email'    => 'hoge@hoge',
    'password' => 'fuga'
);

$cookies = MixiLogin($data);

$page = MixiGetPage('http://mixi.jp/recent_echo.pl', $cookies);

print(htmlspecialchars($page,ENT_NOQUOTES,"euc-jp"));

?>


このままだとmixiボイスのアウトプットのHTMLソースを
べたーーーーーーーーと取ってきてしまうので
なんとかこれを、パースなり正規表現なり噛ませて
ボイスのTLをうまく取って来れないかなぁと模索中。

ハック記念(?)にインターンの時の写真をぱしゃり。
笠原社長との2ショット(ぁ


さてと、面白くなってきたb