74249

ダイナミックDNS

いくつもあるダイナミックDNSサービスの一つ、旧DynDNS(現dyn.com)を昔から使っているけれど年々、フリーユーザーへの締め付けが厳しくなってきて、春ごろから月に一回はホームページからログインしてね、じゃないとアカウント消すよ。と言うことになってしまった。
遊びで使っているので別にいいんだけどgoogle appsと組み合わせて使っているので、消えてしまうのはちょっと面白くない。
と言うことでログインしたように見せかけるスクリプトを書いてcronで週1で回すことにしてみた。

<?php
$url='https://account.dyn.com';
$USERNAME="";
$PASSWORD="";
$C=getcwd().'/cookie.txt';
$UA="Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)";
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_HEADER,FALSE);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE);
curl_setopt($ch,CURLOPT_COOKIEJAR,$C);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,TRUE);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);
curl_setopt($ch, CURLOPT_USERAGENT,$UA);
$html=curl_exec($ch);
curl_close($ch);
preg_match('/¥'multiform¥' value=¥'(.*)¥'/', $html, $res);
$MULTIFORM=$res[1];
$post="username=$USERNAME&password=$PASSWORD&iov_id=&submit=Log+in&multiform=$MULTIFORM";
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_HEADER,FALSE);
curl_setopt($ch,CURLOPT_POSTFIELDS,$post);
curl_setopt($ch,CURLOPT_COOKIEFILE, $C);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,TRUE);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);
curl_setopt($ch, CURLOPT_USERAGENT,$UA);
$html=curl_exec($ch);
curl_close($ch);
$result="¥n".date("Y/m/d H:i:s")."¥n";
if (stristr($html, 'welcome')) {
$result.= "Login success.¥n";
} else {
$result.= "Login failed.¥n";
}
echo $result;
unlink ($C);
?>

ひとまずXREAで動いているのを確認。
参考サイト
元々シェルスクリプトだったのを自分的に都合がいいPHPにベタ移植。
ありがとうEmanuel Dussさん。

2013-09-18(水) 16:03:42|全般