可恶的爬虫直接把生产 6 台机器爬挂了!




解决办法
方案 1:

方案 2:
方案 1 实现
static CopyOnWriteArraySet blackIpCopyOnWriteArraySet = null;/*** 初始化*/@PostConstructpublic void init() {// 调用反爬系统接口 拉取批量黑名单List<String> blackIpList = getBlackIpList();// 初始化blackIpCopyOnWriteArraySet = new CopyOnWriteArraySet(blackIpList);}/*** 判断IP 是否黑名单* @param ip* @return*/public boolean checkIpIsBlack(String ip) {boolean checkIpIsBlack = blackIpCopyOnWriteArraySet.contains(ip);if (!checkIpIsBlack )return false;// 不在redis白名单里面if (!RedisUtils.exist(String.format("whiteIp_%", ip)){return false;}return true;}
解决方案

什么是布隆过滤器
实现原理


将要添加的元素给 k 个哈希函数 得到对应于位数组上的 k 个位置 将这 k 个位置设为 1
将要查询的元素给 k 个哈希函数 得到对应于位数组上的 k 个位置 如果 k 个位置有一个为 0,则肯定不在集合中 如果 k 个位置全部为 1,则可能在集合中
使用 BloomFilter
<dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>23.0</version></dependency>public static int count = 1000000;private static BloomFilter<String> bf = BloomFilter.create(Funnels.stringFunnel(Charset.forName("utf-8")), count,0.009);public static void main(String[] args) {int missCount = 0;for (int i = 0; i < count; i++) {bf.put(i+"");}for (int i = count; i < count+1000000; i++) {boolean b = bf.mightContain(i +"");if (b) {missCount++;}}System.out.println(new BigDecimal(missCount).divide(new BigDecimal(count)));}
解决问题
/*** 初始化*/@PostConstructpublic void init() {// 这个可以通过配置中心来读取double fpp = 0.001;// 调用反爬系统接口 拉取批量黑名单List<String> blackIpList = getBlackIpList();// 初始化 不隆过滤器blackIpBloomFilter = BloomFilter.create(Funnels.stringFunnel(Charset.forName("utf-8")), blackIpList.size(), fpp);for (String ip: blackIpList) {blackIpBloomFilter.put(ip);}}/*** 判断是否是爬虫*/public boolean checkIpIsBlack(String ip) {boolean contain = blackIpBloomFilter.mightContain(ip);if (!contain) {return false;}// 不在redis白名单里面if (!RedisUtils.exist(String.format("whiteIp_%", ip)){return false;}// 调用反爬系统接口 判断IP是否在黑名单里面}

总结

程序员如何避免陷入“内卷”、选择什么技术最有前景,中国开发者现状与技术趋势究竟是什么样?快来参与「2020?中国开发者大调查」,更有丰富奖品送不停!

更多精彩推荐 ?滴滴开源的损失!章文嵩将离职,曾是阿里开源“赶集人”,投身开源 20 年
?红帽急了:新年的 RHEL 将有低成本或免费版
点分享 点收藏 点点赞 点在看
关注公众号:拾黑(shiheibook)了解更多
[广告]赞助链接:
四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/
关注网络尖刀微信公众号随时掌握互联网精彩
赞助链接
排名
热点
搜索指数
- 1 习近平将发表二〇二六年新年贺词 7904141
- 2 2026年国补政策来了 7808738
- 3 东部战区:开火!开火!全部命中! 7712893
- 4 2026年这些民生政策将惠及百姓 7616985
- 5 小学食堂米线过期2.5小时被罚5万 7519709
- 6 解放军喊话驱离台军 原声曝光 7428214
- 7 为博流量直播踩烈士陵墓?绝不姑息 7327605
- 8 每月最高800元!多地发放养老消费券 7238391
- 9 数字人民币升级 1月1日起将计付利息 7141831
- 10 2026年1月1日起 一批新规将施行 7040675












CSDN
