人工無脳ユウヤ - 205日目(やっとrk値…)

あわただしくユウヤを作っていたあのころから…大体3か月ぐらいたちました。
まあモンハンやってたんだけど。
まあ相変わらずネタはないのですが、ちょっとスパンを置いたことでいろいろ修正しなきゃいけないところとか見えてきました。


とりあえず、やっとrk値を何とかした。
rk値というのは、はてなのログイン情報に関するcookieのことで、こいつを使えばログインした状態と同じにすることができるのですよ!
引用スターやプロフィール変更を使うためにはこれがないといけなくて…
ただしrk値はログイン回数などによってランダムに代わるので自動的に取ってくるにはどうしたらいいか…っていうこと。
いろいろ調査した結果、ログイン後にsetcookieでrk値を設定していることが判明。
なので、fsockopenを使ってログインし、rkを収得する方法にしました。


まずfsockopenでwww.hatena.ne.jpを開く。普通に80で開けました。
で、ログインするためにパラメータをPOST送信。

$host = "www.hatena.ne.jp";
$path = "/login";
			
$str = "name=あいでぃー&password=ぱすわーど&persistent=1";
$datS = "";
fputs($fp, "POST " . $path . " HTTP/1.1\r\n");
fputs($fp, "Host: $host\r\n");
fputs($fp, "Referer: http://$host$path\r\n");
fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n");
fputs($fp, "Content-length: " . strlen($str) . "\r\n");
fputs($fp, "\r\n");
fputs($fp, "$str\r\n");

戻り値setcookieの中からrkを拾えました。やったね!
ただ、これだと投稿するたびに毎回ログインしてrk値拾って…というルーチンになってしまい、はてなにもコードにも負荷掛かりそうだなーと思ったので、取ってきたrk値をDBに保存しておき、
「DBに保存してあるrk値でやってみて、ダメだったらログインしてrk値を再収得」
という動きにしました。
rk値さえ取れればこっちのもの。そこからrkm、rksを取ってこれました。だいぶ楽になった…


しかし…rk値を取ってこれてもプロフィール画像だけはphpで変更できてない…次はここにチャレンジかなぁ…