[Résolu] Comment pousser les données vers les clients

Quelque chose ne fonctionne pas alors qu'il vous semble que le soucis ne vient pas de vous ? Vous avez des questions sur nos services et vous pensez que vos préoccupation peuvent intéresser d'autres hébergés ? N'hésitez pas à nous contacter.
Inconnu
Cet utilisateur a supprimé son compte et n’existe plus.
Messages : 6340
Inscription : 29 décembre 2010 à 18:15

Bonjour,
je cherche une solution pour pousser les données du serveur vers les clients qui se connectent sur mon site.

Aujourd'hui je lance des requêtes HTTP régulières depuis les clients, mon application serveur renvoie les données nouvelles depuis la dernière fois que ce client à envoyé une telle requête.

C'est assez lourd en bande passante, et si j'ai plusieurs utilisateurs simultanés, je pense que ça active la protection DDOS sur mon site.

Je voudrais passer à Websockets qui, si j'ai bien compris, est une liaison TCP qu'on établit via une requête HTTP.

Question : Y a-t-il un support websockets côté serveur sur franceserv ?

Je suis naturellement preneur de toute autre suggestion :-)

Merci à tous,
Laurent
Avatar de l’utilisateur
Elodie
Fondatrice / Responsable
Fondatrice / Responsable
Messages : 7938
Inscription : 2 avril 2010 à 20:14

Bonsoir,
laurentponthieu a écrit :je cherche une solution pour pousser les données du serveur vers les clients qui se connectent sur mon site.

Aujourd'hui je lance des requêtes HTTP régulières depuis les clients, mon application serveur renvoie les données nouvelles depuis la dernière fois que ce client à envoyé une telle requête.

C'est assez lourd en bande passante, et si j'ai plusieurs utilisateurs simultanés, je pense que ça active la protection DDOS sur mon site.
D'accord, je pense que c'est une bonne méthode mais ça n'activera pas forcément une mitigation anti-DDoS. Tant que les requêtes sont correctement formulées, "intelligentes" et que ça ne provoque pas des centaines de requêtes par seconde sans arrêt ça devrai fonctionner. Après tout dépend de ce que c'est comme requêtes mais là actuellement je ne vois pas de soucis.
laurentponthieu a écrit :Je voudrais passer à Websockets qui, si j'ai bien compris, est une liaison TCP qu'on établit via une requête HTTP.

Question : Y a-t-il un support websockets côté serveur sur franceserv ?
Il ne sera pas possible d'utiliser un websocket sur un port quel qu'il soit depuis l'extérieur, par contre votre site peut en utiliser un vers l'extérieur mais le script PHP ne pourra pas tourner sans limitation de temps.
Vous avez une question ? Posez-la de préférence sur le forum et si ça demande un contact plus instantané, n'hésitez pas à vous rendre sur le t'chat IRC. Si votre question est personnelle, contactez-nous directement.
Inconnu
Cet utilisateur a supprimé son compte et n’existe plus.
Messages : 6340
Inscription : 29 décembre 2010 à 18:15

Merci beaucoup pour la réponse :-)

Mes requêtes sont peu nombreuses (une par seconde pour chaque IP cliente, environ 10 clients), et de l'ordre de 100 octets (up) et 1000 octets (down) respectivement.

Si ce n'est pas le DDoS, c'est peut-être la mire d'attente de 5 secondes que le site sert de temps en temps qui trompe mon app ?

Suggestion : pour que mon application cliente distingue le message d'attente "on valide votre navigateur" d'une erreur, pouvez-vous m'aider à les distinguer ? Par exemple, y a-t-il un code HTTP ou une balise particulière (et stable) dans le HTML retourné pour dire "on valide le navigateur" ?

Compris pour les websockets. Merci.

lp
Avatar de l’utilisateur
Elodie
Fondatrice / Responsable
Fondatrice / Responsable
Messages : 7938
Inscription : 2 avril 2010 à 20:14

laurentponthieu a écrit :Si ce n'est pas le DDoS, c'est peut-être la mire d'attente de 5 secondes que le site sert de temps en temps qui trompe mon app ?
Je ne connais pas votre application mais il n'y a pas et il n'y a pas eu de temps d'attente ou de mitigation anti-DDoS de 5 secondes sur votre site depuis sa création.

Si par contre vous avez eu ces 5 secondes d'attente, c'est que votre application ne se connecte pas correctement en utilisant par exemple uniquement l'adresse IP du service Web sans mentionner l'adresse URL de votre site. Comme nous sommes sur un hébergement mutualisé avec plusieurs sites différents derrière une même adresse IP, votre application ne pourra pas accéder à votre site précisément avec uniquement une adresse IP.

Dans ce cas seulement et comme ce genre de connexion erronée n’aboutira pas même sans les 5 secondes, il y a effectivement une mitigation de 5 secondes pour protéger les services car les criminels sur Internet procèdent généralement ainsi pour lancer leurs attaques.

