Récupérer des fans de page facebook - PHP - Programmation
Marsh Posté le 10-11-2009 à 15:47:12
c'est vrai que c'est pas top on peu pas récupérer cette info la sous prétexte que le page_id dans la table page_fan ne soit pas indexé
http://www.socialmeteor.com/wp-con [...] schema.pdf
Marsh Posté le 12-11-2009 à 01:07:24
Quelques nouvelles :
Ce problème est résolu. J'ai selectionné les headers important et envoyé seulement ceux-là.
Maintenant Facebook me renvoie bien le code javascript avec les noms dedans.
Le problème qui se pose maintenant est complexe. Tenez-vous bien.
Je parse les headers avec la fonction http_parse_headers() et je les récupère dans un tableau.
La fonction http_parse_headers() est disponible dans une extension PECL et la librairie s'appelle php_http.dll
Elle n'est pas présente de base dans PHP.
Une fois le code récupéré, je dois chercher les noms contenus. Pour cela, je fais un explode() sur la chaine, et je récupère un tableau avec les noms suivis du reste du code.
|
Il faut donc maintenant retirer ce qui se trouve après le nom.
Pour cela j'utilise la fonction strstr() avec un troisième parametre TRUE pour obtenir la chaine AVANT le repère.
Tout ca dans le but d'isoler
Jean Dupond |
Le problème est que cette amélioration de la fonction strstr() (le 3ème paramètre) n'existe que depuis PHP 5.3, tandis que la librairie php_http.dll ne fonctionne pas (pas encore ?) pour PHP 5.3
Connaissez-vous une solution ?
Un équivalent à strstr() qui fonctionne sur PHP 5.2.x ?
un équivalent à http_parse_headers() qui fonctionne sur PHP 5.3.x ?
J'ai pensé tout d'abord aux expression régulière.
Mais l'exécution devient très longue, et puis je ne trouve par de fonction qui me retourne une chaine B coincée entre deux chaines A et C...
Une autre solution est de fabriquer sa propre fonction strstr() inversé, d'ailleurs les commentaires du site de PHP en regorgent. S'il n'y a pas d'autres solutions, je ferai ça...
Merci d'avoir lu, et d'avance pour votre aide
Marsh Posté le 12-11-2009 à 09:39:51
pourquoi tu fais un explode, c'est du json, tu devrais faire json_decode
Marsh Posté le 12-11-2009 à 09:49:19
$json = str_replace('for (;;);', '', $response); $users = json_decode($json)->payload->user_info; print_r($users); |
Marsh Posté le 12-11-2009 à 11:50:07
héhé, tout de suite c'est plus simple. en plus ta direct en Object (tu peu mettre a 'true' le 2eme parametre pour l'avoir en tableau assoc)
Marsh Posté le 14-11-2009 à 19:13:54
Voila, fini !
Peux-tu me donner ton avis ? Cela fonctionne chez toi ?
L'interface est-elle explicite ? La démarche est-elle claire ?
http://www.over9000project.fr/down [...] ractor.rar
Merci d'avance
Marsh Posté le 10-11-2009 à 12:58:39
Actuellement, il n'existe aucun outil ou application pour extraire les noms des fans d'une "page" facebook.
J'ai donc décider de faire ma version en php (trop galère en C )
J'utilise file_get_contents() avec un contexte, pour choisir les options d'entête.
Je veux faire croire à Facebook que je veux charger la lightbox listant les fans 100 par 100 comme si j'étais sur un navigateur classique.
Le but étant de récupérer le code html/javascript de la liste pour en extraire les noms des fans.
J'ai analysé avec wireshark les entêtes et cookies envoyé par mon navigateur quand il fait la requète de façon classique.
J'ai ensuite analysé la réponse de facebook. Les entêtes reçues sont correctes (200 OK).
Par contre je ne reçois pas du code html comme prévu, mais une bouillie de caratères pas vraiment lisible.
//Entêtes envoyées
Host: www.facebook.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; fr; rv:1.9.0.15) Gecko/2009101601 Firefox/3.0.15 (.NET CLR 3.5.30729)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
X-SVN-Rev: 199440
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Referer: http://www.facebook.com/home.php
Content-Length: 167
Cookie:plein de truc que je vous dis pas =D
Pragma: no-cache
Cache-Control: no-cache
//Body de la requête POST
edge_type=fan&page=1&limit=100&class=FanManager&node_id=110534460377&post_form_id=0fb5daac8db470a1c972ff2efb84eeea&fb_dtsg=pkPRc&post_form_id_source=AsyncRequest&__a=1
//Réponse de Facebook
’ÄVÓ¦ÈnJ”ÓòßçÜ"k±DfØ¢^>Õ`Æ™¾/«u]w9w»ªjëüñÿ~üý,«ëª>{d?hÿ߇f½fõÝÙ£³³Žò4Û,êüf›W¥F}µù«Ë¼=ºbÅ&{pvÃ-Ïý~Öl²:ÍË«Š~ˆƒÄ‰mßè‡ÿ^œmóm‘ë‡|]•Öû?ãµ×uvâõv{óèòáåï_¿Î®Ø"›WÕ—Ù¢Z_>¼©««¼Èf7×7?çËŸ$ÇÿÁ“?mVk0Ù4sÁ?Ýä£xž}™]ÍËrVfÛˇ;×
/:¶]>Äo%Û4‰œdöùfNu¶®v›Ó¹·uƒ_¼¥<®Wú
×wiõßT÷ä›”-×9í‡ñsÁ6[Aì>µ`e:ÏÒyQ-¾døŠè³<8cúÖ?f¿mqø§—mgÉ&_•YmákXggo¶5ÛfMÓµOàÓkö%ë^"¨§?!Žè„v„qxB¼Š¢ä{ž¯.ò-dmý«*®¤ˆË¦(þ‹¤6[¶Í³ïinŸt“×U“m·Ùl•[#õ×Â]üŽ<Û²‘%š§¬`…õºúšiwï@0¯›¯Œÿû½‹dÄsìí†x";ì0ñC!IPâyÂê
×æŸÒ2¥ü‰ÙŽ?ñóT…=èø±sù0HpãäS?r|£t6IÕsè@×—R%ÕÇe™Yïs¨ýQ"eøø7•ýò|^³rA;Æš¹�ò`ë<öV8õ|×6Bíjh'Q9®´r’ „ú&_³¬°ÞT×Ý(Áîù1’é4?¦ã
!»$äЇ%ë4qϹWÈQä&IœH}
Yen a une pleine page, mais je fais court.
On dirait une image, mais je ne parviens pas à l'ouvrir.
Le procédé fonctionne en ruby dans ce tuto : http://adamloving.com/internet-pro [...] -page-fans
J'ai essayé ca fonctionne.
Voici le code de ma page php :
L'utilisateur copie/colle les entêtes qu'il a captées avec wireshark.
Pouvez-vous m'aider, merci d'avance
Message édité par Pascal le nain le 10-11-2009 à 13:03:55