Ein kleiner Bott für Facebook

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Satzende
User
Beiträge: 70
Registriert: Samstag 8. Januar 2011, 12:41

Hallo

erstmal die Hintergrund Story. Meine Freundin Spielt auf Facebook gerne citty ville. ab und an braucht man da aber sogenannte Nachbarn und so musste auch ich das spielen. Nun bekommt man als Neuigkeiten immer anfragen die dann beantwortet werden wollen. Da reicht nun ein klick und da kam die idee das ein Bott nicht schlecht wäre.

ich benutze dazu die Mechanize Libery. Einlogen klappt schon wunderbar :D
Nun muss ich aber noch Auf Neuigkeiten Klicken, die aber nicht als link zu finden sind.
Hab mir alle links mit

Code: Alles auswählen

for lin in br.links():
    print(lin.text)
    
ausgeben lassen.

Hab dazu noch Firebug geholt und der sagt :

Code: Alles auswählen

<li id="navItem_app_4748854339" class="sideNavItem stat_elem open selectedItem">
<div class="buttonWrap">
<a class="item clearfix" data-gt="{"bmid":"4748854339","count":"0","rank":"2"}" title="" href="/">
<div class="rfloat">
<div>
<span class="imgWrap">
<i class="img sp_9x0spv sx_fc8e26"></i>
</span>
<div class="linkWrap noCount">Neuigkeiten</div>
</div>
</a>
</li>
Komm nun einfach nicht weiter
Benutzeravatar
snafu
User
Beiträge: 6731
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Plattformen wie Facebook arbeiten naturgemäß viel mit JavaScript (dynamische Inhalte und so). Mechanize versteht aber kein JavaScript, bzw führt solchen Code nicht aus. Du solltest besser auf eine browserbasierte Lösung zurückgreifen. Es gibt Tools, die quasi für dich im Browserfenster die nötigen Klicks ausführen.

(Alles natürlich unter dem Disclaimer, dass Bots meistens durch entsprechende Nutzungsbedingungen verboten sind. Ich weiß nicht, wie Facebook das handhabt...)
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

Und meistens läuft das JavaScript auf einen AJAX-Request raus, welchen man mit Python und mechanize nachbauen kann. Generell hilft erstmal JS zu deaktivieren und schauen welche Daten alle geladen werden, wenn die Daten, die man braucht dabei sind ist man eh schon gut weggekommen, wenn nicht am besten mit einem Addon nur bestimmte JS-Skripte zulassen bzw. alle JS-Calls debuggen Chrom(e|ium) hat eine schöne JS-Debugging-Konsole. Da JS, auch i-wie an diese Daten kommen muss, werden früher oder später auch Requeste an interne APIs gesendet (welche oftmals so was schönes wie JSON zurückgeben), diese Requeste musst du dann manuell absetzen (browser.open). Oder du machst das wie snafu meinte.
the more they change the more they stay the same
Antworten