Question

J'ai un répertoire de blogs et de blogs accessible par le Web de manière anonyme, et j'aimerais connaître le nombre de vues que chaque article de blog reçoit.

Je veux que cela soit aussi simple que possible. La précision n’est qu’une approximation. Ce n'est pas pour l'analyse (nous avons Google pour cela) et je ne souhaite effectuer aucune analyse de journal pour extraire les statistiques, car l'exécution de tâches en arrière-plan dans cet environnement est délicate et je souhaite que les chiffres soient aussi récents que possible.

Ma solution actuelle est la suivante:

  1. Un contrôle Web qui enregistre simplement une vue dans une table pour chaque GET.
  2. Exclut une liste de robots Web connus utilisant une chaîne regex et un agent UserAgent
  3. prévoit l'exclusion de certaines adresses IP (spammeurs connus)
  4. Permet de verrouiller certains messages (lorsque les spammeurs viennent le chercher)

Cela semble en fait faire un très bon travail, mais deux choses me gênent. Les spammeurs ont encore frappé certains messages, faussant ainsi les vues. Je dois encore surveiller manuellement les vues et mettre à jour ma liste de "mauvais". Adresses IP.

Quelqu'un a-t-il de meilleures suggestions pour moi? Quelqu'un sait comment les points de vue sur les questions StackOverflow sont suivis?

Était-ce utile?

La solution

Il semble que votre solution actuelle soit en fait plutôt bonne.

Nous en avons implémenté un dans lequel le code serveur qui fournissait le contenu de la vue mettait également à jour une table de base de données dans laquelle l'URL était stockée (en fait, un code d'identification spécial pour l'URL car celle-ci pouvait changer au fil du temps) et le nombre de vues.

C’était en fait pour un système avec des publications écrites par l’utilisateur que les autres utilisateurs pourraient commenter, mais cela s’applique également à la situation où vous êtes le seul utilisateur à créer les publications (si je comprends bien votre description).

Nous avons dû procéder comme suit pour réduire (et non pas éliminer malheureusement) le biais.

  • Pour les utilisateurs connectés, chaque utilisateur ne pouvait ajouter qu'un seul point de vue à une publication. DÉJÀ. AUCUNE exception.
  • Pour les utilisateurs anonymes, chaque adresse IP ne pouvait ajouter qu'un seul point de vue à une publication par mois. C'était un peu moins fiable car les adresses IP pouvaient être «partagées» (NAT, etc.) de notre point de vue. La raison pour laquelle nous avons relâché le bouton "EVER". L’exigence ci-dessus était pour cette raison de partage.
  • Les messages eux-mêmes se limitaient à un point de vue ajouté par période (le délai commençait lentement (par exemple 10 secondes) et augmentait progressivement (jusqu'à 5 minutes), de sorte que les nouveaux messages pouvaient afficher des vues plus rapidement, en raison des modifications apportées. à leur nouveauté). Cela a pris soin de la plupart des spam-bots, car nous avons constaté qu'ils avaient tendance à attaquer longtemps après la création du message.
  • La suppression d'un commentaire de spam sur un message ou une tentative infructueuse de contourner CAPTCHA (voir ci-dessous) a automatiquement ajouté cette adresse IP à la liste noire et a réduit le nombre de vues de ce message.
  • Si une adresse IP sur la liste noire n'avait pas essayé de laisser un commentaire en N jours (configurable), elle était supprimée de la liste noire. Cette règle, ainsi que la règle précédente, minimisait l'intervention manuelle dans le maintien de la liste noire, nous n'avions qu'à surveiller les réponses pour le contenu de spam.
  • CAPTCHA. Cela a résolu beaucoup de nos problèmes de spam, d'autant plus que nous ne nous sommes pas contentés d'éléments de type OCR (comme "quel est ce mot - > 'facultativement'); nous avons en fait posé des questions (comme "Qu'est-ce 2 multiplié par la moitié de 8?") qui cassent les bots de reconnaissance de caractères muets. Il ne battra pas les hordes de casseurs CAPTCHA de main d'œuvre bon marché (à moins que leurs calculs soient vraiment mauvais :-) mais les améliorations apportées par l'absence de CAPTCHA étaient impressionnantes.
  • Les utilisateurs connectés ne sont pas soumis à la loi CAPTCHA, mais le compte a été immédiatement supprimé du compte de spam et leur adresse IP a été mise sur la liste noire. Leur vue a été soustraite de la publication.
  • J'ai honte d'admettre que nous n'avons pas réellement négligé les robots d'exploration du Web (j'espère que le client ne lit pas ceci :-). Pour être honnête, ils n’ajoutent probablement qu’un nombre minimal de points de vue chaque mois en raison de notre règle d’adresse IP (à moins qu’ils ne nous submergent de plusieurs adresses IP).

Donc, en gros, je suggère les améliorations suivantes. Bien sûr, vous devriez toujours surveiller comment ils vont voir s'ils travaillent ou non.

  • CAPTCHA.
  • Mises à jour automatiques de la liste noire en fonction du comportement de l'utilisateur.
  • Le nombre de vues limité augmente à partir d'adresses IP identiques.
  • La limitation du nombre de vues augmente à un certain taux.

Aucun modèle que vous choisissez ne sera parfait (notre règle d'un mois, par exemple), mais tant que toutes les publications suivent le même jeu de règles, vous obtenez toujours une bonne valeur comparative. Comme vous l'avez dit, la précision n'est qu'une approximation.

Autres conseils

Suggestions:

  1. Déplacez la logique du nombre d'accès d'un contrôle utilisateur dans une classe de page de base.
  2. Redéfinissez la liste des exclusions pour pouvoir la mettre à jour de façon dynamique (par exemple, stockez-la dans une base de données ou même dans un fichier xml)
  3. Enregistrez tous les hits. À intervalles réguliers, faites exécuter un travail cron à travers les nouveaux accès et déterminez s’ils sont inclus ou exclus. Si vous effectuez l’exclusion pour chaque hit, chaque utilisateur doit attendre que la logique correspondante ait lieu.
  4. Trouvez un algorithme pour détecter automatiquement les spammeurs / robots et les ajouter à votre liste noire. Et / ou vous abonner à une liste noire de tiers.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top