• Aspibet
  • Parier en automatique via une API

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

    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,

        4 mois plus tard

        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

          Merci Tchicken ,
          ça peut être utile à certains !

            4 jours plus tard

            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

              Merci pour le partage Tchicken
              beau travail !

                15 jours plus tard

                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.

                  Rédigez une réponse…