根据字符串测试子字符串数组
Test array of sub strings against a string
我有一个机器人名称数组。当用户或bot访问我的站点时,我获得user-agent
并想要测试我的数组中的一个值是否存在于其中。
var bots = [
"twitterbot",
"linkedinbot",
"facebookexternalhit",
"pinterest",
"dotbot",
"rogerbot",
"googlebot",
"baiduspider",
"yahoo! slurp",
"bot",
"spider",
"simplepie",
"yahooseeker",
"embedly",
"quora link preview",
"outbrain",
"vkshare",
"monit",
"pingability",
"monitoring",
"winhttprequest",
"apache-httpclient",
"getprismatic.com",
"python-requests",
"twurly",
"yandex",
"browserproxy",
"webmeup-crawler",
"qwantify"
];
var isBot = function(agent){
return bots.some(function(bot){
return bot.test(agent);
});
}
app.use(function(req, res, next){
var test = isBot(req.get("user-agent").toLowerCase());
console.log(test);
});
这给了我错误:TypeError: undefined is not a function
怎么了?如果你能帮助我扩展这个机器人列表,给我一个有用的外部链接或建议一些你自己!
test
函数对string不可用,但对RegExp对象不可用。因此,您需要将您的黑名单项定义为regexp,而不是字符串:
var bots = [
/twitterbot/,
/linkedinbot/,
/facebookexternalhit/,
/pinterest/,
/dotbot/,
/rogerbot/,
/googlebot/,
/baiduspider/,
/yahoo! slurp/,
/bot/,
/spider/,
/simplepie/,
/yahooseeker/,
/embedly/,
/quora link preview/,
/outbrain/,
/vkshare/,
/monit/,
/pingability/,
/monitoring/,
/winhttprequest/,
/apache-httpclient/,
/getprismatic.com/,
/python-requests/,
/twurly/,
/yandex/,
/browserproxy/,
/webmeup-crawler/,
/qwantify/
];
var isBot = function(agent){
return bots.some(function(bot){
return bot.test(agent);
});
};
alert('"clean-user-agent" is bot? ' + isBot('clean-user-agent'));
alert('"the ***twitterbot***" is bot? ' + isBot('the ***twitterbot***'));
try this:
var bots = [
/twitterbot/,
/linkedinbot/,
/facebookexternalhit/,
/pinterest/,
/dotbot/,
/rogerbot/,
/googlebot/,
/baiduspider/,
/yahoo! slurp/,
/bot/,
/spider/,
/simplepie/,
/yahooseeker/,
/embedly/,
/quora link preview/,
/outbrain/,
/vkshare/,
/monit/,
/pingability/,
/monitoring/,
/winhttprequest/,
/apache-httpclient/,
/getprismatic.com/,
/python-requests/,
/twurly/,
/yandex/,
/browserproxy/,
/webmeup-crawler/,
/qwantify/
];
var isBot = function(agent){
for(var b in bots) {
if(bot[b].test(agent)) {
return true;
}
}
return false;
}
相关文章:
- 将JSON转换为typescript中的字符串数组
- 在Javascript中将一个值和字符串数组转换为if语句
- 如何将正则表达式包含到字符串数组中
- JavaScript:将字符串数组转换为文本区域
- Knockout中的字符串数组
- 拆分字符串数组(JavaScript)后未定义
- 使用Javascript获取两个字符串之间的字符串数组
- 打印从Spring MVC Controller发送的字符串数组只显示“;toJSON”;在javascript中
- 将一个字符串数组解析为一个新的数组javascript
- AngularJS - 从字符串数组中连续更改文本
- 使用字符串数组中的字符填充 HTML 表
- 如何在 Javascript 中将字符串数组列表插入到表行中
- 创建二维字符串数组
- 如何从字符串数组中获取子字符串数组
- 如何将字符串数组转换为简单数组
- 按字母顺序、数字顺序和特殊字符对字符串数组进行排序
- 如何从字符串数组中获得8个随机唯一元素
- json_encode($myVar);正在给出地图,我想要一个字符串数组
- 函数,返回javascript中两个字符串数组的差值
- Javascript字符串数组转换为用逗号分隔的多个字符串