window访问不到linux的activemq_springboot整合开源项目测试拦截接口访问的频率
本節目標
本篇文章主要是介紹以下springboot整合開源項目,實現反爬蟲接口防刷的demo,額外的介紹一下axios的基本用法;所以本篇文章閱讀起來相對輕松。OK,下面開始整合.
引入項目依賴
cn.keking.project kk-anti-reptile 1.0.0-RELEASEorg.redisson redisson 3.13.5依賴這里遇到了坑,按照它里面的文檔說明,如果項目不用redisson,是不需要引入redison的依賴的,只需要配置下redisson的連接就可以的,但是啟動會報redis的連接錯誤,但是貌似也能訪問。不過,有錯誤就得解決,所以我又引入了redisson 的依賴,并且配置了本地的redisson地址,這才沒報錯。
配置文件
spring: thymeleaf: mode: HTML prefix: classpath:/templates/ encoding: UTF-8 redisson: address: redis://127.0.0.1:6379anti: reptile: manager: enabled: true# 啟用反爬插件 ip-rule: expiration-time: 60000 #時間窗口,單位ms request-max-size: 3 #時間窗口內最大請求數enabled: true # 啟用IP rule規則所有配置都以anti.reptile.manager為前綴,具體配置如下:
數據來源此項目作者:kekingcn
這里需要說明的是,里面有些配置項不能自由配置,例如 ip-rule.lock-expire ,在配置文件中是找不到這個配置項的,剛開始我還以為看漏了,確實配置不了,而且它的默認值是10天,不過我大概看了下,代碼中給的是1天,不知道是不是寫錯了。
反爬蟲組件使用
使用還是比較簡單的,只需要在需要反爬的接口上加一個注解就行了,如下
@Controllerpublic class TestController { @AntiReptile @GetMapping("/test/anti") @ResponseBody public String test() { return "hello world!!!"; }}測試
在配置的時間窗口內連續訪問,達到訪問的最大值,命中規則,就會出現下面的驗證規則。這個驗證頁面我也發現了個問題,就是輸入驗證信息后,直接按enter,會跳到報錯頁面,可能它這個enter的監聽事件沒有做。
驗證頁面
axios使用
項目中我們是不可能直接這么訪問接口的,一般都是從頁面點擊某個元素然后發起請求,那么就需要對這種命中規則后統一進行攔截,讓其輸驗證碼。我這里就cdn 引入了,這里的測試我就不貼出來了,需要的可以私信。配置如下:
//你的baseurlaxios.defaults.baseUrl = 'http://localhost:8080';// 添加響應攔截器axios.interceptors.response.use(function (response) { // to do something console.log('攔截:' + response) return response;}, function (error) { console.log("進來了。。。。。。。"); // to do something if (error.response.status === 509) {// 命中規則會返回509狀態碼 var html = error.response.data; //console.log('509錯誤' + html) var verifyWindow = window.open("","_blank","height=400,width=560"); verifyWindow.document.write(html); verifyWindow.document.getElementById("baseUrl").value = baseUrl; }});如果你是前端大神,請跳過此處。作為一名后端猿人,對這個axios的基本用法也應了解一些。下面是常用的方法,幫你羅列出來了。
// 發送 POST 請求axios({ method: 'post', url: '/user/12345', data: { firstName: 'Fred', lastName: 'Flintstone' }}); //無后續//發送POST, 后續處理axios.post('user',{firstName: 'Fred'}).then(function (response) { console.log(response); }) .catch(function (error) { console.log(error); });// 為給定 ID 的 user 創建請求axios.get('/user?ID=12345') .then(function (response) { console.log(response); }) .catch(function (error) { console.log(error); });// 上面的請求也可以這樣做axios.get('/user', { params: { ID: 12345 } }) .then(function (response) { console.log(response); }) .catch(function (error) { console.log(error); });//并發請求function getUserAccount() { return axios.get('/user/12345');}function getUserPermissions() { return axios.get('/user/12345/permissions');}axios.all([getUserAccount(), getUserPermissions()]) .then(axios.spread(function (acct, perms) { // 兩個請求現在都執行完成 }));更多用法詳見:http://www.axios-js.com/zh-cn/docs/#axios-API
總結
目前感覺這個開源項目還需要再沉淀一下,需要更多的人測試優化,今天只是簡單的使用了其中一兩個配置,其他的配置還沒有測試,大家感興趣的,可以自己去試下。喜歡小編的朋友可以關注下小編,評論里留下你的見解。最后,點贊+轉發,私信小編【anti】,獲取源碼地址。
總結
以上是生活随笔為你收集整理的window访问不到linux的activemq_springboot整合开源项目测试拦截接口访问的频率的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python mysql autocom
- 下一篇: sqlplus怎样将名次显示在表的后面_