eBay enchérisseur de dernière seconde !
Bonjour à tous !
J'aimerais savoir si il est possible de manipuler un site web depuis cocoa ?
Ceci dans le but de réaliser une petite app qui se charge d'enchérir (a la dernière minute) à ma place sur des objets eBay définis.
Un tel logiciel existe sur PC : "BayGenie"
Le principe est simple, il navigue a votre place sur ebay et valide automatiquement les formulaires pour permettre l'ouverture d'une session et la validation d'une enchère.
Je veux passer par ce moyen parce que les API eBay ne semble pas ouverte à ce genre de chose ! Mais voilà j'en ai ras le bol de me faire avoir dans les dernière seconde d'une enchère !
J'attends donc votre avis sur la faisabilité
J'aimerais savoir si il est possible de manipuler un site web depuis cocoa ?
Ceci dans le but de réaliser une petite app qui se charge d'enchérir (a la dernière minute) à ma place sur des objets eBay définis.
Un tel logiciel existe sur PC : "BayGenie"
Le principe est simple, il navigue a votre place sur ebay et valide automatiquement les formulaires pour permettre l'ouverture d'une session et la validation d'une enchère.
Je veux passer par ce moyen parce que les API eBay ne semble pas ouverte à ce genre de chose ! Mais voilà j'en ai ras le bol de me faire avoir dans les dernière seconde d'une enchère !
J'attends donc votre avis sur la faisabilité

Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Mais pour le prédécesseur de PommeDev' (ObjectiveCocoa) j'avais développé une application (OCSpy) qui passait son temps à "épier" tout ce qui s'y passait, faisait un "rapport d'activité" et pouvait m'alerter (via Growl) de tout évènement que je spécifiait.
Cette appli était capable de travailler "anonymement" sur le site, mais pouvait aussi utiliser si besoin (et très ponctuellement) les cookies pour permettre des requêtes réservées à tel ou tel type d'utilisateurs (et interdites aux "simples visiteurs" et/ou "simples membres").
Donc je dirais faisable.
C'est à dire que par exemple tu vas exécuter par code les mêmes requêtes web que celles que ferait ton navigateur si tu navigues ici, puis là , etc... puis envoyer les mêmes données que ton navigateur, mais par code, si tu remplis telle valeur dans tel champ de formulaire puis valide le formulaire de telle page... (par exemple un formulaire [tt]<fo[/tt][tt]rm>[/tt] dans la page HTML de eBay avec des [tt]<inp[/tt][tt]ut type="text" name="price" />[/tt] etc, quand tu valides va générer une requête GET ou POST (selon la méthode indiquée dans la balise "form") avec les données du formulaire, encodées en "url-encoded" dans le corps de la requête, etc)
Donc bon c'est pas méchant, juste un ensemble de requête à envoyer avec les bonnes données pour simuler ta navigation. Les cookies, les sessions, les authentifications si besoin etc... sont grosso modo gérées directement par Cocoa, donc bon...
Mais bien sûr avec cette solution, si un jour le site web de eBay venait à changer (que le formulaire A pour envoyer une enchère ne passait plus le prix dans la variable "price" mais dans une variable "myprice", ou que la requête était envoyé à "submit.php" avant mais est envoyée à "sendPrice.php" depuis la modification du site... Bah faudra que tu modifies ton code en conséquence pour adapter les requêtes, bien sûr.
Mais bon, ils vont pas changer la structure du site tous les quatre matins non plus, donc bon.
Faire aussi attention dans ce genre de cas aux modalités de eBay : détourner la navigation pour l'automatiser comme ça n'est peut-être pas autorisé par les CGU, et de plus peut tout à fait être détecté de leur côté (s'ils voient qu'une IP / un utilisateur envoie 8 requêtes à la suite avec moins d'une demi seconde entre chaque requête, ils peuvent se dire que c'est pas humain et que c'est un robot derrière, ...)
Que faisait-tu (et comment) ? Analyse HTML ? Remplissage automatique de formulaire et validation via javascript ?
C'est possible d'avoir les sources pour m'en inspirer ?
Ce que je cherche c'est pouvoir parcourir l'arbre DOM pour récupérer des valeur spécifique et envoyer des requêtes POST...
EDIT: Je me doute bien qu'il peuvent me détecter. Mais les API eBay prévoient beaucoup de cas mais pas celle de placer une enchère. Hors c'est justement ça que je veux. Pour le moment je le fait sur PC mais c'est pénible.
D'un autre côté il me faut soit simuler avec le WebKit une navigation soit pouvoir lire le DOM pour récupérer à coup sur les valeurs des nombreux champs caché des formulaires. D'autre par le logiciel utilisera également les API eBay pour obtenir les informations sur les objets suivi !
@ Draken
un pingouin et un canard tu trouves que ça se ressemble ? * soupir *
T'as pas fini d'embêter le thread des honnêtes gens ? * pas de côté pour esquiver le jet de tomate "
@ Autres
Zavez vu ? j'le refais bien hein ? :P
J'ai développé OCSpy en 2004 avec la bénédiction de l'admin.
L'appli a été diffusée alors à toute l'équipe du site.
Maintenant elle n'est plus fonctionnelle (modification profonde du site) et repose en paix dans mes archives.
Oui j'envoyais des requêtes et remplissais très occasionnellement un formulaire. Précisément à la première connexion de l'utilisateur s'il n'était pas identifié comme VIP sur le site par le cookie que je trouvais sur sa bécane (juste histoire de générer un cookie via le webKit (du genre que je savais lire et utiliser) et non pas son cookie obtenu avec son navigateur favori qui pouvait fort bien ne pas être Safari).
Ceci dit, à l'époque il n'y avait pas de XMLParser et je parsais tout le DOM à la mano (en utilisant au maximum des RegEx).
Le code source te servirait donc pas à grand chose.
Mais c'est faisable, hors mis les limitations de détections par le site ciblé comme l'a fort justement souligné Ali (mais bon, pour moi Muqaddar était d'accord avec mon appli et me laissait carte blanche)
Donc le mieux pour moi est de faire toute les requêtes à la main en récupérant ce dont j'ai besoin pour le formulaire. Plutôt que de faire charger les page au web kit, manipuler le DOM pour remplir les formulaires et ensuite valider !
Cela me parait assez complexe au final (gestion des erreurs, etc...) !
J'ai bien ajouté des WebView dans les dernières versions mais juste pour mes affichages propres des rapports d'activité, nouveaux sujets etc...
(Au début tout l'affichage se faisait dans des TexViews)