2011-02-08 4 views
1
<?php 
$email = ""; 
$password = ""; 


function searchstring($string_to_search,$string_start,$string_end) 
    { 
     if (strpos($string_to_search,$string_start)===false) 
      return false; 
     if (strpos($string_to_search,$string_end)===false) 
      return false; 
     $start=strpos($string_to_search,$string_start)+strlen($string_start);$end=strpos($string_to_search,$string_end,$start); 
     $return=substr($string_to_search,$start,$end-$start); 
     return $return; 
      } 

//curl get 
function curl_get($ch, $url, $cookiefile) { 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_USERAGENT,"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13"); 
    curl_setopt($ch, CURLOPT_COOKIEJAR, $cookiefile); 
    curl_setopt($ch, CURLOPT_COOKIEFILE, $cookiefile); 
    //curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
    $data = curl_exec($ch); 
    return $data; 
} 

//curl post 

function curl_post($ch, $url, $cookiefile, $post) { 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_POST, 1); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_USERAGENT,"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13"); 
    curl_setopt($ch, CURLOPT_COOKIEJAR, $cookiefile); 
    curl_setopt($ch, CURLOPT_COOKIEFILE, $cookiefile); 
    //curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
    $data = curl_exec($ch); 
    return $data; 
} 

//cookie file 
$cookiefile = "cookie.txt"; 

$ch = curl_init(); 



//get url to grab GALX to login 
$data = curl_get($ch, "https://www.google.com/accounts/ServiceLogin?uilel=3&service=youtube&passive=true&continue=http%3A%2F%2Fwww.youtube.com%2Fsignin%3Faction_handle_signin%3Dtrue%26nomobiletemp%3D1%26hl%3Den_US%26next%3D%252Findex&hl=en_US&ltmpl=sso", $cookiefile); 

//grab galx token needed to login 
preg_match('/name="GALX"\s*value="(.*?)"/', $data, $galx); 


//login 
$thegalx = $galx[1]; 

          $post_elements=array('ltmpl'=>'sso', 
          'continue'=>'http://www.youtube.com/signin?action_handle_signin=true&nomobiletemp=1&hl=en_US&next=%2Findex', 
          'next'=>'/', 
          'service'=>'youtube', 
          'uilel'=>3, 
          'ltmpl'=>'sso', 
          'hl'=>'en_US', 
          'ltmpl'=>'sso', 
          'GALX'=>$thegalx, 
          'Email'=>$email, 
          'Passwd'=>$password, 
          'PersistentCookie'=>'yes', 
          'rmShown'=>1, 
          'signIn'=>'Sign in', 
          'asts'=>false, 
          ); 



$login = curl_post($ch, "https://www.google.com/accounts/ServiceLoginAuth", $cookiefile, $post_elements); 






//auth url 
$data = curl_get($ch, "https://www.google.com/accounts/CheckCookie?continue=http%3A%2F%2Fwww.youtube.com%2Fsignin%3Faction_handle_signin%3Dtrue%26nomobiletemp%3D1%26hl%3Den_US%26next%3D%252Findex&hl=en_US&service=youtube&ltmpl=sso&chtml=LoginDoneHtml", $cookiefile); 

//grab auth url 
$authurl=html_entity_decode(urldecode(str_replace('\x', '%', searchstring($data,'location.replace("','"')))); 
//print_r($authurl); 



//hit auth url to login 
curl_get($ch, $authurl, $cookiefile); 


//$ch = curl_init(); 

//$data = curl_get($ch, "http://www.youtube.com/watch?v=VBqVfmWM1og", $cookiefile); 
//print $data; 
//doesnt work 

// youtube 
$datayoutube = curl_get($ch, "http://www.youtube.com/", $cookiefile); 
print_r($datayoutube); 

curl_close($ch); 

?> 

Salut,ayant quelques problèmes avec boucle

Je suis capable de se connecter avec succès sur YouTube en saisissant la valeur galX. Lorsque j'imprime le contenu de http://youtube.com qui se trouve en bas du code, cela s'affiche très bien et cela montre que je suis connecté .. mais si je devais imprimer le contenu d'une URL vidéo (commentée ci-dessous dans le code) la page est juste vide et blanche .. cela me rend fou, quelqu'un sait pourquoi cela se produit?

+1

Le rapport d'erreurs est-il activé? –

+0

Si la question est triée, vous pouvez utiliser le lien de suppression vers le bas. –

+0

ok, suis-je le seul qui a vu ce poste se transformer en 'oooo ok okfiewrjtoeij'? – JohnP

Répondre

0

L'un des problèmes que j'ai eu était avec les en-têtes, les post-champs et les cookies. Bien qu'il semble que vous ayez réglé la partie cookies, assurez-vous d'utiliser LiveHTTPHeaders (une extension de Firefox) pour renifler et voir quels en-têtes supplémentaires sont envoyés et si d'autres données postales sont envoyées via des formulaires cachés, etc.

Des cookies supplémentaires sont également utilisés. Bien que la boucle SETOPT_COOKIEJAR s'occupe principalement des cookies, la gestion des cookies est un peu difficile à cause de cette automatisation.

Assurez-vous donc de vérifier les informations envoyées lors du chargement d'une page vidéo sur youtube après vous être connecté et d'ajouter ces champs à boucler. Bonne chance.

Questions connexes