№ 3840 В разделах: Programming
Sysadmin
от November 9th, 2011,
В подшивках: PHP, Selectel
UPDATE: у Селектела появилось нормальное API с которым можно взаимодействовать гораздо проще 🙂 А эту статью можно оставить для истории про то как парсить html страницы 🙂
Используется библиотека simple_html_dom.php. Программа уже заточена под новый интерфейс Селектела. Просто поменяйте логин и пароль. Скрипт может вывести любую информацию. Данный пример выведет ваше имя, баланс в облаке и сколько потрачено денег на виртуальные машины за текущий день.
<? require('simple_html_dom.php'); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://support.selectel.ru/'); curl_setopt ($ch, CURLOPT_POST, 1); curl_setopt ($ch, CURLOPT_POSTFIELDS, 'action_method=GET&user=YOURID&pass=YOURPASSWORD'); curl_setopt ($ch, CURLOPT_COOKIEJAR, 'cookie.txt'); curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); $store = curl_exec ($ch); curl_setopt($ch, CURLOPT_URL, 'https://support.selectel.ru/cloud/vm/'); $content = curl_exec ($ch); curl_close ($ch); $html = new simple_html_dom(); $html->load($content); $userinfo = $html->find('body script',0); $vms_o = $html->find('.vm-box'); preg_match_all("/var [a-z_]+ = \{(.*?)\};/", $userinfo->innertext,$userinfo_array); $userinfo=json_decode(str_replace(array("var client_info = ","};"), array("","}"),$userinfo_array[0][1])); echo $userinfo->username.", баланс "; echo ($userinfo->cloud->balance/100). " руб.\n"; foreach($vms_o as $vm_o) { $vm_name = $vm_o->find(".vm-name",0); $vm_money = $vm_o->find(".vm-money",0); echo "Название ".trim($vm_name->innertext)."\n"; echo "Потрачено за сутки ".trim($vm_money->innertext)." руб.\n\n"; } ?>
Если этот скрипт дополнить другими (например, статистикой из Яндекс.Метрики), то можно получить вполне клевые уведомления о балансе, статистике и трате средств со счета.
Fortune cookie: Today's spam: Disappointed at your lack of performance?
Leave a Reply