Page 1 of 1

bot php curl

PostPosted: Thu May 16, 2013 10:52 pm
by TAMTAM
bonjour tt le monde
en ce momment je travail sur un projet tuteure, une app qui doit collecte des infos sur twitter et les represente avec un jgraph, j developpe un bot avec l'api de twitter , le hic c qu'on est extrêmement limite niveau roquette (150 par heure), en plus de ça l api retourne moins de résultat que prévue ( une histoire d adresse ip partage avec des sites internet derrière le proxy du fournisseurs ) donc je me suis met a développer un bot en dure , (vos imaginez la suite) ca marche pas ni pour twitter ni même sur le forum d’ailler ,c bizzare mais je commence a dote de curl , car par exemple , sur des site , je peut passer des arguments sa marche , mais des qu il s agit de poster des formulaire , rien de rien , je vous poste le code , vous en pensez quoi ?
merci par avance




[code:1:37c6cd19d4]

<?php


curl_login('http://hackbbs.org/login.php','login=tamtam&password=*******&Connexion=Connexion','','off' );
echo curl_grab_page ('http://hackbbs.org/index.php','','off');
echo "hhhhhhhhhhhhhhhhh";




function curl_login ($url, $data, $proxy , $proxystatus){

$fp = fopen("cookie.txt", "w");
fclose ($fp);

$login = curl_init();
curl_setopt($login, CURLOPT_COOKIEJAR, "cookie.txt");
curl_setopt($login, CURLOPT_COOKIEFILE, "cookie.txt");
curl_setopt($login, CURLOPT_USERAGENT, "Mozilla/5.0;
curl_setopt($login, CURLOPT_TIMEOUT, 40);
curl_setopt($login, CURLOPT_RETURNTRANSFER, true);

if ($proxystatus == 'on'){

curl_setopt($login, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($login, CURLOPT_HTTPPROXYTUNNEL, true);
curl_setopt($login, CURLOPT_PROXY, $proxy);


}


curl_setopt($login, CURLOPT_URL, $url);
curl_setopt($login, CURLOPT_HEADER, true);
curl_setopt($login, CURLOPT_USERAGENT, $_SERVER ['HTTP_USER_AGENT']).
curl_setopt($login, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($login, CURLOPT_POST, true);
curl_setopt($login, CURLOPT_POSTFIELDS, $data);
ob_start();
return curl_exec($login);
ob_end_clean();// stop preventing output
curl_close($login);
unset($login);

}

function curl_grab_page ($site, $proxy, $proxystatus){

$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
if ($proxystatus == 'on') {
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, true);
curl_setopt($ch, CURLOPT_PROXY, $proxy);

}
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt");
curl_setopt($ch, CURLOPT_URL, $site);
ob_start();
return curl_exec($ch);
ob_end_clean();
curl_close ($ch);


}

?>


[/code:1:37c6cd19d4]

PostPosted: Fri May 17, 2013 10:49 am
by SHEPSHEP
Salut TAMTAM,

Une petite présentation aurait été top...

Déjà à vue d’œil c'est coqué ici : curl_setopt($login, CURLOPT_USERAGENT, "Mozilla/5.0;

Je regarde plus en détail dès que j'ai un peu de temps.

PostPosted: Fri May 17, 2013 10:57 am
by SHEPSHEP
Si ton problème de syntaxe n'est pas un problème de copier/coller, utilise un éditeur PHP digne de ce nom qui te parsera ton code et lèvera les erreurs de syntaxe (NetBeans7.3 =>[url]hxxps://netbeans.org/downloads/[/url]).

Sinon, je viens de tester ton code et il fonctionne ...

PostPosted: Mon May 20, 2013 12:41 pm
by TAMTAM
bonjour
merci pour la suggestion netbeans , je l'utilise déjà pour swing sous java , et j'ai suivi ton conseil pour php, une seule chose a dire, c top :wink:

sinon pour le code en effet avec un echo derrière la fonction curl_login() ça fonction , car avec l'autre fonction curl_grab() ça pose problème au niveau de cookie (sur le site y on a pas )
par contre le problème se pose toujours sur la page d'accueil de twitter , je capture la trame de requête http (je me connect avec firefox) sur la page de la session , je met les même paramètre dans le code , pourtant rien se passe :?: :?: :?:

[code:1:fbc29038ea]


<?php

curl_login('https://twitter.com/sessions','session%5Busername_or_email%5D=projettwitt&session%5Bpassword%5D=*******&remember_me=1&return_to_ssl=true&scribe_log=&redirect_after_login=%2F&authenticity_token=0a55a93cef22e8f308a824ba95cdcb2c92ac8440','','off' );
echo "hhhhhhhhhhhhhhhhhc";
echo curl_grab_page ('https://twitter.com/','','off');
echo "hhhhhhhhhhhhhhhhh";




function curl_login ($url, $data, $proxy , $proxystatus){

$fp = fopen("cookie.txt", "w");
fclose ($fp);

$login = curl_init();
curl_setopt($login, CURLOPT_COOKIEJAR, "cookie.txt");
curl_setopt($login, CURLOPT_COOKIEFILE, "cookie.txt");
curl_setopt($login, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0");
curl_setopt($login, CURLOPT_TIMEOUT, 40);
curl_setopt($login, CURLOPT_RETURNTRANSFER, true);

if ($proxystatus == 'on'){

curl_setopt($login, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($login, CURLOPT_HTTPPROXYTUNNEL, true);
curl_setopt($login, CURLOPT_PROXY, $proxy);


}


curl_setopt($login, CURLOPT_URL, $url);
curl_setopt($login, CURLOPT_HEADER, true);
curl_setopt($login, CURLOPT_USERAGENT, $_SERVER ['HTTP_USER_AGENT']).
curl_setopt($login, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($login, CURLOPT_POST, true);
curl_setopt($login, CURLOPT_POSTFIELDS, $data);
ob_start();
return curl_exec($login);
ob_end_clean();// stop preventing output
curl_close($login);
unset($login);

}

function curl_grab_page ($site, $proxy, $proxystatus){

$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
if ($proxystatus == 'on') {
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, true);
curl_setopt($ch, CURLOPT_PROXY, $proxy);

}
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt");
curl_setopt($ch, CURLOPT_URL, $site);
ob_start();
return curl_exec($ch);
ob_end_clean();
curl_close ($ch);


}[/code:1:fbc29038ea]

plus bizzare encore , le fichier cookie.txt est tjrs vide :!: :?:

PostPosted: Tue May 21, 2013 6:45 pm
by TAMTAM
bonjour

j'ai du nouveau

ca y est , j arrive a me connecte et même a remplir le fichier cookie.txt
ca marche sur facebook , enfin quand il décident de pas mettre de captcha, mais reste un problème, ça marche pas sur twitter , ça me retourne une réponse bizarre avec une erreur

[code:1:84167375d5]HTTP/1.1 302 Found cache-control: no-cache, no-store[/code:1:84167375d5]

une histoire de cache , vraiment étrange :shock: , en tous cas je sèche sur ce coup la aussi, si vos avez des pistes.

PostPosted: Wed May 22, 2013 7:23 am
by SHEPSHEP
Salut,

Le code HTTP 302 signale une redirection.

Cache-control est une entête HTTP.
"no-cache" spécifie qu'aucun cache (proxy, navigateur) ne doit être utilisé.
"no-store" spécifie que la requête et son résultat ne doivent pas être mises en cache.

Un peu de doc : [url]hxxp://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9[/url]

Sinon, je ne vois pas trop se qui déconne, vérifie bien ton url, dump ton objet curl ...

++
2ShEp

PostPosted: Thu May 23, 2013 5:37 pm
by TAMTAM
salut shepshep et bonjour a tt le monde

d abord merci :wink: mec de t' intéresse a se problème, qui m'empeche de dormir (jour de soutenance approche) , je met le code complet , par contre pour que ça marche , il faut capturer les trame http soit avec http requete sous firefox soit avec fiddler2 (mon préféré ) est ceci afin de remplir les champs de la fonction curl_login()

capture d'ecran de ce qui ce passe une fois que j'ai lance le code
[url]http://imagik.fr/view/28955[/url] (l image est a cote il faut agrandir)

la je donne le code qu'on vois la haut sur la page

[code:1:f5501ef6e8]

HTTP/1.1

302 Found cache-control: no-cache, no-store, must-revalidate, pre-check=0, post-check=0 content-length: 156 content-type:
text/html; charset=utf-8 date: Thu, 23 May 2013 15:17:23 GMT expires: Tue, 31 Mar 1981 05:00:00 GMT last-modified: Thu, 23 May 2013 15:17:23 GMT
location: https://twitter.com/login/error?redirect_after_login=%2F&username_or_email=projettwitt pragma:
no-cache server: tfe set-cookie: _twitter_sess=BAh7CSIKZmxhc2hJQzonQWN0aW9uQ29udHJvbGxlcjo6Rmxhc2g6OkZsYXNo%250ASGFzaHsGOgtub3RpY2VDOhdUcmFuc2xh
dGFibGVTdHJpbmciRU1hdXZhaXNl%250AIGNvbWJpbmFpc29uIGRlIE5vbSBkJ3V0aWxpc2F0ZXVyL0VtYWlsIGV0IG1v%250AdCBkZSBwYXNzZS4GOgpAdXNlZHsGOwZUOgxjc3JmX2lkIiV
hOTdiYzQ3Mjg2%250AYmNlZmY4ODAxMGZmOTMyNzlmYTI1MjoHaWQiJTRkYWYwOTZkYzVkZGNjMTlj%250AYzRkYjExNjA1MDE3ZWNjOg9jcmVhdGVkX2F0bCsIwUT30T4B--227f8ebe349f
8156911e775310afe54cd503a904;
domain=.twitter.com; path=/; HttpOnly set-cookie: guest_id=v1%3A136932224325184275; Domain=.twitter.com; Path=/; Expires=Sat, 23-May-2015 15:17:23 UTC status:

302 Found strict-transport-security: max-age=631138519 vary: Accept-Encoding x-frame-options: SAMEORIGIN x-mid: 020ba29ff29dba15505fc1dae0931184881dfc8e x-transaction:
a1a173c846f5a858 x-ua-compatible: IE=9,chrome=1 x-xss-protection: 1; mode=block HTTP/1.1

200 OK cache-control: no-cache, no-store, must-revalidate, pre-check=0, post-check=0
content-length: 45739 content-type: text/html; charset=utf-8 date: Thu, 23 May 2013 15:17:23 GMT etag: "b77f4c4c96d76f8d6b439b4a4264e63b" expires: Tue, 31 Mar 1981 05:00:00 GMT last-modified:
Thu, 23 May 2013 15:17:23 GMT pragma: no-cache server: tfe set-cookie: _twitter_sess=BAh7CSIKZmxhc2hJQzonQWN0aW9uQ29udHJvbGxlcjo6Rmxhc2g6OkZsYXNo%250ASGFzaHsABjoKQHVzZWR7ADoHaWQiJTRkYWYwOTZkYz
VkZGNjMTljYzRkYjEx%250ANjA1MDE3ZWNjOgxjc3JmX2lkIiVhOTdiYzQ3Mjg2YmNlZmY4ODAxMGZmOTMy%250ANzlmYTI1MjoPY3JlYXRlZF9hdGwrCMFE99E%252BAQ%253D%253D--b79ec5bb6a7579172e102d91608151d2d119d985;
domain=.twitter.com; path=/;

HttpOnly status: 200 OK strict-transport-security: max-age=631138519 vary: Accept-Encoding x-frame-options: SAMEORIGIN x-mid: c86b5e5a491d1e518704442571330c587e64f81f x-runtime:
0.04756 x-transaction: 010fd0cd53a53784 x-ua-compatible: IE=9,chrome=1 x-xss-protection: 1; mode=block

[/code:1:f5501ef6e8]



le code php


[code:1:f5501ef6e8]
<?php

echo curl_login('https://twitter.com/sessions','session%5Busername_or_email%5D=projettwitt&session%5Bpassword%5D=*********&return_to_ssl=true&scribe_log=&redirect_after_login=%2F&authenticity_token=e438a9f55fg4t75t8tht2c1dc1b0f9b89mla','','off' );
echo "hhhhhhhhhhhhhhhhhc";
//echo curl_grab_page ('https://twitter.com','','off');
echo "hhhhhhhhhhhhhhhhh";





function curl_login ($url, $data, $proxy , $proxystatus){

$fp = fopen("cookie.txt", "w");
fclose ($fp);

$login = curl_init();

curl_setopt($login, CURLOPT_COOKIEJAR, realpath("./cookie.txt"));
curl_setopt($login, CURLOPT_COOKIEFILE,realpath("./cookie.txt"));
curl_setopt($login, CURLOPT_SSL_VERIFYPEER, false);
//curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($login, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64; rb v:21.0) Gecko/20100101 Firefox/21.0");
curl_setopt($login, CURLOPT_TIMEOUT,100000);
curl_setopt($login, CURLOPT_RETURNTRANSFER, true);

if ($proxystatus == 'on'){

curl_setopt($login, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($login, CURLOPT_HTTPPROXYTUNNEL, true);
curl_setopt($login, CURLOPT_PROXY, $proxy);


}




curl_setopt($login, CURLOPT_URL, $url);
curl_setopt($login, CURLOPT_HEADER, true);



curl_setopt($login, CURLOPT_USERAGENT, $_SERVER ['HTTP_USER_AGENT']).
curl_setopt($login, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($login, CURLOPT_POST, true);
curl_setopt($login, CURLOPT_POSTFIELDS, $data);
ob_start();
return curl_exec($login);
ob_end_clean();// stop preventing output
curl_close($login);
unset($login);

}

function curl_grab_page ($site, $proxy, $proxystatus){

$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
if ($proxystatus == 'on') {
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, true);
curl_setopt($ch, CURLOPT_PROXY, $proxy);

}
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt");
curl_setopt($ch, CURLOPT_URL, $site);

return curl_exec($ch);

curl_close ($ch);


}

[/code:1:f5501ef6e8]

sinon je pense que je suis pas loin , j tous met en curl , surtout l option pour le https et les redirections , le fichier cookie se remplie bien ....etc
il y a juste cette histoire de cache sans oublie ( c sur l'image ) sa me met un message bizare du genre comme quoi il y a une erreur de combinaison entre le mot de passe et le login :?: :?: :?: :?:

a toute :)

PostPosted: Mon May 27, 2013 5:07 pm
by TAMTAM
Up :( :!:
Personne n à une piste :?: :?: :?:

PostPosted: Mon May 27, 2013 7:20 pm
by TorTukiTu
A mon avis,

[code:1:d82e8dc0ba]authenticity_token=e438a9f55fg4t75t8tht2c1dc1b0f9b89mla[/code:1:d82e8dc0ba]

A mon avis, ca en dur c'est pas normal...

Essaye de d'abord récupérer un token valide en chargeant une premiere fois la page avant de réaliser ton authentification.

Tortue 974.

PostPosted: Wed May 29, 2013 8:50 pm
by TAMTAM
bien joue , en effet le token est généré aléatoirement ,lui renvoyé un autre de différent serait effectivement bizarre , merci tortu :D