Mogelijkheid 'bot' administrator
Al een tijdje onderzoek ik de mogelijkheden om een bot een taak uit te laten voeren op een andere site. Ik zal de probleemstelling duidelijk omschrijven en hoe die andere site in elkaar steekt.
De site
De bot moet op een andere site aan het werk gaan. Het is dus niet mogelijk om server-side iets bij de site aan te passen o.i.d. Anders was het probleem er niet geweest! De bot kan op deze site de rechten als 'admin' (in dit geval vergelijkbaar met moderator) krijgen. Dit geeft toegang tot een beheer voor geabonneerde leden. Zoals op ieder andere site met fora en dergelijke heb je natuurlijk mensen die het niet zo nauw met de regels nemen die er gelden of de boel op een andere manier verstoren. Aangezien de site enorm is en de leden zich ergens op kunnen 'abonneren' (zodat ze op jouw deel van de site kunnen komen en reageren), maar de administratie mogelijkheden beperkt zijn heb je geen volledige macht als admin. Je kunt de leden wel in de lijst zoeken en verwijderen, maar dan kunnen ze zich weer abonneren. Kortom: alleen kicken is mogelijk, maar een ban is soms nodig en dit is niet mogelijk. Verder is het handig om te weten dat er geen volledige lijst weergegeven kan worden. Je kunt enkel een zoekfunctie gebruiken om een lid te zoeken en zo te verwijderen of zijn rechten aan te passen.
Deze ledenadministratie is echter geen normale HTML pagina, maar kan opgevraagd worden door op een button te klikken. Vervolgens treedt er een stuk javascript in werking (geen jQuery, lijkt erop) die een uitklapmenu zichtbaar maakt met een aantal mogelijkheden. We kiezen voor 'Ledenadministratie' en vervolgens wordt er (wederom door de javascript) een pop-up scherm geopend met hierin de ledenlijst en de zoekfunctie. Prima, je kunt een lid zoeken en verwijderen.
Probleemstelling
Mijn kennis van PHP en andere scriptingtalen is redelijk gevorderd te noemen, maar hier kom ik echt niet uit. Ook niet door flink te googlen. Wat is precies het probleem? (N.B: Dit gaat gedeeltelijk over een eigen server met het systeem en de bovengenoemde site) Ik probeer een systeem (bot) op te zetten die de bovengenoemde ledenlijst kan doorzoeken. Door middel van een blacklist in een database bij te houden met de leden die niet meer welkom zijn, moet de bot deze namen invullen op de ledenlijst van de andere site. Als de uitkomst is dat dat lid zich niet opnieuw aangemeld heeft, hoeft er niks te gebeuren. Als dit wel het geval is, moet dat lid onmiddellijk weer verwijderd worden.
Is het met de gegeven gegevens (vragen zijn welkom!) mogelijk om een systeem op te zetten die de andere site doorzoekt (door de hele client-side javascript e.d. heen) en doet wat omschreven staat in de probleemstelling? Denk bijvoorbeeld aan het gebruik van de libcurl extensie van PHP? Misschien andere dingen? Het zou wat makkelijker gaan als er een standaard HTML pagina was met een form, maar dat is niet het geval. Als je een bestaande 'basis' kent waar ik goed mee zou kunnen beginnen hoor ik het graag.
Hopelijk begrijp je mijn probleem en weet je een oplossing. In ieder geval alvast bedankt voor het doorlezen van de lap tekst! :)
PS: De reden dat de site de administratie mogelijkheden niet uitbreid is omdat het over het algemeen niet nodig is, maar mijn 'abonnement' kent vele duizenden leden wat uniek is en soms al het uiterste eist. De officiële werknemers (ben ik dus niet) hebben niet altijd tijd om het bij mij extra in de gaten te houden en bans uit te delen.
CURL is het beste om hiervoor te gebruiken.
Aar anoniem op 20/10/2010 21:17:12:
Dankje voor je reactie. Het is dus zeker wel mogelijk. Maar dan zit ik toch nog met het probleem dat die administratie als het ware achter javascript (jQuery-achtig) verscholen zit. Dit maakt standaard POST en GET requests plots niet al te standaard meer (lijkt me?)Tja, een bot hoef je niet te leren hoe hij door de GUI moet surfen. Je moet hem gewoon opgeven naar welke pagina hij direct moet gaan, en wat er in de POST of GET request moet staan.
CURL is het beste om hiervoor te gebruiken.
CURL is het beste om hiervoor te gebruiken.
Quote:
Maar dan zit ik toch nog met het probleem dat die administratie als het ware achter javascript (jQuery-achtig) verscholen zit. Dit maakt standaard POST en GET requests plots niet al te standaard meer (lijkt me?)
Bull.... Elk formulier wat versturud wordt doet een request via POST of GET. Als het via een JavaScriptje gaat, gaat het vast en zeker via AJAX. Je kan in de JS-code heus wel opzoeken welke request en wat voor request hij doet.
Maar het is niet zo moeilijk hoor. Gebruik de 'net monitor' (zit in firebug of bij ontwikkelaarshulpmiddelen van je browser) en bestudeer de exacte requests. Hieruit blijkt waarschijnlijk wel hoe dat in elkaar steekt en dan zorg je dat je cURL zo'n zelfde request opstuurt. Denk eraan eerst in te loggen met dezelde methode en dan de cookiejar te gebruiken.
Firebug heb ik standaard op mijn Firefox staan, goed programma hiervoor inderdaad. Mijn gedachte aan cURL was kennelijk goed. Bedankt voor het bevestigen en ik zal de rest van je tips gebruiken. :)
Eerst maar even cURL onder de knie krijgen.