亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術(shù)文章
文章詳情頁

如何劫持Java應(yīng)用的HTTP請求

瀏覽:24日期:2022-08-22 13:56:19

背景

全鏈路追蹤中,針對部分特殊的流量,希望將它引導(dǎo)到特定服務(wù)上(這個特定服務(wù)不在正常請求的鏈路上)——問題可以被抽象為解決進程間通信過程中目標(biāo)進程的選擇。

進程間通信方式很多,本篇只關(guān)注 Java 進程間套接字通信下 HTTP 形式的請求劫持,引導(dǎo)特定流量到特定進程。

解決方案

可行的處理方案繁多。自頂向下從應(yīng)用、框架、JVM、Container Runtime、System Call、網(wǎng)絡(luò)協(xié)議棧等級別,均可著手解決。侵入性最強的操作就是要求所有業(yè)務(wù)應(yīng)用都主動實現(xiàn) HTTP 請求分流邏輯;次一級是提供二方庫供業(yè)務(wù)應(yīng)用主動集成;或者從系統(tǒng)層面進行改造,基于改寫系統(tǒng)調(diào)用對請求進行劫持。

回顧兩年前的所學(xué),JVM TI 為劫持 HTTP 請求提供了一個全新的解決思路。通過 Agent 改寫應(yīng)用啟動時加載的類的字節(jié)碼,劫持類的實例并完成目標(biāo)功能。

由于 Java 項目間調(diào)用大量的使用了 Apache 的 http-client 庫,改寫變得相當(dāng)簡單。識別流量,并對特定流量改寫請求的 Host 即可。

Demo

由于 http-client 對所有請求目標(biāo)都統(tǒng)一由 org.apache.http.HttpHost 維護,控制變得極為簡單。只需在 HttpHost 實例化時,改寫類的構(gòu)造方法,即完成了對目標(biāo)的劫持工作(下例中強制將所有請求指向 163.com)

public class Agent implements ClassFileTransformer { public static void premain(String args, Instrumentation instrumentation) { instrumentation.addTransformer(new Agent()); } @Override public byte[] transform(ClassLoader loader, String className, Class<?> classBeingRedefined, ProtectionDomain protectionDomain, byte[] classfileBuffer) throws IllegalClassFormatException { if ('org/apache/http/HttpHost'.equals(className)) { ClassPool pool = ClassPool.getDefault(); try {CtClass httpHost = pool.get('org.apache.http.HttpHost');CtClass string = pool.get('java.lang.String');CtConstructor constructor = httpHost.getDeclaredConstructor(new CtClass[]{string, CtClass.intType, string});constructor.insertBefore('hostname = 'www.163.com';');byte[] bytes = httpHost.toBytecode();FileOutputStream fos = new FileOutputStream('/Users/fangfeng/a.class');fos.write(bytes);return bytes; } catch(NotFoundException | CannotCompileException | IOException e){e.printStackTrace(); } } return classfileBuffer; }}

將整個項目打包為 agent.jar 的過程不做太多介紹,詳見 ffutop/http-client-plugin

針對需要劫持的項目,在啟動參數(shù)中增加 -javaagent:${PATH_TO}/http-client-plugin.jar

以上就是如何劫持Java應(yīng)用的HTTP請求的詳細內(nèi)容,更多關(guān)于劫持Java應(yīng)用的HTTP請求的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 狠狠色丁香婷婷久久综合2021 | 亚洲国产精品综合欧美 | 综合激情婷婷 | 国产一区三区二区中文在线 | 毛片成人永久免费视频 | 亚洲精选 | 亚洲日本欧美产综合在线 | 国产麻豆综合视频在线观看 | 日本69xxxx免费视频 | 一区精品麻豆入口 | 麻豆视传媒短视频网站-欢迎您 | 农村妇女野外牲交一级毛片 | 精品国产91在线网 | 超h福利视频在线观看 | 成年人免费黄色片 | 手机在线1024 | 国内精品视频一区二区三区 | 黄色的网站免费观看 | www.一区| 欧美综合图片一区二区三区 | 69成人做爰视频在线观看 | 国产一级淫片a免费播放口欧美 | 日韩免费高清一级毛片久久 | 国产三级a三级三级 | 夜夜综合| 欧美一级aa免费毛片 | 国产亚洲精品一区二区在线观看 | 亚洲黄色免费网站 | 日韩欧美亚州 | 99久久免费国产精精品 | 中国日韩欧美中文日韩欧美色 | 国产婷婷丁香久久综合 | 老黄网站在线观看免费 | 大陆一级毛片 | 精品女同一区二区三区在线 | 日韩在线观看网址 | 国产chinese视频在线观看 | 大尺度做爰床戏呻吟免费观 | 手机视频在线观看 | 96精品视频| 欧美大片全黄在线观看 |