kekingcn / kk-anti-reptile

kk-anti-reptile是凯京科技研发的,适用于基于spring-boot开发的分布式系统的反爬虫、防接口盗刷组件。
Apache License 2.0
295 stars 104 forks source link

请问源码中ip的规则中,哪里能看到会把当前的key设置到redis中。 #18

Open jiazhanfeng opened 2 years ago

jiazhanfeng commented 2 years ago

RAtomicLong rRequestCount = this.redissonClient.getAtomicLong("ratelimiter_request_count".concat(requestUrl).concat(ipAddress)); RAtomicLong rExpirationTime = this.redissonClient.getAtomicLong("ratelimiter_expirationtime".concat(requestUrl).concat(ipAddress)); if (!rExpirationTime.isExists()) { rRequestCount.set(0L); rExpirationTime.set(0L); rExpirationTime.expire((long)expirationTime, TimeUnit.MILLISECONDS); } else { RMap rHitMap = this.redissonClient.getMap("ratelimiter_hit_crawlerstrategy"); if (rRequestCount.incrementAndGet() > (long)requestMaxSize || rHitMap.containsKey(ipAddress)) { rExpirationTime.expire(10L, TimeUnit.DAYS); rHitMap.put(ipAddress, requestUrl); System.out.println("Intercepted request, uri: " + requestUrl + ", ip:" + ipAddress + " request " + requestMaxSize + " times in " + expirationTime + " ms"); return true; } }