Je pense alors que vous avez un problème autre part. Si vous souhaitez que je regarde, communiquez moi s'il vous plait ici en public ou par mail en privé, l'adresse de votre site et la date/heure à laquelle vous avez effectués des essais afin que je regarde de mon coté.
laurentponthieu a écrit :pour que mon application cliente distingue le message d'attente "on valide votre navigateur" d'une erreur, pouvez-vous m'aider à les distinguer ? Par exemple, y a-t-il un code HTTP ou une balise particulière (et stable) dans le HTML retourné pour dire "on valide le navigateur" ?
Tout dépend de la mitigation anti DDoS en cours, si elle est L7 le code HTTP retourné reste celui par défaut, par contre le contenu de la page affichera entre autre le texte "Checking your browser before accessing to". Il n'y a jamais eu de mitigation L7 sur votre site d'après mes journaux.

Par contre si la mitigation anti DDoS en cours est autre (L3/L4 etc ...), le code HTTP retourné ne sera pas un code HTTP habituel, probablement un code HTTP 302 avec aucun texte.

Le plus simple pour vous serai en plus d'afficher le résultat de votre réponse, un code pour vérifier que c'est bien votre site qui répond et pas une application de sécurité. Par exemple dans le body ou pourquoi pas dans l'entête HTTP.
Vous avez une question ? Posez-la de préférence sur le forum et si ça demande un contact plus instantané, n'hésitez pas à vous rendre sur le t'chat IRC. Si votre question est personnelle, contactez-nous directement.
Inconnu
Cet utilisateur a supprimé son compte et n’existe plus.
Messages : 6340
Inscription : 29 décembre 2010 à 18:15

elodie a écrit :Si par contre vous avez eu ces 5 secondes d'attente, c'est que votre application ne se connecte pas correctement en utilisant par exemple uniquement l'adresse IP du service Web sans mentionner l'adresse URL de votre site.
Non, pas de problème de ce côté.
elodie a écrit :Je pense alors que vous avez un problème autre part. Si vous souhaitez que je regarde, communiquez moi s'il vous plait ici en public ou par mail en privé, l'adresse de votre site et la date/heure à laquelle vous avez effectués des essais afin que je regarde de mon coté.
Voici ce que j'ai reçu :

Code : Tout sélectionner

<html>
<head>
<meta http-equiv="pragma" content="no-cache" />
</head>
<body>
<div style="top:0;left:0;width:100%;height:100%;position:absolute;display:table;">
<span style="display:table-cell;vertical-align:middle;text-align:center;">
<img src="/franceserv_anti_ddos_waiting.gif" alt="waiting" height="48" width="48" /><br/><h1>Checking your browser before accessing to idanet.franceserv.fr ...</h1>
<p>This process is automatic. Your browser will redirect to your requested content shortly.</p><p>Please allow up to 5 seconds ...</p><br/><p>DDoS protection by FranceServ H&eacute;bergement</p>
<p><img src="/franceserv_anti_ddos_logo_50x50.png" alt="franceserv logo" height="50" width="50" /></p>
</span>
</div>
<script type="text/javascript" src="/franceserv_anti_ddos_aes.min.js" ></script>
<script>function toNumbers(d){var e=[];d.replace(/(..)/g,function(d){e.push(parseInt(d,16))});return e}function toHex(){for(var d=[],d=1==arguments.length&&arguments[0].constructor==Array?arguments[0]:arguments,e="",f=0;f<d.length;f++)e+=(16>d[f]?"0":"")+d[f].toString(16);return e.toLowerCase()}var a=toNumbers("ec2f93cf2dcd46e7dfdff935cd211354"),b=toNumbers("db317aec7b8ee885838bf76753880ad0"),c=toNumbers("323fb639cf7610ab5d8db978e9d5b918");document.cookie="FSH_ANTI_DDOS="+toHex(slowAES.decrypt(c,2,a,b))+"; expires=Thu, 31-Dec-37 23:55:55 GMT; path=/"; setTimeout(function(){location.href="https://idanet.franceserv.fr/IdanetServer/testConnection.php?antiddos_check=1";}, 1000);</script>
</body>
</html>
laurentponthieu a écrit :pour que mon application cliente distingue le message d'attente "on valide votre navigateur" d'une erreur, pouvez-vous m'aider à les distinguer ? Par exemple, y a-t-il un code HTTP ou une balise particulière (et stable) dans le HTML retourné pour dire "on valide le navigateur" ?
elodie a écrit : Le plus simple pour vous serai en plus d'afficher le résultat de votre réponse, un code pour vérifier que c'est bien votre site qui répond et pas une application de sécurité. Par exemple dans le body ou pourquoi pas dans l'entête HTTP.
Merci, c'est en effet le plus simple ! Je vais faire comme ça.
Répondre