2chまとめ必須のLivedoorブログロールをスクレイピングしてHTTPSサイトで無理やり表示させる方法

2chまとめブログを運営すると、ブログロールは必須ツールの一つですが、
最近、HTTPSにしないとGoogleさんから怒られるようになりました。

そこで、HTTPS化してみた所、ブログロールはHTTPS非対応で、表示されなくなるという罠がありました。

急いでHTTPSでも表示できるように、ブログロールの内容をスクレイピングしてリンクを表示させる事をやってみました。

ブログロールはどんな仕組みで表示しているか

<script type="text/javascript">
<!--
    var blogroll_channel_id = xxxxxx;
// -->
</script>
<script type="text/javascript" charset="utf-8" src="http://blogroll.livedoor.net/js/blogroll.js"></script>
<link rel="stylesheet" type="text/css" href="http://blogroll.livedoor.net/css/default2.css" />

貼り付けコードはこのようになっています。
ブログロールのIDを読み込んで、ブログロールのスクリプトを読み込んでいます。

このスクリプトを読み込んでいくと、

        var host = (typeof blogroll_roll_host == 'undefined') ? "http://blogroll.livedoor.net/" : blogroll_roll_host;
        script.src = host + chid + "/roll_data";

と言う部分が現れました。

こちらの、末尾に/roll_dataをつけたURLに、データを吐き出すURLです。

"http://blogroll.livedoor.net/" . $blogroll_id . "/roll_data";

ブログロールのデータをスクレイピングする

さて、ここへアクセスしスクレイピングする事で、ブログロールに掲載されているURLは取れそうです。

//blogrollのURLをJsonで返す
function listblogroll($blogroll_id) {

	$url = "http://blogroll.livedoor.net/" . $blogroll_id . "/roll_data";
	$dat = get_template_directory() . "/dat/" . $blogroll_id . ".dat";
	if (file_exists($dat)) {
		$expire = strtotime("-5 minutes");
		if (filemtime($dat) > $expire) {
			$body = file_get_contents($dat);
			$json = json_decode($body, true);
			$str = "";
			if (isset($json)) {
				return ($json[2]);
			}

		}
	}

	$option = [
		CURLOPT_RETURNTRANSFER => true,
		CURLOPT_TIMEOUT => 3, 
	];

	$ch = curl_init($url);
	curl_setopt_array($ch, $option);

	$json = curl_exec($ch);
	$info = curl_getinfo($ch);
	$errorNo = curl_errno($ch);

	if ($errorNo !== CURLE_OK) {
		return [];
	}
	if ($info['http_code'] !== 200) {
		return [];
	}

	$body = str_replace(array("blogroll_write_feeds(", "]);"), array("[", "]]"), $json);

	$json = json_decode($body, true);
	$str = "";
	file_put_contents($dat, $body, LOCK_EX);
	if (isset($json)) {
		return ($json[2]);
	}

}

詳細は省略しますが、CURLでアクセスし、帰ってきたJsonが、リンクのリストになっています。
ここから、帰ってきたデータを普通にPHPで色々とすれば、問題ありません。

途中に、file_put_contentsでデータをテキストファイルに格納し、毎回アクセスするのを避けています。

ちなみにこのデータ、サイト名はセットされているものの、サイトURLはセットされていません。
もちろん、ライブドアのブログロール規約的にはアウトなのかもしれませんので、SSL対応が早く出来ますことを期待しています。

ブログロールのデータが取れるということは、このデータを使ってアンテナサイトを作ることなどにも役立ったりします。

ビットコインを毎日受け取る最新HYIP特集

PR:BitConnect

体感:一年以上継続中

月利:最大月利40%、日利0〜1.5%周辺
期間:120日〜299日
最小投資単位:$100
参加する

PR:Bitpetite

体感:比較的安心

日利:3.60%〜4.5%
期間:6週間〜9週間
最小投資単位:0.005ビットコイン
参加する

PR:BitDragon

体感:潰れる前提で

日利:9%〜12%
元本:しない
期間:永遠に
最小投資単位:0.001ビットコイン
参加する
HYIPは高リターン高リスク商材ですので、リスク管理を各自行ってください。

新着記事

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトについて

このサイトはネットビジネスで稼ぐとなっていますが、筆者本人はネットビジネスは嫌いです。
「ネットビジネスで一緒にビジネスをしましょう!」と、言葉では説明しているものの、あくまでも「貴方はお客様です」。
なので、本当にネットでビジネスをするとはどういう事かをここで書いていければなと思います。
連絡はこちらまでinfo@omorovie.com