Help with cURL script for yahoo login

Discussion in 'PHP' started by 143phoenix, Feb 12, 2011.

  1. #1
    i am new to curl .and i m trying to create create a script for my client to log into yahoo and click the confirmation link in emails.
    but i am stuck witht he login process only
    i made the code below . but still i cant make it work. the problem is yahoo is implementing a captcha challange for this kind of automated headers. do you have any idea ho to make it work again without alerting the captcha challange ?

    the header i caught through the livehttp header is as follows:

    Content-Length: 347
    .tries=1&.src=ym&.md5=&.hash=&.js=&.last=&promo=&.intl=in&.bypass=&.partner=&.u=4ls6cr96lbs8e&.v=0&.challenge=W9w31pCrbdazCcY4mH41fVsyxwd8&.yplus=&.emailCode=&pkg=&stepid=&.ev=&hasMsgr=0&.chkP=Y&.done=http%3A%2F%2Fmail.yahoo.com&.pd=ym_ver%3D0%26c%3D%26ivt%3D%26sg%3D&pad=1&aad=1&login=myyahooid&passwd=mypassword&.persistent=y&.save=&passwd_raw=


    <?php
    
        
        $authUrl    = "https: //login.  yahoo  .   com/config/login?";
        $userAgent  = "Mozilla/5.0 (Windows NT 5.1; rv:2.0b11) Gecko/20100101 Firefox/4.0b11";
        $referer    = "http  :  //  my  .  yahoo  .  com";
        $login      = "userid";
        $password   = "password";
        $numPostData = 22;
        $cookieFileJar  = "ycookie.txt";
        $cookie = 0;
        $postData = ".tries=1&.src=ym&.md5=&.hash=&.js=&.last=&promo=&.intl=in&.bypass=&.partner=&.u=4ls6cr96lbs8e&.v=0&.challenge=W9w31pCrbdazCcY4mH41fVsyxwd8&.yplus=&.emailCode=&pkg=&stepid=&.ev=&hasMsgr=0&.chkP=Y&.done=http%3A%2F%2Fmail.yahoo.com&.pd=ym_ver%3D0%26c%3D%26ivt%3D%26sg%3D&pad=1&aad=1&login=$login&passwd=$password&.persistent=y&.save=&passwd_raw=" ;
    
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_USERAGENT, $userAgent);
    
        // Set the referrer
        curl_setopt($ch, CURLOPT_REFERER, $referer);
    
        // Set the authentication url
        curl_setopt($ch, CURLOPT_URL, $authUrl);
    
        // Set number of post fields
        curl_setopt($ch, CURLOPT_POST, $numPostData);
    
        //Set post data in key=value pair such as login=yourusername
        curl_setopt($ch, CURLOPT_POSTFIELDS, $numPostData);
    
        //Set filename for storing cookie information
        curl_setopt($ch, CURLOPT_COOKIEJAR, $cookieFileJar);
    
        //Set ffilename for checking the stored cookie information
        curl_setopt($ch, CURLOPT_COOKIEFILE, $cookieFileJar);
    
        //Set option for cookie
        curl_setopt($ch, CURLOPT_COOKIE, $cookie);
     
     //set this to output the result as string and not output directly ot browser
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    
     //set this value to 1 if you want to redirect to the url you provided as service url
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
     
     //Set this option if you do not want to verify ssl
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
     
     //set this option if you do not want to verify peer's certificate
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
     
     //now execute the curl
        $res = curl_exec($ch);
         echo $res;
     //check if the username and password is valid
        if ((preg_match("/invalid/i", $res)) || (preg_match("/not yet taken/i", $res))) {
            echo "Invalid Login";
        }
        else {
      //if  CURLOPT_FOLLOWLOCATION is set to 1 then after logging in successfully user is directed to url that is specified as service url
            echo "Logged In";
        }
    ?>
    PHP:

    then i have to work for clicking confirmation links in mails. please suggest me some ways.i would be very grateful to you :)
     
    143phoenix, Feb 12, 2011 IP