読者です 読者をやめる 読者になる 読者になる

atelier:mitsuba

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

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

Tips 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