Curl, yahoo, hotmail et les autres: comment faire?

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Curl, yahoo, hotmail et les autres: comment faire?

par choubix » 15 janv. 2008, 07:47

bah: dans le nombre il y en aura certains qui le feront. la ou je suis le gens font plutot confiance. et comme je ne vais pas m'amuser a les prendre pour des idiots ;) (mais: never underestimate the predictability of human stupidity ;) Snatch)

l'idee c'est de faire comme facebook qui propose d'inviter des copains a se connecter.
maintenant si je peux comparer le carnet d'adresse de l'utilisateur avec ce que j'ai en base de donnees sans avoir recours au mot de passe ca serait mieux mais je doute que ca soit possible.

bon sinon j'ai decompose la page de login de yahoo en ca:

Code : Tout sélectionner

https://login.yahoo.com/config/login?.tries=1&.src=&.md5= &.hash=&.js=&.last=&promo=&.intl=us&.bypass=&.partner= &.u=3l6c7pd3oof6v&.v=0&.challenge=o3Z6VTd6oA.BZzPWNOoNCq8_A8ei &.yplus=&.emailCode=&pkg=&stepid=&.ev=&hasMsgr=0&.chkP=Y &.done=http://mail.yahoo.com&.pd=_ver=0&c=&login=$login&passwd=$password
ca marche au poil si je copie/colle dans la barre d'adresse en mettant mon login et password


apres dans ma page php j'ai mis ceci:
<?php
    # Show the user agent
    echo 'Your user agent is: <b>'.$_SERVER['HTTP_USER_AGENT'].'</b><br />';
    
	
$url = "https://login.yahoo.com/config/login?";
$url_string =  ".tries=1&.src=&.md5=&.hash=&.js=&.last=&promo=&.intl=us&.bypass=";
$url_string .= "&.partner=&.u=3l6c7pd3oof6v&.v=0&.challenge=o3Z6VTd6oA.BZzPWNOoNCq8_A8ei";
$url_string .= "&.yplus=&.emailCode=&pkg=&stepid=&.ev=&hasMsgr=0&.chkP=Y&";
$url_string .= ".done=http://mail.yahoo.com&.pd=_ver=0&c=&login=$login&passwd=$password";

$url_login = $url . $url_string; 

    $ch = curl_init();
    // SET OPTIONS
	
    # Fake the user agent as your own browser.
    curl_setopt ($ch, CURLOPT_USERAGENT, "{$_SERVER['HTTP_USER_AGENT']}");
	curl_setopt ($ch, CURLOPT_REFERER, "http://mail.yahoo.com");  
    
    # Return the data without printing it
	curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
	# URL
    curl_setopt($ch, CURLOPT_URL,$url_login);
     
     
    # Put the data in a variable and close curl
    $data = curl_exec($ch);
    curl_close($ch);
     
    # Modify the return data
    echo $data; 
?> 
mais ca ne passe pas (en changeant le $login et $password par leurs valeurs bien sur)

par contre si j'utilise $url au lieu de $url_login la page de login de yahoo m'est bien renvoyee a l'ecran.

je ne capte pas trop ou ca plante...
si qq un a 5 minutes pour regarder mon code et me dire ce qu'il en pense ca serait sympa :)

merci!

Re: Curl, yahoo, hotmail et les autres: comment faire?

par Xenon_54 » 15 janv. 2008, 07:15

pour cela je souahite donc faire un petit formulaire ou l'utilisateur renseigne son serveur email (yahoo, hotmail, gmail...) et son mot de passe.
:non:

Qui serait assez bête pour donner leur mot de passe de compte courriel?
Ok, ça existe mais bon... pas sûr que je le donnerai si c'était moi...

Curl, yahoo, hotmail et les autres: comment faire?

par choubix » 15 janv. 2008, 05:47

hello,

je souhaite donner la possibilite aux utilisateurs d'un site de verifier si leurs copains sont inscrits sur le mien et les inviter si ca n'est pas le cas.

pour cela je souahite donc faire un petit formulaire ou l'utilisateur renseigne son serveur email (yahoo, hotmail, gmail...) et son mot de passe. puis via Curl lancer la page, verifier que les emails du carnet d'addresse sont dans ma base de donnees ou pas. s'ils ne le sont pas laisser a l'utilisateur la possibilite d'inviter ses copains.

donc j'ai un peu cherche hier et je suis tombe sur des classes en java qui m'avaient l'air assez compliquees a mettre en place. j'ai egalement trouve Curl qui me semble bien pour faire ce job :)

j'ai ete assez bluffe par ce que l'on peut faire avec...

donc j'ai fait ceci:
<?php

# montrer le user Agent (eviter de se faire blacklister...)
echo 'Your user agent is: <b>'.$_SERVER['HTTP_USER_AGENT'].'</b><br />';
    
	
$login = "monLogin";
$password = "monPassword";

$url = "https://login.yahoo.com/config/login?";
	
    $ch = curl_init();
    // SET OPTIONS
     

     
    # eviter de se faire blacklister
    curl_setopt ($ch, CURLOPT_USERAGENT, "{$_SERVER['HTTP_USER_AGENT']}");
    curl_setopt($ch, CURLOPT_REFERER, "http://mail.yahoo.com"); 

    # URL
    curl_setopt($ch, CURLOPT_URL,$url);
	
    # specifier la methode: POST or GET
	curl_setopt ($ch, CURLOPT_POST, 1);
	curl_setopt ($ch, CURLOPT_POSTFIELDS,'login=monLogin&passwd=monPassword');
	

    # Activer les cookies au cas ou
    curl_setopt ($ch, CURLOPT_COOKIEJAR, cookiefile);
    curl_setopt ($ch, CURLOPT_COOKIEFILE, cookiefile); 
	     
    # Suivre la redirection + stocker le resultat en variable
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);  
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
     
    # lancer la requete
    $data = curl_exec($ch);
    curl_close($ch);
     
    # afficher la requete
    echo $data; 
?> 
le soucis: ca me retourne juste le USER_AGENT, rien d'autre.
si a la ligne:
curl_setopt ($ch, CURLOPT_POSTFIELDS,'login=monLogin&passwd=monPassword');

je supprime la partie sur le mot de passe je vois bien la page Yahoo qui me dit que le Login ou le Mot de passe sont errones (donc j'arrive bien a charger la page MAIS pas a me logger correctement)

qq un aurait il une idee de comment faire en sorte que l'identification se passe normalement svp?

merci :)