Обзор
KK-Anti-Reptile — это открытый интерфейс защиты от сканирования, основанный на компоненте Spring-Boot для распределённых систем.
Открытые адреса
https://gitee.com/kekingcn/kk-anti-reptile
https://github.com/kekingcn/kk-anti-reptile
Системные требования
Рабочий процесс
KK-Anti-Reptile использует SpringMVC-перехватчик для фильтрации запросов через механизм расширения Spring-Boot. Это позволяет создать экземпляр Spring HandlerInterceptor Bean и внедрить его в Servlet-контейнер. Таким образом, запросы фильтруются.
В фильтре KK-Anti-Reptile используется цепочка ответственности для интеграции различных правил фильтрации. Предоставляется абстрактный интерфейс, который может быть расширен вызывающей стороной.
Перехват вызовов по цепочке фильтрует запросы. Если запрос не проходит фильтрацию, он блокируется с кодом состояния 509. Затем отображается страница ввода проверочного кода. После правильного ввода проверочного кода правила фильтрации сбрасываются.
На данный момент в цепочке правил есть два правила:
Страница проверки
После срабатывания правил защиты от краулеров и антифрода генерируется проверочный код, который блокирует запрос. Существует несколько комбинаций проверочных кодов, и доступ предоставляется после правильного ввода кода.
Проверочные коды могут быть представлены в виде китайских или английских букв и цифр, а также в виде простых арифметических задач. Каждый тип проверочного кода может быть представлен статическим изображением или анимированным GIF-изображением. В настоящее время существует шесть типов проверочных кодов. Все типы проверочных кодов появляются случайным образом. Современные технические средства распознавания имеют очень высокую сложность, что эффективно предотвращает крупномасштабное сканирование данных краулерами.
Использование
Использование очень простое. Необходимо только добавить зависимость maven KK-Anti-Reptile и настроить включение KK-Anti-Reptile.
<dependency>
<groupId>cn.keking.project</groupId>
<artifactId>kk-anti-reptile</artifactId>
<version>1.0.0-RELEASE</version>
</dependency>
anti.reptile.manager.enabled
.anti.reptile.manager.enabled = true
anti.reptile.manager.include-urls
, указав URI интерфейса, подлежащего защите от сканирования (например, /client/list). Поддерживается сопоставление с регулярными выражениями (например, ^/admin/.*$). Несколько значений разделяются запятыми.anti.reptile.manager.include-urls = /client/list,/user/list,^/admin/.*$
@AntiReptile
к соответствующему интерфейсу контроллера требуемого интерфейса. Пример:@RestController
@RequestMapping("/demo")
public class DemoController {
@AntiReptile
@GetMapping("")
public String demo() {
return "Hello,World!";
}
}
import axios from 'axios';
import {baseUrl} from './config';
axios.interceptors.response.use(
data => {
return data;
},
error => {
if (error.response.status === 509) {
let html = error.response.data;
let verifyWindow = window.open("","_blank","height=400,width=560");
verifyWindow.document.write(html);
verifyWindow.document.getElementById("baseUrl").value = baseUrl;
}
}
);
export default axios;
Примечание
@ConditionalOnProperty
, необходимо добавить следующую конфигурацию в файл application.properties или bootstrap.properties (версия Apollo Client должна быть 0.10.0 или выше). Подробнее см. в документации Apollo (https://github.com/ctripcorp/apollo/wiki/Java%E5%AE%A2%E6%88%B7%E7%AB%AF%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97#3213-spring-boot%E9%9B%86%E6%88%90%E6%96%B9%E5%BC%8F%E6%8E%A8%E8%8D%90).apollo.bootstrap.enabled = true
spring.redisson.address = redis://192.168.1.204:6379
spring.redisson.password = xxx
Таблица конфигурации
Все конфигурации в spring-boot имеют автоматические подсказки и описания. Имя всех конфигураций начинается с anti.reptile.manager
. Вот таблица всех параметров конфигурации и их описаний:
NAME | 描述 | 默认值 | 示例 |
---|
Если у вас возникнут какие-либо вопросы во время использования, вы можете присоединиться к официальному QQ-чату: 613025121 для консультаций и обсуждений.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )