Skip to content

Instantly share code, notes, and snippets.

@b123400
Created August 13, 2012 21:00
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save b123400/3344076 to your computer and use it in GitHub Desktop.
Save b123400/3344076 to your computer and use it in GitHub Desktop.
3HK data usage getter
<?php
//There is no public API therefore this is not so reliable, use it at your own risk
function search_string($string , $regex , $index=1){
$pattern = "~".$regex."~";
preg_match($pattern, $string, $matches);
//var_dump($matches);
return $matches[$index];
}
function getDataUsageFromThreeAccount($mobileNo,$password){
$loginURL="http://www.three.com.hk/appCS2/verifyLogin.do?lang=eng";
$fields = array(
'mobileno'=>$mobileNo,
'password'=>$password,
'url_3g'=>"",
'url_2g'=>"",
'action'=>"login",
'URLTo'=>"https://www.three.com.hk/appCS2/usageNotYetBilled.do?lang=eng"
);
//url-ify the data for the POST
foreach($fields as $key=>$value) {$fields[$key]=urlencode($value);}
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
rtrim($fields_string,'&');
//open connection
$ch = curl_init();
$ckfile = tempnam ("/tmp", "CURLCOOKIE");
//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL,$loginURL);
curl_setopt($ch,CURLOPT_POST,count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);
curl_setopt ($ch, CURLOPT_COOKIEJAR, $ckfile);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
//curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
//execute post
$result = curl_exec($ch);
//print_r(curl_getinfo($ch));
//echo $result;
//close connection
curl_close($ch);
$pos = strpos($result,"Invalidate Mobile Number Or Password");
if($pos !== false) {
die('{"status":"ok","error":"Invalidate Mobile Number Or Password"}');
}
$pos = strpos($result,"Invalidate Mobile Number");
if($pos !== false) {
die('{"status":"ok","error":"Invalidate Mobile Number"}');
}
$checkUsageUrl="https://www.three.com.hk/appCS2/usageNotYetBilled.do?lang=eng";
//$checkUsageUrl="dummypage.html";
$ch = curl_init();
//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL,$checkUsageUrl);
curl_setopt ($ch, CURLOPT_COOKIEFILE, $ckfile);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
//curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
//execute post
$result = curl_exec($ch);
//print_r(curl_getinfo($ch));
//echo $result;
//close connection
curl_close($ch);
$usageData=array();
$result=str_replace("\r","",$result);
$result=str_replace("\n","",$result);
$result=str_replace("\t","",$result);
$result=str_replace(" ","",$result);
//echo $result;
$usageData['cycleStart']=search_string($result,'CycleStartDate:</td><tdwidth="422"class="menu4_o">(.*?)</td>');
$usageData['videoCall']=search_string($result,'Videocalltime--><spanclass="keypro_u">(.*?)</span');
$usageData['basicCallTime']=search_string($result,'Basiccalltime<spanclass="keypro_u">(.*?)</span>minutes');
$usageData['intraCallTime']=search_string($result,'Intra-3calltime<spanclass="keypro_u">(.*?)</span');
$usageData['totalCallTime']=search_string($result,'Totalvoicecalltime<spanclass="keypro_u">(.*?)</span');
$usageData['wirelessLocalData']=search_string($result,'<!--Wirelessdata-->(.*?)<tdalign="right"><spanclass="keypro_u">(.*?)</span>KB',2);
//this is KB!!!!
$usageData['multimediaContent']=search_string($result,'Multimediacontent\(M\)</td><tdalign="right"><spanclass="keypro_u">(.*?)</span');
$usageData['textContent']=search_string($result,'Textcontent\(T\)</td><tdalign="right"><spanclass="keypro_u">(.*?)</span');
$usageData['smsIntra']=search_string($result,'SMSIntra-operator</td><tdalign="right"><spanclass="keypro_u">(.*?)</span');
$usageData['smsInter']=search_string($result,'SMSInter-operator</td><tdalign="right"><spanclass="keypro_u">(.*?)</span');
$usageData['smsInternational']=search_string($result,'SMSInternational</td><tdalign="right"><spanclass="keypro_u">(.*?)</span');
return json_encode($usageData);
}
print_r(getDataUsageFromThreeAccount($_REQUEST['mobileno'],$_REQUEST['password']));
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment