1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

php - cURL login no myVodafone

Discussão em 'Web Development' iniciada por fabioneves, 16 de Julho de 2008. (Respostas: 15; Visualizações: 2733)

  1. fabioneves

    fabioneves Power Member

    Boas,

    Estou a tentar efectuar login no myVodafone através de um script em PHP utilizando a lib cURL.
    Já fiz um identico para o meu blog wordpress e funciona na boa, mas para o site da vodafone não estou a conseguir..

    Se alguém me pudesse dar uma ajuda eu agradecia, eis o que eu tenho até agora:

    Código:
    // dados para o POST
    $data = array('Login1:userid' => 'num', 'Login1:password' => 'pw');
    
    //inicia o objecto
    $ch = curl_init();
    
    // opções/acções a passar ao objecto
    curl_setopt($ch, CURLOPT_COOKIEJAR, "cookies.txt");
    curl_setopt($ch, CURLOPT_COOKIEFILE, "cookies.txt");
    curl_setopt($ch, CURLOPT_URL, "https://my.vodafone.pt/guest/"); // URL
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // Redirecciona caso o site "mande"
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1"); // Agent
    curl_setopt($ch, CURLOPT_POST, true); // Opção do CURL para efectuar um post ao abrir o URL
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data); // Campos definidos em cima para o submit
    
    // Executa as opções definidas no objecto
    curl_exec($ch);
     
  2. fabioneves

    fabioneves Power Member

    Já consegui, podem fechar.
    Obrigado
     
  3. já agora explicavas como... :007::007:
     
  4. fabioneves

    fabioneves Power Member

    Vou criar uma classe e depois publico, o código ainda esta uma bagunça :p
     
  5. metRo_

    metRo_ Power Member

    E podes explicar em que consiste a lib cURL?
     
  6. fabioneves

    fabioneves Power Member

    Permite-te comunicar em vários protocolos, como: http, https, ftp, telnet, etc..
    Dá imenso jeito se queres por exemplo ir buscar um valor qualquer a um site que necessite login, como é o caso (a minha ideia é criar uma WebApp para o iPhone, estou quase lá ;)).

    Ao iniciares o objecto, podes definir uma série de opções que vão ditar a interacção com a conexão que efectuaste, depois mandas o curl executar essas mesmas opções e depois ele faz "output" do resultado que receber.

    Se tiveres mais alguma dúvida, diz qualquer coisa.

    Manual PHP (curl_setopt)
    Link
     
  7. metRo_

    metRo_ Power Member

    Isso quer dizer que por exemplo, usando o exemplo da vodafone - envio de sms, eu conseguiria criar um site com 4 campos, em que um era o numero, outro para a pass e depois mais dois um para o numero a quem ia enviar a sms e outro para o texto. Isto era possivel usando essa libraria?
     
  8. fabioneves

    fabioneves Power Member

    Exactamente, é uma das funcionalidades que vou colocar na minha webapp!
    Penso que até amanha à noite já posto a minha classe para "brincar" com o site da vodafone..
    Acabei o work agora vou pra casa, Abraço
     
  9. _rcosta_

    _rcosta_ Power Member

    Bem eu estou tambem a tentar programar isso. Fiz o seguinte código:

    Código:
    <?php
    $nome_utilizador = "91xxxxxxx;
    $password = "xxxxxxxx";
    $LOGINURL = "https://my.vodafone.pt/guest/";
    $agent = "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.4) Gecko/20030624 Netscape/7.1 (ax)";
    $POSTFIELDS = 'Login1:userid='.$nome_utilizador.'&Login1:password='.$password;
    $referer = "https://my.vodafone.pt/sc/SCIFrameIndex.aspx";
    
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
    curl_setopt($ch, CURLOPT_URL,$LOGINURL);
    curl_setopt($ch, CURLOPT_USERAGENT, $agent);
    curl_setopt($ch, CURLOPT_POST, 1); 
    curl_setopt($ch, CURLOPT_POSTFIELDS,$POSTFIELDS); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_REFERER, $referer);
    curl_setopt($ch, CURLOPT_COOKIEFILE, '/temp/cookie.txt');
    curl_setopt($ch, CURLOPT_COOKIEJAR, '/temp/cookie.txt');
    $result = curl_exec ($ch);
    curl_close ($ch);
    echo $result;
    ?>
    Acontece que esse script nao esta a funcionar :S. Nao sei se terá a ver com o URL de login. Utilizei o LiveHTTPHeaders e obtem-se os seguintes POST quando se faz o login:


    POST
    Código:
    /cms2002/templates/homepage.aspx?NRMODE=Published&NRORIGINALURL=%2fguest%2fhomepagePre%2ehtm%3fou%3d%26ecode%3d202%26edesc%3dNo%2520Authentication%2520Ticket%2520Provided&NRNODEGUID=%7bB9DED956-B87F-4C24-852C-70A3BBBB0161%7d&NRCACHEHINT=Guest&edesc=No%20Authentication%20Ticket%20Provided&ecode=202 __EVENTTARGET=Login1%3ALoginBttn&__EVENTARGUMENT=&__VIEWSTATE=dDwt[B][I](...)[/I][/B]PVw%2BXDxhIGhyZWY9L2d1ZXN0L2Z%3D&HeaderVodafone%3ATxtPesquisa=Procurar&Login1%3Auserid=91xxxxxxx&Login1%3Apassword=xxxxxxx
    POST
    Código:
    /ucp//auth/login.asp?crypt=0&prf=0&key=alias userid=91xxxxxxx&password=xxxxxxx&sru=https%3A%2F%2Fmy.vodafone.pt%2Fpm%2FSPMDispatcher.aspx%3FPMcmd%3D17%26userClass%3D10%26Guid%3D%7BB9DED956-B87F-4C24-852C-70A3BBBB0161%7D%26ReturnUrl%3Dhttps%253a%252f%252fmy.vodafone.pt%252fguest%252fhomepagePre.htm&fru=https%3A%2F%2Fmy.vodafone.pt%2Fguest%2FhomepagePre.htm&svc_id=myprodpub


    Agradecia a quem me pudesse ajudar a programar isso.
     
  10. IcePicK

    IcePicK Power Member

    Por acaso algum já conseguiu resolver isto?
     
  11. _rcosta_

    _rcosta_ Power Member

    ja consegui obter a pagina de envio de sms do my vodafone atraves do phpcurl. Mas vendo bem nao era isso que queria.
    O que pretendia era por exemplo enviar uma sms partir do my vodafone mas em que o numero e o texto a enviar eram definidos nos campos de uma pagina criada por mim. Depois o script apenas enviaria esses campos para o myvodafone e processava o envio automaticamente.
    Alias o meu objectivo mesmo é como tenho cartoes das 3 redes era conjugar numa unica pagina os serviços de envio de sms das 3 operadoras. é que vendo bem nem sei se o php cURL permite fazer isso.
    Uma duvida (um bocado estupida) é por exemplo: por detras da pagina de envio de sms do my vodafone há um script que corre por detrás para enviar o sms. Havera forma de comunicar logo directamente com esse script em vez de estar a comunicar com a pagina do my vodafone?
     
  12. podes colocar aqui o código de como conseguiste obter a página de envio de sms do my vodafone? tou farto de tentar e ainda não consegui...
     
  13. sim. eu também tenho tentado sem sucesso :( podes postar o código sff?
     
  14. fabioneves

    fabioneves Power Member

    Se alguém ainda precisar:
    Link

    (Actualizei o link, pois estava quebrado)
     
  15. fabioneves

    fabioneves Power Member

    Para os interessados, estou a desenvolver a versão 2.0 desta classe, que passou a ser "mais aplicação", pois estou a desenhar um interface para consulta do XML.

    Esta versão ainda estará um bocado básica em termos de histórico, porque só irá ler um único XML, no futuro pretendo guardar um histórico de cada XML para a construcção de gráficos e análise de consumos ao longo do tempo, etc...

    Aqui fica um preview do interface:
    [​IMG]
     
  16. Alguma novidade sobre esta nova class?
     

Partilhar esta Página