• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

QuickFire

[PHP]Tráfego Netvisão - usando CURL lib

15 mensagens neste tópico

Boas :) No seguimento da thread existente nas Ajudas, depois de resolver este enigma posto aqui o source deste script que permite que qualquer utilizador de netvisão possa confortavelmente aceder às suas estatísticas dos consumos de internet :)

Os créditos vão para todas as pessoas que me ajudaram (um especial agradecimento para o magician que me deu o link para resolver isto, e outros noutros forums).

O script foi uma adaptação do script de login no ebay, referênciado também na thread das ajudas :)

Devo acrescentar que o código está muito mal documentado e desorganizado :P

<?php
header("Content-Type: text/html; charset=utf-8");
// Crie um ficheiro cookies.txt, no mesmo directório que este script, e dê-lhe permições de escrita.
// Editar as variaveis abaixo de acordo com o seu número de cliente e respectiva password usada no site da cabovisão.
$n_cliente = "XXXXXXXX";
$password = "XXXXXXXX";

// Não editar mais a partir daqui

$meses = array ("Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro");
$referer = "http://clientes.cabovisao.pt/index_main.php";
$post = 'client_number='.$n_cliente.'&client_password='.$password.'&submit=Enviar Dados&action=check_login'; 
$agent = "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.4) Gecko/20030624 Netscape/7.1 (ax)";
$cookies = "cookies.txt";

// Passo 1:

$url = "http://clientes.cabovisao.pt/index_main.php";

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS,$post); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_REFERER, $referer);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookies);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookies);
$result = curl_exec ($ch);
curl_close ($ch); 

// Passo 2:

$url = "http://clientes.cabovisao.pt/internetx_modem_statistics_2007.php";

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_REFERER, $referer);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookies);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookies);
$result = curl_exec ($ch);
curl_close ($ch);

// Passo 3:

$pos = strpos($result, '<td>   <b>Mac Address</b></td>', 0);
$result = substr($result,$pos+190);

$gasto = substr($result,0,6);

for ($i=6 ; !is_numeric($gasto) ; $i--)
	$gasto = substr($result,0,$i); 

$pos = strpos($result, '<td>   20',0);
$ult_leitura = substr($result, $pos+22, 19);
$limite = substr($result,$pos+69,2);
$percentagem = ($gasto*100)/$limite;

// Passo 4:

$gasto .= " Gigabytes";
$limite .= " Gigabytes";
$percentagem = round($percentagem,2) . "%";

//Decompor leitura
$ult_leitura = explode(" ",$ult_leitura);

//Personalizar Data
$data = explode("-",$ult_leitura[0]);
$mes = $meses[$data[1] - 1];
$dia = $data[2];
$data = $dia ." de ". $mes;

//Personalizar Hora
$hora = explode(":",$ult_leitura[1]);
$hora = $hora[0].":".$hora[1];

//Final
$ult_leitura = $data ." às ".$hora;

echo "Gasto: $gasto<br/>Limite: $limite<br/>Percentagem: $percentagem<br/>Ult. Leitura: $ult_leitura";
?>

Alguma dúvida com o código podem dizer :)

Se quiserem ver o código em funcionamento é só enviarem PM e eu dou-lhes um link em que poderão ver :D

Daqui podem surgir várias coisas como as estatísticas de outros ISP's, entre outros :)

EDIT:

Pequeno update para optimizar um pouco o código para correr no meu novo webserver :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Vejo que te conseguiste arranjar :P

Curl é muito fixe  mas de inicio é uma beka complicado :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Muito bom quickfire, ja tinha uma vaga idea de cURL mas agora com este script fizeste-me esclarecer muitas duvidas :D

upa upa quando tiver tempo vo brincar muito com isto eheheh :P

mais uma vez obrigado, good post [[]] :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

isso com sockets ficava "ligeiramente" mais pequeno não? ;P Still, great post :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Olá,

Não está a funcionar...

Warning: Division by zero in .../public_html/cnetvisao.php on line 78
Gasto: e Gigabytes
Limite: fa Gigabytes
Percentagem: 0%
Ult. Leitura: de às rel="styleshee: 

Onde a linha 78 é: 

$percentagem = ($gasto*100)/$limite;

Verifiquei que alguns "link" não estão actualizados, por exemplo, onde está:

// Passo 3:
$url = "http://clientes.cabovisao.pt/internetx_modem_statistics.php";

deveria ser:

// Passo 3:
$url = "http://clientes.cabovisao.pt/internetx_modem_statistics_2007.php";

Mas de certo existem mais situações a acertar.

Cumprimentos,

LuBoc

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas isso é claro meus amigos :confused: Olhando rapidamente para a data do tópico é normal que algumas coisas tenham mudado :)

Se tiver paciência logo à noite posto aqui a nova versão :D

Obrigado pelo aviso :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pronto, Post inicial updated e o script (pelo menos para mim) já funciona :)

Hope you like it :D

djthyrax, tenho de aprender a usar sockets que era capaz de ser mais clean :confused: Este também foi mais para experiência :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

djthyrax, tenho de aprender a usar sockets que era capaz de ser mais clean :confused: Este também foi mais para experiência :)

Se não pretenderes fazer servers, também não te vai servir de muito. Sockets também necessita de uma extensão tal como o cURL. Anyway, eu costumo usar é a função fsockopen(), dá para tudo o que preciso :D
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pronto, Post inicial updated e o script (pelo menos para mim) já funciona :P

Hope you like it :P

djthyrax, tenho de aprender a usar sockets que era capaz de ser mais clean :( Este também foi mais para experiência :P

Boas, eu sei que o tópico é antigo mas também ando a tentar fazer um script (no meu caso, em python) para ir buscar o tráfego da netvisão e não consigo nem por nada. Tentei correr o teu código mas pelos vistos também já não funciona, não faz login... Tens alguma versão a funcionar ou já não o usas?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas, eu sei que o tópico é antigo mas também ando a tentar fazer um script (no meu caso, em python) para ir buscar o tráfego da netvisão e não consigo nem por nada. Tentei correr o teu código mas pelos vistos também já não funciona, não faz login... Tens alguma versão a funcionar ou já não o usas?

Não uso

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Isso é fácil de se fazer basta simular os pedidos http feitos até à pagina das estatísticas e depois fazer um parse dessa pagina e sacar os valores. Já fiz uma em Java mas foi para Sapo.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora