Bonjour,
vu que le but de certains de nous c'est trouver un modèle pour pouvoir miser selon le modèle, je me demande si c'est possible automatiser.
Donc, si c'est possible, de parier en automatique via un API sur les sites françaises ou belgqes, sans passer pour le formulaire en ligne.
Merci, une bonne journée
Parier en automatique via une API
Je ne connais pas d'api qui puissent faire ça... Peut être que ça existe
Bonjour à tous, Je suis un petit nouveau sur le site mais mon âge est plus avancé, ma passion pour les courses est la même que la votre. Pour répondre à ilcass, j'ai posé la question aux divers sites de courses et ZETURF est le seul à m'avoir donné l'autorisation de placer mes paris via un automate. Mon soucis est de le faire réaliser, des demandes sont en cours mais avec le confinement je n'ai pas reçu de réponses. La demande que j'ai effectué concerne le MULTI.
Un petit mot à GILLES pour le féliciter pour son travail car il n'est pas facile de contenter tout le monde. Si c'est possible GILLES peux-t u me contacter sur mon mail perso pour savoir ce qui peut être écris ou pas sur le forum.
Je ne suis pas un professionnel ni un vendeur de méthodes je suis un simple chercheur .
Philturf
Intéressant, Zeturf autorise gratuitement ?
Est-ce qu'il t'envoie de la documentation pour accéder à leur système de pari ,
Merci,
- Modifié
bonjour, si ca peux aider certain d'entres vous , on trouve des brides de code vba ( excel ) pour parier sur zeturf auteur mura time voici le lien https://www.developpez.net/forums/d1994043/logiciels/microsoft-office/excel/macros-vba-excel/excel-internet-explorer/
- Modifié
Bonjour à tous,
pour ceux que cela intéresse, je vous donne un code VBA qui vous permet de vous authentifier sur ZeTurf et d'automatiser vos paris, y'a la base, il suffit de faire quelques boucles for/next ou do/while ... pour tout gérer :
Option Explicit
Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Dim IE As Object, IEDoc As Object
Dim Boutons As Object, ZonesSaisies As Object
Dim I As Integer, J As Integer, NbPart As Integer
Dim H As Long, W As Long
Dim ZoneTest As String
Dim GenericElem As HTMLGenericElement
Dim CptLig As Integer
Set IE = CreateObject("InternetExplorer.application")
IE.AddressBar = False
IE.MenuBar = False
IE.StatusBar = False
IE.Toolbar = False
'IE.FullScreen = True
IE.Visible = True
'IE.navigate Worksheets("CoursesDuJour").Cells(CptLig, 3).Value
IE.navigate "https://www.zeturf.fr/fr/course/2020-09-27/R1C4-vincennes-prix-de-bihorel/turf"
Do Until IE.readyState = 4
DoEvents
Loop
Set IEDoc = IE.document
'Saisie Login
Set ZonesSaisies = IEDoc.getElementsByTagName("input")
For I = 0 To ZonesSaisies.Length - 1
Select Case ZonesSaisies(I).ID
Case "connection_login"
ZonesSaisies(I).Value = "MonLogin"
Case "connection_password"
ZonesSaisies(I).Value = "MonMotDePasse"
Case "connection_jour"
ZonesSaisies(I).Value = "JJ"
Case "connection_mois"
ZonesSaisies(I).Value = "MM"
Case "connection_annee"
ZonesSaisies(I).Value = "AAAA"
End Select
Next I
Set Boutons = IEDoc.getElementsByTagName("button")
For I = 0 To Boutons.Length - 1
If Boutons(I).ID = "connection_submit" Then Exit For
Next I
Boutons(I).Click
Application.Wait Time + TimeSerial(0, 0, 5)
'Sélection du type de pari en fonction de la valeur du bouton
' 1 ou 2 => Simple Gagnant et Placé
' 29 => ZE Show
' 7 => ZE Couillon
' 3 => Jumelé Gagnant
' 4 => Jumelé Ordre
' 5 => Jumelé Placé
' 3 => Trio
' 11 => Trio Ordre
' 8 => ZE4
' 22 => ZE4 Ordre
' 12 => ZE5
Set Boutons = IEDoc.getElementsByTagName("button")
For I = 0 To Boutons.Length - 1
If Boutons(I).Value = "1" Then
Boutons(I).Click
Exit For
End If
Next I
' Une petite pause de temps en temps, sinon ZeTurf vous prend pour un robot
Application.Wait Time + TimeSerial(0, 0, 2)
'Sélection du champs du jeux en fonction de la valeur du bouton
' mode_unitaire => Unitaire
' mode_reduit => Réduit
' mode_total => Total
Set Boutons = IEDoc.getElementsByTagName("button")
For I = 0 To Boutons.Length - 1
If Boutons(I).Value = "mode_reduit" Then
Boutons(I).Click
Exit For
End If
Next I
'Sélection des chevaux en fonction du title type de paris
'et de la valeur du bouton pour le numéro du cheval
'en mode Unitaire ou combiné
' G => Simple Gagnant et class="btn-partant"
' P => Simple Placé et class="btn-partant"
' S => ZE Show et class="btn-partant"
' S => ZE Couillon et class="btn-partant"
' S => Jumelé Gagnant et class="btn-partant"
' S => Jumelé Ordre et class="btn-partant ordered"
' S => Jumelé Placé et class="btn-partant"
' S => Trio et class="btn-partant"
' S => Trio Ordre et class="btn-partant ordered"
' S => ZE4 et class="btn-partant"
' S => ZE4 Ordre et class="btn-partant ordered"
' S => ZE5 et class="btn-partant"
'en mode Réduit
' B pour base =>
' C pour Champs =>
NbPart = 16
Set Boutons = IEDoc.getElementsByTagName("button")
For J = 1 To NbPart
For I = 0 To Boutons.Length - 1
If Boutons(I).Title = "G" And Boutons(I).Value = J Then
Boutons(I).Click
Exit For
End If
Next I
Next J
' Une petite pause de temps en temps, sinon ZeTurf vous prend pour un robot
Application.Wait Time + TimeSerial(0, 0, 2)
For J = 1 To NbPart Step 5
For I = 0 To Boutons.Length - 1
If Boutons(I).Title = "P" And Boutons(I).Value = J Then
Boutons(I).Click
Exit For
End If
Next I
Next J
Set ZonesSaisies = Nothing
Set Boutons = Nothing
Set IEDoc = Nothing
Set IE = Nothing
- Modifié
Bonjour à tous,
J'ai apporté des améliorations, correctifs et commentaires sur le script, des temporisations pour les exécutions de script de pages, les jeux sont gérés par un bouton, des cases à cocher pour la sélection du champs réduit et des jeux gagnant/placé groupés et des boutons radio pour sélectionné le type de jeux, il ne reste plus qu'à remplir les tables de jeux ZeTurf et gérer les boucles de jeux, je vous conseille de laisser la validation en manuel :
Private Sub IEZeTurf_Click()
Dim IE As Object
Dim IEDoc As Object
Dim Boutons As Object
Dim ZonesSaisies As Object
Dim I As Integer
Dim J As Integer
Dim K As Integer
Dim L As Integer
Dim M As Integer
Dim ValeurBouton As String
Dim UrlZeTurf As String
'On récupère l'URL ZeTurf de la course en cours d'étude
'Forcément une course du jour ou du lendemain
If AnalyseCourse.UrlZeTurf.Text = "" Then
MsgBox("Cette course n'est plus ouverte aux paris.")
Exit Sub
Else
UrlZeTurf = AnalyseCourse.UrlZeTurf.Text
End If
'Initialisation des tables Jeux ZeTurf
'Maximum 5 chevaux en Bases et 10 en champs réduit
Dim JeuxZeTurfSimple(5) As Integer
Dim JeuxZeTurfCouple(5, 10) As Integer
Dim JeuxZeTurfTrio(5, 5, 10) As Integer
Dim JeuxZeTurfZE4(5, 5, 5, 10) As Integer
Dim JeuxZeTurfZE5(5, 5, 5, 5, 10) As Integer
For I = 1 To 5
For J = 1 To 5
For K = 1 To 5
For L = 1 To 5
JeuxZeTurfSimple(L) = 0
For M = 1 To 10
JeuxZeTurfCouple(L, M) = 0
JeuxZeTurfTrio(K, L, M) = 0
JeuxZeTurfZE4(J, K, L, M) = 0
JeuxZeTurfZE5(I, J, K, L, M) = 0
Next M
Next L
Next K
Next J
Next I
'
'Chargement des jeux ZeTurf
'A vous de remplir...
'
Call ChargeJeuxZeTurf()
IE = CreateObject("InternetExplorer.application")
IE.AddressBar = False
IE.MenuBar = False
IE.StatusBar = False
IE.Toolbar = False
IE.Visible = True
IE.TheaterMode = True
IE.Navigate(UrlZeTurf)
Do Until Not IE.Busy And IE.ReadyState = 4
Loop
System.Threading.Thread.Sleep(5000)
FileOpen(1, "ConnexionZeTurf.txt", OpenMode.Input)
IEDoc = IE.Document
'Saisie Login (input 0) / Mot de passe (input 1) / Date de naissance (input 2,3 et 4)
ZonesSaisies = IEDoc.GetElementsByTagName("input")
ZonesSaisies(0).Value = Trim(LineInput(1))
ZonesSaisies(1).Value = Trim(LineInput(1))
ZonesSaisies(2).Value = Trim(LineInput(1))
ZonesSaisies(3).Value = Trim(LineInput(1))
ZonesSaisies(4).Value = Trim(LineInput(1))
FileClose(1)
'Validation Saisie
'On charge la collection "Boutons"
Boutons = IEDoc.getElementsByTagName("button")
For I = 0 To Boutons.Length - 1
If Boutons(I).ID = "connection_submit" Then Exit For
Next I
Boutons(I).Click
'Pause pour laisser le temps d'exécution aux scripts de la page web et du retour serveur
System.Threading.Thread.Sleep(5000)
'***
'*** Sélection du type de pari en fonction de la valeur du bouton
'***
'1 ou 2 => Simple Gagnant et Placé
'29 => ZE Show
'7 => ZE Couillon
'3 => Jumelé Gagnant
'4 => Jumelé Ordre
'5 => Jumelé Placé
'6 => Trio
'11 => Trio Ordre
'8 => ZE4
'22 => ZE4 Ordre
'12 => ZE5
If SimpleGagnant.Checked Then ValeurBouton = "1"
If SimplePlace.Checked Then ValeurBouton = "2"
If CoupleGagnant.Checked Then ValeurBouton = "3"
If CouplePlace.Checked Then ValeurBouton = "5"
If Trio.Checked Then ValeurBouton = "6"
If ZE4.Checked Then ValeurBouton = "8"
If ZE5.Checked Then ValeurBouton = "12"
If ZeShow.Checked Then ValeurBouton = "29"
If ZeCouillon.Checked Then ValeurBouton = "7"
'
'Ici vous devez gérer les boucles sur les tables de jeux
'Jusqu'au bouton Validation qu'il vaut mieux laisser en manuel
'A vous de remplir...
'Ci dessous, j'utilise CStr(Base) en tant que Base pour un jeux en champs réduits
'Et je coche 1 cheval sur 3 dans le champs réduit
' => For J = 1 To NbPart Step 3
'
'On recharge systématiquement la collection "Boutons", car une sélection peut ajouter ou supprimer des éléments de la collection
Boutons = IEDoc.getElementsByTagName("button")
For I = 0 To Boutons.Length - 1
If Boutons(I).Value = ValeurBouton Then Exit For
Next I
Boutons(I).Click
'Pause pour laisser le temps d'exécution aux scripts de la page web
System.Threading.Thread.Sleep(300)
'***
'*** Sélection du champs du jeux en fonction de la valeur du bouton
'***
'Par défaut : mode_unitaire
'mode_reduit
'mode_total
'On recharge systématiquement la collection "Boutons", car une sélection peut ajouter ou supprimer des éléments de la collection
Boutons = IEDoc.getElementsByTagName("button")
If (I = 3 Or I = 5 Or I = 6 Or I = 8 Or I = 12) And ChampsReduit.Checked Then
Boutons = IEDoc.getElementsByTagName("button")
For I = 0 To Boutons.Length - 1
If Boutons(I).Value = "mode_reduit" Then Exit For
Next I
Boutons(I).Click
'Pause pour laisser le temps d'exécution aux scripts de la page web
System.Threading.Thread.Sleep(300)
End If
'***
'*** Sélection des chevaux en fonction du title type de paris et de la valeur du bouton pour le numéro du cheval en mode Unitaire ou combiné
'***
'G => Simple Gagnant et class="btn-partant"
'On recharge systématiquement la collection "Boutons", car une sélection peut ajouter ou supprimer des éléments de la collection
If ValeurBouton = 1 Then
Boutons = IEDoc.getElementsByTagName("button")
For I = 0 To Boutons.Length - 1
If Boutons(I).Title = "G" And Boutons(I).Value = CStr(Base) Then Exit For
Next I
Boutons(I).Click
'Pause pour laisser le temps d'exécution aux scripts de la page web
System.Threading.Thread.Sleep(100)
End If
If (ValeurBouton = 1 And GagnantPlace.Checked = True) Or ValeurBouton = 2 Then
'On recharge systématiquement la collection "Boutons", car une sélection peut ajouter ou supprimer des éléments de la collection
Boutons = IEDoc.getElementsByTagName("button")
For I = 0 To Boutons.Length - 1
If Boutons(I).Title = "P" And Boutons(I).Value = CStr(Base) Then Exit For
Next I
Boutons(I).Click
'Pause pour laisser le temps d'exécution aux scripts de la page web
System.Threading.Thread.Sleep(100)
End If
If ChampsReduit.Checked = False Then
'Mode Combiné
'S => ZE Show et class="btn-partant"
'S => ZE Couillon et class="btn-partant"
'S => Jumelé Gagnant et class="btn-partant"
'S => Jumelé Ordre et class="btn-partant ordered"
'S => Jumelé Placé et class="btn-partant"
'S => Trio et class="btn-partant"
'S => Trio Ordre et class="btn-partant ordered"
'S => ZE4 et class="btn-partant"
'S => ZE4 Ordre et class="btn-partant ordered"
'S => ZE5 et class="btn-partant"
'On recharge systématiquement la collection "Boutons", car une sélection peut ajouter ou supprimer des éléments de la collection
Boutons = IEDoc.getElementsByTagName("button")
For I = 0 To Boutons.Length - 1
If Boutons(I).Title = "S" And Boutons(I).Value = CStr(Base) Then Exit For
Next I
Boutons(I).Click
System.Threading.Thread.Sleep(100)
Else
'en mode Champs Réduit
'B pour le cheval de base =>
'On recharge systématiquement la collection "Boutons", car une sélection peut ajouter ou supprimer des éléments de la collection
Boutons = IEDoc.getElementsByTagName("button")
For I = 0 To Boutons.Length - 1
If Boutons(I).Title = "B" And Boutons(I).Value = CStr(Base) Then Exit For
Next I
Boutons(I).Click
System.Threading.Thread.Sleep(100)
'Mode Champs Réduit
'C pour les chevaux du Champs =>
'On recharge systématiquement la collection "Boutons", car une sélection peut ajouter ou supprimer des éléments de la collection
Boutons = IEDoc.getElementsByTagName("button")
For J = 1 To NbPart Step 3
For I = 0 To Boutons.Length - 1
If Boutons(I).Title = "C" And Boutons(I).Value = J Then Exit For
Next I
Boutons(I).Click
System.Threading.Thread.Sleep(100)
Next J
End If
ZonesSaisies = Nothing
Boutons = Nothing
IEDoc = Nothing
IE = Nothing
End Sub
Bonjour à tous,
Internet explorer est en train de mourir, mais il existe une autre solution pour automatiser les jeux, ça fonctionne avec Chrome, Firefox, edge ... c'est génial
on peut l'implémenter même sous VBA :
Selenium
Prenons Chrome :
Installez le plugin Selenium IDE, cliquez sur l'icône "Se" qui s'est installé sur Chrome.
Cliquez sur "Record a new test in a new project".
Déroulez votre scénario de jeu
Cliquez à nouveau sur l'icône "Se"
Arrêtez l'enregistrement
Exportez-le au format souhaité (C# NUnit)
C'est du C# mais on peut le traduire facilement en VB.net ou VBA et même VBS.
Ouvrez le fichier généré avec un éditeur de texte et vous obtiendrez les références de tout les objects que vous aurez manipulé dans la page Web.
A plus. Tchicken.