pretrehr / Sports-betting

Sports betting assistant (with interface) which optimizes earnings regarding odds and offers
MIT License
404 stars 93 forks source link

Cotes dépassées #33

Closed Kromzer closed 3 years ago

Kromzer commented 3 years ago

Bonjour,

Tout d'abord, merci pour le travail effectué !

J'ai remarqué que certains sites (notamment pokerstars et unibet, peut être d'autres) renvoient parfois des données provenant d'un cache, ce qui donne des cotes qui ont changé depuis.

Cela arrive logiquement lorsque l'on fait plusieurs requêtes assez proches dans le temps.

Existerait-il un moyen de passer outre ces caches ? Ajouter les headers Cache-Control et Pragma ne semble pas suffire.

Cela est principalement dérangeant pour les surebets, qui restent souvent très peu longtemps.

pretrehr commented 3 years ago

Bonjour, J'ai également remarqué ce problème depuis quelques temps. Par défaut, les requêtes qui sont utilisées ne sont pas stockées en cache du côté de l'application. Donc je me dis que c'est très probable que ce soient directement les serveurs d'Unibet et Pokerstars qui remarquent que les requêtes successives viennent de la même source et donc ils renvoient des données identiques. On observe le même phénomène quand on fait F5 sur la page d'un match sur un navigateur : les cotes ne se mettent pas systématiquement à jour. Je n'ai malheureusement pas de solution à ce problème. Il faut juste être conscient du problème et bien faire attention lors de la prise de pari.

Kromzer commented 3 years ago

Oui, je confirme que ce n'est pas un "problème" côté client mais côté serveur, on le voit d'ailleurs sur Pokerstars dans les headers de la réponse avec un "X-Proxy-Cache : HIT". Il existe peut être un moyen de passer outre, vu que le site web lui se met à jour en temps réel (sans F5, avec juste la page ouverte).

Pour ce qui est des cotes "dépassées", il y a aussi le cas des cotes qui ne sont plus disponibles, comme sur PMU lorsque celle-ci est "SUSP" sur le site web mais remonte quand même.

Je vais continuer mes recherches pour voir s'il est possible de passer outre les caches et partagerai mon résultat s'il y en a un, mais j'avoue que ça dépasse un peu mes compétences.

Kromzer commented 3 years ago

Si jamais, une solution qui a l'air de fonctionner pas mal :

url = ("https://sports.pokerstarssports.fr/sportsbook/v1/api/getCompetitionEvents?competitionId={}" "&marketTypes=SOCCER%3AFT%3AAXB%2CMRES,BASKETBALL%3AFTOT%3AML,AB,RUGBYUNION%3AFT%3AMRES,HANDBALL%3AFT%3AMRES," "ICEHOCKEY%3AFT%3AAXB&includeOutrights=false&channelId=11&locale=fr-fr&siteId=32&foo={}".format(id_league, str(random.random())[2:10]))

On ajoute juste un paramètre quelconque ("foo" ici) avec une valeur aléatoire, le serveur considère alors visiblement que c'est une "nouvelle" requête. Je n'obtiens que des "MISS" comme ça.

pretrehr commented 3 years ago

Super, je vais regarder ça ! Merci beaucoup !