J'essaie de construire une regexp qui évaluera TRUE pour Mon approche jusqu'à présent est de cibler le Actuellement, j'utilise le REGEXP suivant qui semble Atteindre la précision souhaitée: P> utilisateur utilisateur code>: S de "navigateurs navigancés par des humains", mais faux pour les robots. Inutile de dire que la correspondance ne sera pas exacte, mais si elle obtient les choses dites 90% des cas qui sont plus que suffisamment bons. utilisateur-utilisateur code> String des cinq grands navigateurs de bureau (MSIE, Firefox, Chrome, Safari, Opera). Spécifiquement, je souhaite que le REGEXP pas b> Pour correspondre si l'agent utilisateur est un bot (Googlebot, msnbot, etc.). P> (BlackBerry|HTC|LG|MOT|Nokia|NOKIAN|PLAYSTATION|PSP|SAMSUNG|SonyEricsson)
3 Réponses :
Vous pouvez construire une liste noire en vérifiant quels agents utilisateur accédent à robots.txt. p>
Concept intéressant! Façon de penser en dehors de la boîte.
Idée géniale! Je voulais vous donner des accessoires et un vote pour cela aussi :).
De nombreux crawlers n'envoient pas d'en-tête de langue acceptante, tandis que Afaik tous les navigateurs font. Vous pouvez combiner ces informations avec votre regex pour obtenir des résultats plus précis. P>
Le seul que j'ai vu ce désobéys c'est Slurp: [Mozilla / 5.0 (compatible; Yahoo! Slurp; help.yahoo.com/help/us/yssearch/slurp)] [en-nous, en; q = 0.5] Et aussi si vous servez un support, je pense que parfois les plugins de navigateur font une demande sans acceptation de langue si dans IE (c'est donc un non-bot, mais n'envoie pas de langue acceptée). Aussi Google Translate n'envoie pas une langue d'acceptation, mais en général, cette méthode semble bien fonctionner.
Donc, aussi loin que la logique: pensez-vous si (regex_matches || has_header) {is_human} vous réfléchissez à si (regex_matches && has_header) {is_human} code> sera meilleur
@ Nathanj.brauer et code>, pas ou code>. Toujours pas absolument fiable, mais ce n'est pas possible de toute façon.
Je préférerais utiliser le contraire, avoir un motif de bots est beaucoup plus simple
personnellement, j'utilise la regex suivante p>
C'est dangereux. J'ai ce filtré Mozilla / 5.0 (Linux; U; Android 3.0.1; en-US; Bouteille de fumée Build / hri66) Applewebkit / 534.13 (KHTML, comme Gecko) Version / 4.0 Safari / 534.13 < / Code>, et je n'avais que cela sur un sous-ensemble d'agents utilisateur que nous voyons jamais.
/ bot \ b | ... code> :-) Pas sûr de "Index", car certains plugins font des choses étranges aux chaînes d'agent utilisateur (en particulier dans IE, poussant la longueur)
Vous devriez ajouter "CURL" à votre regex
Qu'en est-il des bots qui identifient comme des navigateurs?
Macha: De toute évidence, ils seront classés comme navigateurs. Mais tant que celles-ci sont rares, elles ne seront pas un problème compte tenu de l'objectif de précision énoncé.
Oui, Errybody Courant un bot via votre site Web est honnête. La meilleure solution consiste à repenser ce que vous faites ici et comment vous allez à ce sujet. La plupart des gens préfèrent repérer des bots par comportement (beaucoup de pages différentes dans une période très courte) plutôt que par l'agent utilisateur.
: Voir le dernier paragraphe de la question. Il est très clair sur la portée de la question.