導航:首頁 > 凈水問答 > http請求返回數據進行過濾

http請求返回數據進行過濾

發布時間:2023-01-25 03:20:57

Ⅰ Java實現攔截HTTP請求的幾種方式

在Java的服務端開發當中,攔截器是很常見的業務場景,這里對Java開發當中幾種常見的攔截器的實現方式進行記錄和分析。案例說明基於Spring Boot環境。
一:實現javax.servlet.Filter介面(使用過濾器方式攔截請求)
import org.springframework.stereotype.Component;import javax.servlet.*;import java.io.IOException;import java.util.Date;@Componentpublic class TimeInterceptor implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {System.out.println("time filter init");}@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {System.out.println("time filter start");long start = new Date().getTime();filterChain.doFilter(servletRequest, servletResponse);System.out.println("time filter 耗時:"+(new Date().getTime()-start));System.out.println("time filter finish");}@Overridepublic void destroy() {System.out.println("time filter destroy");}}

如使用@Compent註解聲明不需要加入其它配置即可使得攔截器生效,但是默認攔截/*,會攔截所有請求。
二:使用@Bean注入自定義攔截器,依然上面的代碼,去掉@Compent註解,創建TimeWebConfig配置類:
import org.springframework.boot.web.servlet.FilterRegistrationBean;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import java.util.ArrayList;import java.util.List;@Configurationpublic class TimeWebConfig {@Beanpublic FilterRegistrationBean timeFilter(){FilterRegistrationBean registrationBean = new FilterRegistrationBean();TimeInterceptor interceptor = new TimeInterceptor();registrationBean.setFilter(interceptor);List<String> urls = new ArrayList<>();urls.add("/user/*");registrationBean.setUrlPatterns(urls);return registrationBean;}}

上面這兩種攔截請求的實現是基於JavaEE提供的Filter介面實現的,缺點在於,該攔截器實際上是一個過濾器,執行代碼的方法doFilter只提供了request,response等參數,當請求進入被過濾器攔截的時候,我們並不知道這個請求是由哪個控制器的哪個方法來執行的。
三:使用springMVC提供的攔截器,實現org.springframework.web.servlet.HandlerInterceptor介面:
創建自定義的攔截器:
import org.springframework.stereotype.Component;import org.springframework.web.method.HandlerMethod;import org.springframework.web.servlet.HandlerInterceptor;import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.util.Date;@Componentpublic class MyInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object handler) throws Exception {System.out.println("preHandler");System.out.println(((HandlerMethod) handler).getBean().getClass().getName());System.out.println(((HandlerMethod) handler).getMethod().getName());httpServletRequest.setAttribute("start", new Date().getTime());return true;}@Overridepublic void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {System.out.println("postHandler");Long start = (Long) httpServletRequest.getAttribute("start");System.out.println("time interceptor 耗時:"+(new Date().getTime()-start));}@Overridepublic void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {System.out.println("afterCompletion");Long start = (Long) httpServletRequest.getAttribute("start");System.out.println("time interceptor 耗時:"+(new Date().getTime()-start));System.out.println("ex is:"+e);}}

創建配置類:
import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.annotation.Configuration;import org.springframework.web.servlet.config.annotation.InterceptorRegistry;import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;@Configurationpublic class WebConfig extends WebMvcConfigurerAdapter {@Autowiredprivate MyInterceptor interceptor;@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(interceptor).addPathPatterns("/user/*").excludePathPatterns("/blog/*");}}

此種方式的攔截器當中我們能夠獲取攔截的請求對應的類和方法的相關信息,缺點在於該handler對象無法獲取具體執行方法的參數信息。
四:利用Spring的切面(AOP)實現攔截器:
引入jar包:
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-aop --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency>

創建切片類:
import org.aspectj.lang.ProceedingJoinPoint;import org.aspectj.lang.annotation.Around;import org.aspectj.lang.annotation.Aspect;import org.springframework.stereotype.Component;import java.util.Date;@Aspect@Componentpublic class TimeAspect {@Around("execution(* com.qinker.controller.UserController.*(..))")public Object handlerControllerMethod(ProceedingJoinPoint point) throws Throwable {System.out.println("time aspect start");long start = new Date().getTime();Object[] args = point.getArgs();for (Object obj : args) {System.out.println("arg is:"+obj);}Object obj = point.proceed();//具體方法的返回值System.out.println("aspect 耗時:"+(new Date().getTime()-start));System.out.println("time aspect end");return obj;}}
aspectj基於AOP實現的攔截器功能十分強大,具體詳解請參考spring官網網站的文檔。

Ⅱ net引擎是怎樣接收到http請求加以處理並返回結果

HttpMole是向實現類提供模塊初始化和處置事件。當一個HTTP請求到達HttpMole時,整個ASP.NET Framework系統還並沒有對這個HTTP請求做任何處理,也就是說此時對於HTTP請求來講,HttpMole是一個HTTP請求的「必經之路」,所以可以在這個HTTP請求傳遞到真正的請求處理中心(HttpHandler)之前附加一些需要的信息在這個HTTP請求信息之上,或者針對截獲的這個HTTP請求信息作一些額外的工作,或者在某些情況下乾脆終止滿足一些條件的HTTP請求,從而可以起到一個Filter過濾器的作用。

1、asp.net的HTTP請求處理過程

說明:
(1)、客戶端瀏覽器向伺服器發出一個http請求,此請求會被inetinfo.exe進程截獲,然後轉交給aspnet_isapi.dll進程,接著它又通過Http Pipeline的管道,傳送給aspnet_wp.exe這個進程,接下來就到了.net framework的HttpRunTime處理中心,處理完畢後就發送給用戶瀏覽器。
(2)、當一個http請求被送入到HttpRuntime之後,這個Http請求會繼續被送入到一個被稱之為HttpApplication Factory的一個容器當中,而這個容器會給出一個HttpApplication實例來處理傳遞進來的http請求,而後這個Http請求會依次進入到如下幾個容器中:HttpMole --> HttpHandler Factory --> HttpHandler。當系統內部的HttpHandler的ProcessRequest方法處理完畢之後,整個Http Request就被處理完成了,客戶端也就得到相應的東東了。
(3)完整的http請求在asp.net framework中的處理流程:
HttpRequest-->inetinfo.exe->ASPNET_ISAPI.DLL-->Http Pipeline-->ASPNET_WP.EXE-->HttpRuntime-->HttpApplication Factory-->HttpApplication-->HttpMole-->HttpHandler Factory-->HttpHandler-->HttpHandler.ProcessRequest()

也就是說一個HTTP請求在HttpMole容器的傳遞過程中,會在某一時刻(ResolveRequestCache事件)將這個HTTP請求傳遞給HttpHandler容器。在這個事件之後,HttpMole容器會建立一個HttpHandler的入口實例,但是此時並沒有將HTTP請求控制權交出,而是繼續觸發AcquireRequestState事件以及PreRequestHandlerExcute事件。在PreRequestHandlerExcute事件之後,HttpMole窗口就會將控制權暫時交給HttpHandler容器,以便進行真正的HTTP請求處理工作。
而在HttpHandler容器內部會執行ProcessRequest方法來處理HTTP請求。在容器HttpHandler處理完畢整個HTTP請求之後,會將控制權交還給HttpMole,HttpMole則會繼續對處理完畢的HTTP請求信息流進行層層的轉交動作,直到返回到客戶端為止。
PS:紅色的HttpApplication實例在HttpMole的Init方法中會用到。

Ⅲ 如何利用apache的過濾器攔截http的post請求,並提取出來postdata

利用ap_get_brigade函數從下一個過濾器中讀取數據,在利用存儲段轉換函數,將bucket轉換為字元串,就可以讀取出來了,但是具體步驟及函數你要自己去好好參考使用哪些合適
如果您對我的回答有不滿意的地方,還請您繼續追問;
答題不易,互相理解,互相幫助!

Ⅳ 如果截取某一程序的全部HTTP請求及返回的信息

C# WebBrowser,WebClient對象,

去msdn上看文檔研究下,或在搜這兩個類的使用方法,說不準就能搜到你想要的

WebBrowser.Navigate方法就能打開網站,然後讀出數據就行了

Ⅳ 如何用python腳本過濾到達伺服器某個站點的HTTP請求

nginx+Django估計可以做到

Ⅵ SpringBoot 三種攔截http請求方式Filter,interceptor和aop

SpringBoot 三種攔截http請求方式Filter,interceptor和aop。

這三種攔截方式的攔截順序是:filter—>Interceptor-->ControllerAdvice-->@Aspect -->Controller;

這三種方式的區別:
1.過濾器Filter可以拿到原始的HTTP請求和響應的信息, 但是拿不到你真正處理請求方法的信息,也就是方法的信息。
2.攔截器Interceptor可以拿到原始的HTTP請求和響應的信息,也可以拿到你真正處理請求方法的信息,但是拿不到傳進參數的那個值。
3.切片Aspect,既然Spring那麼支持AOP,可以拿到原始的HTTP請求和響應的信息, 也可以拿到你真正處理請求方法的信息,也可以傳進參數的那個值。

實現Filter介面

實現 HandlerInterceptor 介面,然後配置進Spring。

配置進spring

pom.xml 添加Aop支持

Ⅶ 如何讓某些http請求繞過Filter

繞過路由器白名單過濾是不可能的。聯網設備通過無線路由器聯網,只有獲取網關設置許可權才能修改路由器白名單過濾功能。無線WiFi白名單功能是MAC過濾的一種,白名單是只允許授權的設備聯網的設備名單。無線MAC地址過濾功能通過MAC地址允許或拒絕無線網路中的計算機訪問廣域網,有效控制無線網路內用戶的上網許可權。通過無線路由器白名單使允許的用戶聯網的方法:1.系統連接wifi。2.打開電腦瀏覽器,輸入路由器背後銘牌的網關ip地址(一般是192.168.1.1),進入網關配置界面。3.進入DHCP客戶端界面,查看主機名。記錄許可的設備主機名及其MAC地址。4.進入路由器安全設置界面,點擊MAC地址過濾,啟用白名單功能。僅允許模式:只允許指定MAC地址設備聯網。 選擇僅允許,輸入許可的MAC地址並標明注釋,點擊啟用即可使白名單的設備聯網訪問。

Ⅷ 在分析http數據包重定向的時候應該判斷哪些條件來過濾不必要的數據包

你的網址有問題,冒號應是英文模式輸入而不是中文模式輸入的,網址的結尾一般都是com或者net,你這明顯也不對,所以打不開呀,為更好地得到答案,您可以通過文字、截圖,對問題進行更詳細的描述並懸賞,然後把你疑惑的問題提交!!
如果您對我的回答有不滿意的地方,還請您繼續追問;
答題不易,互相理解,互相幫助!

Ⅸ android如何過濾http請求

Android客戶端捕獲http請求包的方法
對於Web測試,我們可以很容易的抓取到相關的http請求包,不用什麼專業軟體,甚至瀏覽器都能幫我們完成這個功能,拿到需要的http請求連接 。
http連接對於測試同學來說, 不論做功能、性能或是安全,都是非常重要的, 他過濾了前台的因素,讓測試同學直接能對後台進行交互。
以上是http連接的重要性,基本等於廢話,下面是正題。
客戶端安全測試,同樣需要拿到http的請求包,由於客戶端的前段限制繞過比較麻煩,那麼在做安全測試的過程中,直接拿到http的請求包顯得更外重要。
有如下方法可以拿到請求的http包:
1、在不配置代理的情況下,對Android客戶端(模擬器)的數據我們可以使用wireshark或者etherpeek等網路層抓包軟體抓取,模擬器本身的數據交互是通過電腦主機的網卡進行的,所以我們通過抓包軟體抓取主機網卡的數據包,經過過濾,便可得到模擬器客戶端中的數據包,類似這樣:

訪問之後,通過wireshark過濾http請求,便可找到我們剛剛發送的請求。
當然,這是種比較麻煩的方法,不過可以更確切的看到網路包發送的內容。
另一種辦法是對模擬器配置代理,讓所有請求包可以通過外部主機的七層抓包軟體,例如fiddler ,burpsuite等所捕獲到,配置代理需要先做一次設置:類似這樣:

進 入「設置」選項之後,按照圖示設置

這里proxy 設置為10.0.2.2是android模擬器對外部主機地址的硬編碼,埠設為8888是外部主機fiddler 的監聽地址,當然,如果是burpsuite 可以設置為8080。

Ⅹ wireshark 怎樣過濾http協議內容

在wireshark軟體的那個filter框框裡面輸入http,就能只過濾HTTP協議的內容了。

閱讀全文

與http請求返回數據進行過濾相關的資料

熱點內容
新疆飲料行業超濾設備 瀏覽:839
軟化水處理離子交換 瀏覽:686
如何減少污水投葯量 瀏覽:504
易語言音頻文件過濾器 瀏覽:790
凈水機超濾膜概念 瀏覽:266
怎麼下載污水管 瀏覽:758
污水中的含氮化合物有哪些 瀏覽:533
EDI樹脂怎樣再生 瀏覽:596
菲浦斯凈水器怎麼代理 瀏覽:397
電廠污水外排怎麼辦 瀏覽:662
手錶指針有水垢 瀏覽:198
中水回用維修公司 瀏覽:505
潮州凈化器怎麼選 瀏覽:988
噴漆廢水中氨氮濃度一般為多少 瀏覽:50
如何測算污水流量 瀏覽:758
怎麼更換轉向助力油濾芯 瀏覽:245
生活污水截污納管的意義 瀏覽:28
電熱壺燒純凈水為什麼有水垢 瀏覽:800
工業企業用水處理 瀏覽:768
最有效的馬桶除垢方法 瀏覽:375