tablas - Detectar rastreadores de búsqueda a través de JavaScript
obtener datos de una tabla html javascript (4)
Me pregunto cómo me ocuparía de detectar rastreadores de búsqueda. La razón por la que pregunto es porque quiero suprimir ciertas llamadas de JavaScript si el agente de usuario es un bot.
He encontrado un ejemplo de cómo detectar un determinado navegador, pero no puedo encontrar ejemplos de cómo detectar un rastreador de búsqueda:
/MSIE (/d+/./d+);/.test(navigator.userAgent); //test for MSIE xx
Ejemplo de rastreadores de búsqueda que quiero bloquear:
Google
Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
Googlebot/2.1 (+http://www.googlebot.com/bot.html)
Googlebot/2.1 (+http://www.google.com/bot.html)
Baidu
Baiduspider+(+http://www.baidu.com/search/spider_jp.html)
Baiduspider+(+http://www.baidu.com/search/spider.htm)
BaiDuSpider
El ejemplo de "prueba para MSIE xx" es solo un código para probar el agente de usuario contra una expresión regular. En tu ejemplo, el Regexp es el
/MSIE (/d+/./d+);/
parte. Simplemente reemplácelo con su propio Regexp con el que desee probar el agente de usuario. Seria algo asi
/Google|Baidu|Baiduspider/.test(navigator.userAgent)
donde la barra vertical es el operador "o" para hacer coincidir el agente de usuario con todos los robots mencionados. Para obtener más información sobre la Expresión regular, puede consultar este sitio, ya que javascript utiliza el RegExp de estilo perl.
Esta es la expresión regular que utiliza la biblioteca ruby UA agent_orange
para probar si un userAgent
parece ser un bot. Puede restringirlo para bots específicos haciendo referencia a la lista de agentes de usuario de bot aquí :
/bot|googlebot|crawler|spider|robot|crawling/i
Por ejemplo, tiene algún objeto, util.browser
, puede almacenar en qué tipo de dispositivo está el usuario:
util.browser = {
bot: /bot|googlebot|crawler|spider|robot|crawling/i.test(navigator.userAgent),
mobile: ...,
desktop: ...
}
La siguiente expresión regular coincidirá con los motores de búsqueda más grandes según esta publicación .
/bot|google|baidu|bing|msn|duckduckbot|teoma|slurp|yandex/i
.test(navigator.userAgent)
Los motores de búsqueda de partidos son:
- Baidu
- Bingbot / MSN
- Pato Pato a ganar
- Teoma
- Yahoo!
- Yandex
Además, he agregado bot
como un paquete para pequeños rastreadores / bots.
Prueba esto. Se basa en la lista de rastreadores disponible en https://github.com/monperrus/crawler-user-agents
var botPattern = "(googlebot//|Googlebot-Mobile|Googlebot-Image|Google favicon|Mediapartners-Google|bingbot|slurp|java|wget|curl|Commons-HttpClient|Python-urllib|libwww|httpunit|nutch|phpcrawl|msnbot|jyxobot|FAST-WebCrawler|FAST Enterprise Crawler|biglotron|teoma|convera|seekbot|gigablast|exabot|ngbot|ia_archiver|GingerCrawler|webmon |httrack|webcrawler|grub.org|UsineNouvelleCrawler|antibot|netresearchserver|speedy|fluffy|bibnum.bnf|findlink|msrbot|panscient|yacybot|AISearchBot|IOI|ips-agent|tagoobot|MJ12bot|dotbot|woriobot|yanga|buzzbot|mlbot|yandexbot|purebot|Linguee Bot|Voyager|CyberPatrol|voilabot|baiduspider|citeseerxbot|spbot|twengabot|postrank|turnitinbot|scribdbot|page2rss|sitebot|linkdex|Adidxbot|blekkobot|ezooms|dotbot|Mail.RU_Bot|discobot|heritrix|findthatfile|europarchive.org|NerdByNature.Bot|sistrix crawler|ahrefsbot|Aboundex|domaincrawler|wbsearchbot|summify|ccbot|edisterbot|seznambot|ec2linkfinder|gslfbot|aihitbot|intelium_bot|facebookexternalhit|yeti|RetrevoPageAnalyzer|lb-spider|sogou|lssbot|careerbot|wotbox|wocbot|ichiro|DuckDuckBot|lssrocketcrawler|drupact|webcompanycrawler|acoonbot|openindexspider|gnam gnam spider|web-archive-net.com.bot|backlinkcrawler|coccoc|integromedb|content crawler spider|toplistbot|seokicks-robot|it2media-domain-crawler|ip-web-crawler.com|siteexplorer.info|elisabot|proximic|changedetection|blexbot|arabot|WeSEE:Search|niki-bot|CrystalSemanticsBot|rogerbot|360Spider|psbot|InterfaxScanBot|Lipperhey SEO Service|CC Metadata Scaper|g00g1e.net|GrapeshotCrawler|urlappendbot|brainobot|fr-crawler|binlar|SimpleCrawler|Livelapbot|Twitterbot|cXensebot|smtbot|bnf.fr_bot|A6-Indexer|ADmantX|Facebot|Twitterbot|OrangeBot|memorybot|AdvBot|MegaIndex|SemanticScholarBot|ltx71|nerdybot|xovibot|BUbiNG|Qwantify|archive.org_bot|Applebot|TweetmemeBot|crawler4j|findxbot|SemrushBot|yoozBot|lipperhey|y!j-asr|Domain Re-Animator Bot|AddThis)";
var re = new RegExp(botPattern, ''i'');
var userAgent = ''Googlebot/2.1 (+http://www.googlebot.com/bot.html)'';
if (re.test(userAgent)) {
console.log(''the user agent is a crawler!'');
}