bot php curl

Moderator: Mod

bot php curl

Postby TAMTAM » Thu May 16, 2013 10:52 pm

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]
User avatar
TAMTAM
Projets
 
Posts: 9
Joined: Mon Oct 15, 2012 1:10 pm

Postby SHEPSHEP » Fri May 17, 2013 10:49 am

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.
SHEPSHEP
Projets
 
Posts: 268
Joined: Wed Apr 08, 2009 11:14 am
Location: /dev/null

Postby SHEPSHEP » Fri May 17, 2013 10:57 am

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 ...
SHEPSHEP
Projets
 
Posts: 268
Joined: Wed Apr 08, 2009 11:14 am
Location: /dev/null

Postby TAMTAM » Mon May 20, 2013 12:41 pm

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 :!: :?:
User avatar
TAMTAM
Projets
 
Posts: 9
Joined: Mon Oct 15, 2012 1:10 pm

Postby TAMTAM » Tue May 21, 2013 6:45 pm

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.
User avatar
TAMTAM
Projets
 
Posts: 9
Joined: Mon Oct 15, 2012 1:10 pm

Postby SHEPSHEP » Wed May 22, 2013 7:23 am

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
SHEPSHEP
Projets
 
Posts: 268
Joined: Wed Apr 08, 2009 11:14 am
Location: /dev/null

Postby TAMTAM » Thu May 23, 2013 5:37 pm

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 :)
User avatar
TAMTAM
Projets
 
Posts: 9
Joined: Mon Oct 15, 2012 1:10 pm

Postby TAMTAM » Mon May 27, 2013 5:07 pm

Up :( :!:
Personne n à une piste :?: :?: :?:
User avatar
TAMTAM
Projets
 
Posts: 9
Joined: Mon Oct 15, 2012 1:10 pm

Postby TorTukiTu » Mon May 27, 2013 7:20 pm

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.
User avatar
TorTukiTu
Site Admin
 
Posts: 1960
Joined: Thu Feb 07, 2008 10:24 pm
Location: Devant son pc durant la redaction de ce message

Postby TAMTAM » Wed May 29, 2013 8:50 pm

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
User avatar
TAMTAM
Projets
 
Posts: 9
Joined: Mon Oct 15, 2012 1:10 pm


Return to Php

Who is online

Users browsing this forum: No registered users and 4 guests

cron