国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

刪除Druid下方的阿里云廣告

incredible / 1482人閱讀

摘要:目前的控制臺依然存在阿里云的廣告,本文通過過濾器將廣告文本攔截。定位問題產生廣告的文件在。查看源碼可知是方法進行植入,由方法調用。

目前druid-1.1.14的web控制臺依然存在阿里云的廣告,本文通過過濾器將廣告文本攔截。

定位問題

產生廣告的JS文件在 druid-1.1.14.jar/support/http/resources/js/common.js。

查看源碼可知是buildFooter方法進行植入,由init方法調用。

解決問題
/**
 * Druid的配置類
 *
 * @author BBF
 */
@Configuration
@AutoConfigureAfter(DruidDataSourceAutoConfigure.class)
public class DruidConfig {

  /**
   * 帶有廣告的common.js全路徑,druid-1.1.14
   */
  private static final String FILE_PATH = "support/http/resources/js/common.js";
  /**
   * 原始腳本,觸發構建廣告的語句
   */
  private static final String ORIGIN_JS = "this.buildFooter();";
  /**
   * 替換后的腳本
   */
  private static final String NEW_JS = "http://this.buildFooter();";

  /**
   * 去除Druid監控頁面的廣告
   *
   * @param properties DruidStatProperties屬性集合
   * @return {@link org.springframework.boot.web.servlet.FilterRegistrationBean}
   */
  @Bean
  @ConditionalOnWebApplication
  @ConditionalOnProperty(name = "spring.datasource.druid.stat-view-servlet.enabled", havingValue = "true")
  public FilterRegistrationBean removeDruidAdFilter(
      DruidStatProperties properties) throws IOException {
    // 獲取web監控頁面的參數
    DruidStatProperties.StatViewServlet config = properties.getStatViewServlet();
    // 提取common.js的配置路徑
    String pattern = config.getUrlPattern() != null ? config.getUrlPattern() : "/druid/*";
    String commonJsPattern = pattern.replaceAll("*", "js/common.js");
    // 獲取common.js
    String text = Utils.readFromResource(FILE_PATH);
    // 屏蔽 this.buildFooter(); 不構建廣告
    final String newJs = text.replace(ORIGIN_JS, NEW_JS);
    FilterRegistrationBean registration = new FilterRegistrationBean<>();
    registration.setFilter(new RemoveAdFilter(newJs));
    registration.addUrlPatterns(commonJsPattern);
    return registration;
  }

  /**
   * 刪除druid的廣告過濾器
   *
   * @author BBF
   */
  private class RemoveAdFilter implements Filter {

    private final String newJs;

    public RemoveAdFilter(String newJS) {
      this.newJs = newJS;
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
        throws IOException, ServletException {
      chain.doFilter(request, response);
      // 重置緩沖區,響應頭不會被重置
      response.resetBuffer();
      response.getWriter().write(newJs);
    }
  }
}

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/73565.html

相關文章

  • 【深度】| 值得收藏阿里開源技術

    摘要:淘寶定制基于,是國內第一個優化定制且開源的服務器版虛擬機。數據庫開源數據庫是基于官方版本的一個分支,由阿里云數據庫團隊維護,目前也應用于阿里巴巴集團業務以及阿里云數據庫服務。淘寶服務器是由淘寶網發起的服務器項目。 Java JAVA 研發框架 SOFAStack SOFAStack(Scalable Open Financial Architecture Stack)是用于快速構建金融...

    econi 評論0 收藏0
  • 網站搭建之PHP環境配置!

    摘要:不知道是不是今日頭條進行了系統升級,標題居然可以寫這么長一串文字對于一個想在阿里云服務器上搭建網站的小白解決環境配置成了首要問題,手把手教會環境配置不知道有沒有和我一樣,同在網站建設方面懷揣著一個小目標的同路人。 不知道是不是今日頭條進行了系統升級,標題居然可以寫這么長一串文字:對于一個想在阿里云ECS服務器上搭建網站的小白?解決環境配置成了首要問題,手把手教會PHP環境配置! 不知道...

    elisa.yang 評論0 收藏0

發表評論

0條評論

incredible

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<