日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java agent技术原理及简单实现

發(fā)布時(shí)間:2024/1/23 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java agent技术原理及简单实现 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

注:本文定義-在函數(shù)執(zhí)行前后增加對(duì)應(yīng)的邏輯的操作統(tǒng)稱為MOCK

1、引子

在某天與QA同學(xué)進(jìn)行溝通時(shí),發(fā)現(xiàn)QA同學(xué)有針對(duì)某個(gè)方法調(diào)用時(shí),有讓該方法停止一段時(shí)間的需求,我對(duì)這部分的功能實(shí)現(xiàn)非常好奇,因此決定對(duì)原理進(jìn)行一些深入的了解,力爭找到一種使用者盡可能少的對(duì)原有代碼進(jìn)行修改的方式,以達(dá)到對(duì)應(yīng)的MOCK要求。

整體的感知程度可以分為三個(gè)級(jí)別:

  • 硬編碼

  • 增加配置

  • 無需任何修改

2、思路

在對(duì)方法進(jìn)行mock,暫停以及異常模擬,在不知道其原理的情況下,進(jìn)行猜想,思考其具體的實(shí)現(xiàn)原理,整體來說,最簡單的實(shí)現(xiàn)模型無外乎兩種:

2.1 樸素思路

假設(shè)存在如下的函數(shù)

1

2

3

public?Object targetMethod(){

????System.out.println("運(yùn)行");

}

若想要在函數(shù)執(zhí)行后暫停一段時(shí)間、返回特定mock值或拋出特定異常,那么可以考慮修改對(duì)應(yīng)的函數(shù)內(nèi)容:

public Object targetMethod(){//在此處加入Sleep return 或 throw邏輯System.out.println("運(yùn)行"); }

或使用類似代理的方法把對(duì)應(yīng)的函數(shù)進(jìn)行代理:

public Object proxy(){//執(zhí)行Sleep return 或 throw邏輯return targetMethod(); } public Object targetMethod(){System.out.println("運(yùn)行"); }

?

2.2 略成熟思路

在樸素思路的基礎(chǔ)上,我們可以看出,實(shí)現(xiàn)類似的暫停、mock和異常功能整體實(shí)現(xiàn)方案無外乎兩種:

  • 代理模式

  • 深入修改內(nèi)部函數(shù)

在這兩種思路的基礎(chǔ)上,我們從代理模式開始考慮(主要是代理使用的比較多,更熟悉)

2.2.1 動(dòng)態(tài)代理

說起代理,最常想到的兩個(gè)詞語就是靜態(tài)代理和動(dòng)態(tài)代理,二者卻別不進(jìn)行詳述,對(duì)于靜態(tài)代理模式由于需要大量硬編碼,所以完全可以不用考慮。

針對(duì)動(dòng)態(tài)代理來看,開始考慮最具代表性的CGLIB進(jìn)行調(diào)研。

下面的代碼為一個(gè)典型的使用CGLIB進(jìn)行動(dòng)態(tài)代理的樣例(代理的函數(shù)為PersonService.setPerson):

public class CGlibDynamicProxy implements MethodInterceptor {public Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable {System.out.println("執(zhí)行前...");Object object = methodProxy.invokeSuper(o, objects);System.out.println("執(zhí)行后...");return object;}static class PersonService {public PersonService() {System.out.println("PersonService構(gòu)造");}public void setPerson() {System.out.println("PersonService:setPerson");}}public static void main(String[] args) {Enhancer enhancer = new Enhancer();enhancer.setSuperclass(PersonService.class);enhancer.setCallback(new CGlibDynamicProxy());PersonService proxy= (PersonService) enhancer.create();proxy.setPerson();} }

從上面代碼可以看出,對(duì)于CGLIB的動(dòng)態(tài)代理而言,需要在原有代碼中進(jìn)行硬編碼,且需要在對(duì)象初始化的時(shí)候,使用特定的方式進(jìn)行初始化。因此若使用CGLIB完成MOCK,需要對(duì)應(yīng)代碼的的感知程度最高,達(dá)到了硬編碼的程度。

2.2.2 AspectJ

由于使用代理方式無法在不對(duì)代碼進(jìn)行修改的情況下完成MOCK,因此我們拋棄代理方式,考慮使用修改方法內(nèi)部代碼的方式進(jìn)行MOCK。

基于這種思路,將目光轉(zhuǎn)向了AspectJ。

在使用AspectJ時(shí),需要定義方法執(zhí)行前的函數(shù)以及方法執(zhí)行后的函數(shù):

@Aspect public class AspectJFrame {private Object before() {System.out.println("before");return new Object();}private Object after() {System.out.println("after");return new Object();}@Around("aroundPoint()")public Object doMock(ProceedingJoinPoint joinPoint) {Object object=null;before();try {object = joinPoint.proceed();} catch (Throwable throwable) {throwable.printStackTrace();}after();return object;} }

?

并通過aop.xml指定對(duì)應(yīng)的切點(diǎn)以及對(duì)應(yīng)的環(huán)繞函數(shù)

<aspectj><aspects><aspect name="com.test.framework.AspectJFrame"><before method="" pointcut=""/></aspect></aspects> </aspectj>

?

但是基于以上的實(shí)現(xiàn)方式,需要對(duì)原有項(xiàng)目進(jìn)行一定侵入,主要包含兩部分內(nèi)容:

  • 在META-INF路徑下增加aop.xml

  • 引入對(duì)應(yīng)的切面定義的jar包

通過aspectj可以完成在硬編碼的情況下實(shí)現(xiàn)MOCK,但是這種實(shí)現(xiàn)方式受限于Aspectj自身局限,MOCK的功能代碼在編譯期就已經(jīng)添加到對(duì)應(yīng)的函數(shù)中了,最晚可在運(yùn)行時(shí)完成MOCK功能代碼的添加。這種方式主要有兩個(gè)缺點(diǎn):

  • 對(duì)于運(yùn)行中的java進(jìn)行無法在不重啟的條件下執(zhí)行新增MOCK

  • MOCK功能代碼嵌入到目標(biāo)函數(shù)中,無法對(duì)MOCK功能代碼進(jìn)行卸載,可能帶來穩(wěn)定性風(fēng)險(xiǎn)

3、 java agent介紹

由于在上述提到的各種技術(shù)都難以很好的支持在對(duì)原有項(xiàng)目無任何修改下完成MOCK功能的需求,在查閱資料后,將目光放至了java agent技術(shù)。

3.1 什么是java agent?

java agent本質(zhì)上可以理解為一個(gè)插件,該插件就是一個(gè)精心提供的jar包,這個(gè)jar包通過JVMTI(JVM Tool Interface)完成加載,最終借助JPLISAgent(Java Programming Language Instrumentation Services Agent)完成對(duì)目標(biāo)代碼的修改。

java agent技術(shù)的主要功能如下:

  • 可以在加載java文件之前做攔截把字節(jié)碼做修改

  • 可以在運(yùn)行期將已經(jīng)加載的類的字節(jié)碼做變更

  • 還有其他的一些小眾的功能

    • 獲取所有已經(jīng)被加載過的類

    • 獲取所有已經(jīng)被初始化過了的類

    • 獲取某個(gè)對(duì)象的大小

    • 將某個(gè)jar加入到bootstrapclasspath里作為高優(yōu)先級(jí)被bootstrapClassloader加載

    • 將某個(gè)jar加入到classpath里供AppClassloard去加載

    • 設(shè)置某些native方法的前綴,主要在查找native方法的時(shí)候做規(guī)則匹配

3.2 java Instrumentation API

通過java agent技術(shù)進(jìn)行類的字節(jié)碼修改最主要使用的就是Java Instrumentation API。下面將介紹如何使用Java Instrumentation API進(jìn)行字節(jié)碼修改。

3.2.1 實(shí)現(xiàn)agent啟動(dòng)方法

Java Agent支持目標(biāo)JVM啟動(dòng)時(shí)加載,也支持在目標(biāo)JVM運(yùn)行時(shí)加載,這兩種不同的加載模式會(huì)使用不同的入口函數(shù),如果需要在目標(biāo)JVM啟動(dòng)的同時(shí)加載Agent,那么可以選擇實(shí)現(xiàn)下面的方法:

[1] public static void premain(String agentArgs, Instrumentation inst); [2] public static void premain(String agentArgs);

JVM將首先尋找[1],如果沒有發(fā)現(xiàn)[1],再尋找[2]。如果希望在目標(biāo)JVM運(yùn)行時(shí)加載Agent,則需要實(shí)現(xiàn)下面的方法:

[1] public static void agentmain(String agentArgs, Instrumentation inst); [2] public static void agentmain(String agentArgs);

這兩組方法的第一個(gè)參數(shù)AgentArgs是隨同 “–javaagent”一起傳入的程序參數(shù),如果這個(gè)字符串代表了多個(gè)參數(shù),就需要自己解析這些參數(shù)。inst是Instrumentation類型的對(duì)象,是JVM自動(dòng)傳入的,我們可以拿這個(gè)參數(shù)進(jìn)行類增強(qiáng)等操作。

3.2.2 指定Main-Class

Agent需要打包成一個(gè)jar包,在ManiFest屬性中指定“Premain-Class”或者“Agent-Class”,且需根據(jù)需求定義Can-Redefine-Classes和Can-Retransform-Classes:

Manifest-Version: 1.0 preMain-Class: com.test.AgentClass Archiver-Version: Plexus Archiver Agent-Class: com.test.AgentClass Can-Redefine-Classes: true Can-Retransform-Classes: true Created-By: Apache Maven 3.3.9 Build-Jdk: 1.8.0_112

3.2.3 agent加載

  • 啟動(dòng)時(shí)加載

    • 啟動(dòng)參數(shù)增加-javaagent:[path],其中path為對(duì)應(yīng)的agent的jar包路徑

  • 運(yùn)行中加載

    • 使用com.sun.tools.attach.VirtualMachine加載

try {String jvmPid = 目標(biāo)進(jìn)行的pid;logger.info("Attaching to target JVM with PID: " + jvmPid);VirtualMachine jvm = VirtualMachine.attach(jvmPid);jvm.loadAgent(agentFilePath);//agentFilePath為agent的路徑j(luò)vm.detach();logger.info("Attached to target JVM and loaded Java agent successfully"); } catch (Exception e) {throw new RuntimeException(e); }

?

3.2.4 Instrument

instrument是JVM提供的一個(gè)可以修改已加載類的類庫,專門為Java語言編寫的插樁服務(wù)提供支持。它需要依賴JVMTI的Attach API機(jī)制實(shí)現(xiàn)。在JDK 1.6以前,instrument只能在JVM剛啟動(dòng)開始加載類時(shí)生效,而在JDK 1.6之后,instrument支持了在運(yùn)行時(shí)對(duì)類定義的修改。要使用instrument的類修改功能,我們需要實(shí)現(xiàn)它提供的ClassFileTransformer接口,定義一個(gè)類文件轉(zhuǎn)換器。接口中的transform()方法會(huì)在類文件被加載時(shí)調(diào)用,而在transform方法里,我們可以利用上文中的ASM或Javassist對(duì)傳入的字節(jié)碼進(jìn)行改寫或替換,生成新的字節(jié)碼數(shù)組后返回。

首先可以定義如下的類轉(zhuǎn)換器:

public class TestTransformer implements ClassFileTransformer {//目標(biāo)類名稱, .分隔private String targetClassName;//目標(biāo)類名稱, /分隔private String targetVMClassName;private String targetMethodName;public TestTransformer(String className,String methodName){this.targetVMClassName = new String(className).replaceAll("\\.","\\/");this.targetMethodName = methodName;this.targetClassName=className;}//類加載時(shí)會(huì)執(zhí)行該函數(shù),其中參數(shù) classfileBuffer為類原始字節(jié)碼,返回值為目標(biāo)字節(jié)碼,className為/分隔public byte[] transform(ClassLoader loader, String className, Class<?> classBeingRedefined, ProtectionDomain protectionDomain, byte[] classfileBuffer) throws IllegalClassFormatException {//判斷類名是否為目標(biāo)類名if(!className.equals(targetVMClassName)){return classfileBuffer;}try {ClassPool classPool = ClassPool.getDefault();CtClass cls = classPool.get(this.targetClassName);CtMethod ctMethod = cls.getDeclaredMethod(this.targetMethodName);ctMethod.insertBefore("{ System.out.println(\"start\"); }");ctMethod.insertAfter("{ System.out.println(\"end\"); }");return cls.toBytecode();} catch (Exception e) {}return classfileBuffer;} }

?

類轉(zhuǎn)換器定義完畢后,需要將定義好的類轉(zhuǎn)換器添加到對(duì)應(yīng)的instrmentation中,對(duì)于已經(jīng)加載過的類使用retransformClasses對(duì)類進(jìn)行重新加載:

public class AgentDemo {private static String className = "hello.GreetingController";private static String methodName = "getDomain";public static void agentmain(String args, Instrumentation instrumentation) {try {List<Class> needRetransFormClasses = new LinkedList<>();Class[] loadedClass = instrumentation.getAllLoadedClasses();for (int i = 0; i < loadedClass.length; i++) {if (loadedClass[i].getName().equals(className)) {needRetransFormClasses.add(loadedClass[i]);}}instrumentation.addTransformer(new TestTransformer(className, methodName));instrumentation.retransformClasses(needRetransFormClasses.toArray(new Class[0]));} catch (Exception e) {}}public static void premain(String args, Instrumentation instrumentation) {instrumentation.addTransformer(new TestTransformer(className, methodName));}}

?

從上圖的代碼可以看出,主方法實(shí)現(xiàn)了兩個(gè),分別為agentmain和premain,其中

  • premain

    • 用于在啟動(dòng)時(shí),類加載前定義類的TransFormer,在類加載的時(shí)候更新對(duì)應(yīng)的類的字節(jié)碼

  • agentmain

    • 用于在運(yùn)行時(shí)進(jìn)行類的字節(jié)碼的修改,步驟整體分為兩步

      • 注冊(cè)類的TransFormer

      • 調(diào)用retransformClasses函數(shù)進(jìn)行類的重加載

4、java agent原理簡述

4.1 啟動(dòng)時(shí)修改

?

?

啟動(dòng)時(shí)修改主要是在jvm啟動(dòng)時(shí),執(zhí)行native函數(shù)的Agent_OnLoad方法,在方法執(zhí)行時(shí),執(zhí)行如下步驟:

  • 創(chuàng)建InstrumentationImpl對(duì)象

  • 監(jiān)聽ClassFileLoadHook事件

  • 調(diào)用InstrumentationImpl的loadClassAndCallPremain方法,在這個(gè)方法里會(huì)去調(diào)用javaagent里MANIFEST.MF里指定的Premain-Class類的premain方法

4.2 運(yùn)行時(shí)修改

?

?

運(yùn)行時(shí)修改主要是通過jvm的attach機(jī)制來請(qǐng)求目標(biāo)jvm加載對(duì)應(yīng)的agent,執(zhí)行native函數(shù)的Agent_OnAttach方法,在方法執(zhí)行時(shí),執(zhí)行如下步驟:

  • 創(chuàng)建InstrumentationImpl對(duì)象

  • 監(jiān)聽ClassFileLoadHook事件

  • 調(diào)用InstrumentationImpl的loadClassAndCallAgentmain方法,在這個(gè)方法里會(huì)去調(diào)用javaagent里MANIFEST.MF里指定的Agentmain-Class類的agentmain方法

4.3 ClassFileLoadHook和TransFormClassFile

在4.1和4.2節(jié)中,可以看出整體流程中有兩個(gè)部分是具有共性的,分別為:

  • ClassFileLoadHook

  • TranFormClassFile

ClassFileLoadHook是一個(gè)jvmti事件,該事件是instrument agent的一個(gè)核心事件,主要是在讀取字節(jié)碼文件回調(diào)時(shí)調(diào)用,內(nèi)部調(diào)用了TransFormClassFile函數(shù)。

TransFormClassFile的主要作用是調(diào)用java.lang.instrument.ClassFileTransformer的tranform方法,該方法由開發(fā)者實(shí)現(xiàn),通過instrument的addTransformer方法進(jìn)行注冊(cè)。

通過以上描述可以看出在字節(jié)碼文件加載的時(shí)候,會(huì)觸發(fā)ClassFileLoadHook事件,該事件調(diào)用TransFormClassFile,通過經(jīng)由instrument的addTransformer注冊(cè)的方法完成整體的字節(jié)碼修改。

對(duì)于已加載的類,需要調(diào)用retransformClass函數(shù),然后經(jīng)由redefineClasses函數(shù),在讀取已加載的字節(jié)碼文件后,若該字節(jié)碼文件對(duì)應(yīng)的類關(guān)注了ClassFileLoadHook事件,則調(diào)用ClassFileLoadHook事件。后續(xù)流程與類加載時(shí)字節(jié)碼替換一致。

4.4 何時(shí)進(jìn)行運(yùn)行時(shí)替換?

在類加載完畢后,對(duì)應(yīng)的想要替換函數(shù)可能正在執(zhí)行,那么何時(shí)進(jìn)行類字節(jié)碼的替換呢?

由于運(yùn)行時(shí)類字節(jié)碼替換依賴于redefineClasses,那么可以看一下該方法的定義:

jvmtiError JvmtiEnv::RedefineClasses(jint class_count, const jvmtiClassDefinition* class_definitions) { //TODO: add lockingVM_RedefineClasses op(class_count, class_definitions, jvmti_class_load_kind_redefine);VMThread::execute(&op);return (op.check_error()); } /* end RedefineClasses */

其中整體的執(zhí)行依賴于VMThread,VMThread是一個(gè)在虛擬機(jī)創(chuàng)建時(shí)生成的單例原生線程,這個(gè)線程能派生出其他線程。同時(shí),這個(gè)線程的主要的作用是維護(hù)一個(gè)vm操作隊(duì)列(VMOperationQueue),用于處理其他線程提交的vm operation,比如執(zhí)行GC等。

VmThread在執(zhí)行一個(gè)vm操作時(shí),先判斷這個(gè)操作是否需要在safepoint下執(zhí)行。若需要safepoint下執(zhí)行且當(dāng)前系統(tǒng)不在safepoint下,則調(diào)用SafepointSynchronize的方法驅(qū)使所有線程進(jìn)入safepoint中,再執(zhí)行vm操作。執(zhí)行完后再喚醒所有線程。若此操作不需要在safepoint下,或者當(dāng)前系統(tǒng)已經(jīng)在safepoint下,則可以直接執(zhí)行該操作了。所以,在safepoint的vm操作下,只有vm線程可以執(zhí)行具體的邏輯,其他線程都要進(jìn)入safepoint下并被掛起,直到完成此次操作。

因此,在執(zhí)行字節(jié)碼替換的時(shí)候需要在safepoint下執(zhí)行,因此整體會(huì)觸發(fā)stop-the-world。

總結(jié)

以上是生活随笔為你收集整理的java agent技术原理及简单实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

www国产亚洲| 精品免费观看视频 | 亚欧洲精品视频在线观看 | 色www.| 911久久 | 69热国产视频 | 日韩欧美在线不卡 | 亚洲国产精品va在线 | 97视频在线观看免费 | 在线视频 影院 | 亚洲一区二区三区在线看 | 最近高清中文字幕在线国语5 | 久久一区二 | 免费a级黄色毛片 | 久久久久国产免费免费 | 福利视频午夜 | 久久久免费在线观看 | 99视频+国产日韩欧美 | 公与妇乱理三级xxx 在线观看视频在线观看 | 国产免费一区二区三区网站免费 | 久久av中文字幕片 | 国产中文字幕免费 | 国产原创在线观看 | 日韩精品欧美一区 | 亚洲一区二区三区四区精品 | 天天插天天干天天操 | 久久婷亚洲五月一区天天躁 | 中文字幕免 | 91久久在线观看 | 色综合天天综合网国产成人网 | 国产中文字幕在线视频 | 国产日本在线播放 | 久久99这里只有精品 | 福利一区二区在线 | 久久久久国产一区二区三区四区 | 日韩在线网 | 国产精品手机视频 | 有码中文字幕在线观看 | 亚洲va欧美 | 日韩电影精品一区 | h动漫中文字幕 | 亚洲精品动漫成人3d无尽在线 | 天天综合入口 | 播五月综合 | 丁香在线视频 | 亚洲国产精品第一区二区 | 在线播放第一页 | 国产精品综合在线观看 | 又黄又爽的免费高潮视频 | 美女中文字幕 | 依人成人综合网 | 亚洲国产高清在线 | 色婷在线 | 一级黄色av | 国外调教视频网站 | 成人毛片一区 | 久久手机免费视频 | 国产精品99久久免费黑人 | 99精品视频观看 | 麻豆精品在线 | 91成人久久 | 成人在线免费看视频 | 国产精品国产三级国产不产一地 | www.五月天激情 | 亚洲人成影院在线 | 一本之道乱码区 | 中文成人字幕 | 日韩欧美高清 | 久草精品免费 | 久久精品国产精品 | 成人a在线| 绯色av一区 | 在线视频一区观看 | 免费欧美 | 欧美另类tv | 成人午夜久久 | 成人免费大片黄在线播放 | 欧美一区二区三区免费看 | 免费污片| 91高清免费在线观看 | 精品美女国产在线 | 久热香蕉视频 | 日韩欧美在线播放 | 欧美成人精品欧美一级乱黄 | 久久精品日产第一区二区三区乱码 | av亚洲产国偷v产偷v自拍小说 | 色婷婷成人网 | 欧美一级免费 | 亚洲影视九九影院在线观看 | www夜夜操| 超碰在线天天 | 五月婷婷av在线 | 超碰人人舔 | 欧美日韩一二三四区 | 欧美一二区视频 | 91丨九色丨蝌蚪丨对白 | 久久国产精品系列 | 国产一级免费观看 | 999成人精品 | 亚洲精品在线观看中文字幕 | 五月婷婷亚洲 | 亚洲国产视频a | 高清不卡一区二区在线 | 九九在线播放 | 日韩在线观看视频中文字幕 | 黄色的网站免费看 | 五月天久久久久久 | 久久久国产一区 | 精品久久久久国产免费第一页 | 97精品国产97久久久久久粉红 | 日日操日日干 | 久久精品香蕉视频 | 久久九九精品久久 | 奇米网在线观看 | 国产婷婷视频在线 | 日韩三级av | 2023年中文无字幕文字 | av成人在线看 | 色综合天 | 久草在线费播放视频 | 国产亚州精品视频 | 亚洲欧美成aⅴ人在线观看 四虎在线观看 | 欧美在线观看视频 | 国产精品99久久久精品 | 美腿丝袜av | 国产一区二区三区免费在线观看 | 国产精品久久久久久婷婷天堂 | 91免费的视频在线播放 | 天天天干夜夜夜操 | 亚洲毛片久久 | 日韩在线色视频 | 97色涩 | 久久视 | 亚洲乱码精品久久久 | 在线免费中文字幕 | 欧美 亚洲 另类 激情 另类 | 日本中文字幕网站 | 国产精品每日更新 | 国产午夜精品一区二区三区欧美 | 色婷婷狠狠五月综合天色拍 | 精品成人a区在线观看 | 国产黄色免费观看 | 国产亚洲精品无 | 免费碰碰 | 欧美一级性视频 | 91精品国产成人www | 久久久久久高潮国产精品视 | 超碰97在线资源站 | 在线免费三级 | 婷婷丁香在线观看 | 国产三级精品在线 | 国产精品video爽爽爽爽 | 亚洲aⅴ免费在线观看 | 精品久久久久久久久中文字幕 | 色诱亚洲精品久久久久久 | 西西444www高清大胆 | 五月婷婷操 | 国产999精品久久久久久绿帽 | 69视频在线 | 日本最新高清不卡中文字幕 | 久久一区二区三区国产精品 | 国产清纯在线 | 欧美日韩视频免费 | 国产一级片在线播放 | 国产精品a久久 | 日韩三级免费观看 | 夜又临在线观看 | 国产xx视频 | 亚洲91av| 91免费观看网站 | 亚洲四虎影院 | 狠狠狠色丁香婷婷综合久久五月 | 亚州精品视频 | 成人毛片久久 | 高清免费在线视频 | 国产精品系列在线 | 99精品福利 | 亚洲精品美女久久久久 | 成人av电影免费在线观看 | 久久久久99精品成人片三人毛片 | 在线免费黄色 | 四虎8848免费高清在线观看 | 日韩精品欧美视频 | 97国产视频 | 日韩一区二区免费视频 | 久久1电影院 | 亚洲精品综合一区二区 | 91亚洲网站 | 91视频久久久 | 久久久久国产精品免费 | 97色婷婷成人综合在线观看 | 激情av网址| 人人舔人人干 | 国产一级精品视频 | 精品国产精品久久一区免费式 | 中文字幕乱码亚洲精品一区 | 中文字幕a在线 | 久草精品视频 | www.激情五月.com | 日韩激情av在线 | 成人在线免费视频观看 | 久热久草在线 | 亚洲精品美女视频 | 国产综合激情 | 国产成人99av超碰超爽 | 久久精品一二区 | 午夜精品一区二区三区可下载 | 99亚洲精品视频 | 中文字幕在线视频第一页 | 色婷婷综合久久久 | 欧美日在线 | 久久久高清免费视频 | 日韩免费小视频 | 欧美电影黄色 | 最新久久久| 亚洲精品国产欧美在线观看 | 黄色av电影一级片 | 欧美日韩一区二区在线观看 | 成人在线观看免费视频 | 成人免费视频视频在线观看 免费 | 在线观看视频h | 青青五月天 | 最近中文字幕完整高清 | 99国产精品久久久久久久久久 | 欧美一级爽 | 久久九九久久精品 | 四虎影视成人精品国库在线观看 | 亚洲专区免费观看 | www.日韩免费 | 日韩av图片 | 国产一区二区在线免费 | 日本三级久久久 | 国产成人一二片 | 日韩欧美一区二区在线 | 97av免费视频 | 2018亚洲男人天堂 | 精品福利网 | 69久久久| 国产一级大片在线观看 | 天天曰视频| 在线中文字幕视频 | 国产精品久久久久久久久免费看 | 色综合天天色综合 | 蜜臀av夜夜澡人人爽人人 | 免费网站黄色 | 久久国产综合视频 | 久久99精品久久久久久三级 | 色婷婷激婷婷情综天天 | 免费色视频在线 | 激情综合啪啪 | 一区二区三区在线视频111 | 亚洲va天堂va欧美ⅴa在线 | 最近免费在线观看 | 久久99久久99精品免视看婷婷 | 97超碰在线免费 | 黄色在线观看www | 日韩免费网址 | 天天色天天骑天天射 | 免费在线观看av网址 | 成人国产精品免费观看 | 日韩精品一卡 | 久久9精品 | 欧美高清视频不卡网 | 99精品免费久久久久久久久 | 亚洲欧美少妇 | 97精品国产97久久久久久 | 精品一区二区在线免费观看 | 999国内精品永久免费视频 | 日韩毛片在线一区二区毛片 | 亚洲视频在线播放 | 免费亚洲视频在线观看 | 黄色毛片大全 | 欧美a级免费视频 | 国产精品久久久久久久99 | 亚洲精品小视频 | 91视频免费 | 国产99在线播放 | 日日日视频 | 缴情综合网五月天 | 免费试看一区 | 国产自偷自拍 | 99视屏| 香蕉视频在线看 | 久色 网 | 午夜91在线 | 国产精品精品久久久 | 精品综合久久久 | www.久久久 | 色婷婷一区 | 91精品免费在线视频 | 天天色天天爱天天射综合 | 久久tv| 亚州精品天堂中文字幕 | 激情丁香5月 | 国产精品视频免费观看 | 91人人爽久久涩噜噜噜 | 99久热在线精品视频观看 | 亚洲视频1区2区 | 中文字幕国产在线 | 国产美女精品视频免费观看 | 欧美激情xxxx性bbbb | 韩日精品视频 | 免费av高清 | 欧美精品二 | 久久女教师 | 亚洲精品h | a在线观看视频 | 国产一级片久久 | 成人国产精品免费观看 | 在线观看视频在线 | 午夜久久福利视频 | 91高清一区 | 麻豆影视网 | 91香蕉嫩草 | 色婷婷播放 | 91影视成人 | 国产黄免费 | 国产精品va在线观看入 | 深夜激情影院 | 91久久丝袜国产露脸动漫 | 久久r精品| 日本超碰在线 | 午夜精品视频免费在线观看 | 中文字幕在线免费看线人 | 97超碰成人在线 | 色婷婷av一区二 | 国产成人综 | www.av小说 | 久青草视频| av 在线观看 | 欧美日韩视频在线观看一区二区 | 在线看一级片 | 国产精品色| 欧美大片www | 最新日本中文字幕 | 免费看麻豆| 91精品国产综合久久福利 | 综合在线色 | 日韩美在线 | 99久久婷婷| 特级aaa毛片 | 成年人视频在线免费 | 久草视频国产 | 国产一级片视频 | 996久久国产精品线观看 | 日本大片免费观看在线 | 成人在线视频免费看 | 99久久精品国产欧美主题曲 | 在线免费观看黄色av | 国产精品9区 | 欧美片一区二区三区 | 国产麻豆精品免费视频 | 亚洲精品自在在线观看 | 日日狠狠| 国产一区二区精品久久91 | 精品免费一区 | 国产精品久久久久久99 | 国产精品久久久久一区二区三区共 | 亚洲免费av一区二区 | 奇米影视777四色米奇影院 | 久久伊人精品一区二区三区 | 在线国产视频 | 日韩久久久久久久久久久久 | 国产大尺度视频 | 黄色成人在线 | 久久不卡视频 | 日韩视频免费 | 在线观看一区二区精品 | 98超碰人人| 中文字幕在线电影 | 夜夜爽夜夜操 | 久久免费播放 | 国产黄色片在线免费观看 | 欧美日韩亚洲精品在线 | 国产精品久久久久久久久久久免费看 | 久久99久久精品 | 久久国产精品久久国产精品 | 五月天激情视频 | www.久热 | 99精品国产福利在线观看免费 | 欧美日韩精品在线一区二区 | 一区二区影视 | 永久黄网站色视频免费观看w | 久久99久久精品 | 97视频在线看 | 成人免费观看视频网站 | 色综合久久久久综合 | 青青草国产精品视频 | 丁香婷婷综合激情五月色 | 久热免费在线 | 夜夜操狠狠操 | 欧美视屏一区二区 | 亚洲天堂网视频在线观看 | 色婷婷亚洲综合 | 免费看污的网站 | 久久久久福利视频 | 五月激情丁香婷婷 | 国产在线p | 国产黄色av影视 | 夜夜爽夜夜操 | 久草网站 | 西西444www大胆高清图片 | 国产亚洲一区二区在线观看 | 日韩精品中文字幕久久臀 | 欧美日韩一级视频 | 久草影视在线观看 | 综合激情婷婷 | 亚洲美女视频在线观看 | 亚洲综合成人av | 久草网在线观看 | 久久www免费人成看片高清 | 精品高清视频 | 一级做a爱片性色毛片www | 操少妇视频 | 在线视频99| 婷婷精品国产一区二区三区日韩 | 99精彩视频 | 97精品国产97久久久久久 | 99视频在线播放 | 99理论片 | 96亚洲精品久久 | av在线免费播放 | 五月天婷婷狠狠 | 色中射| 日韩女同一区二区三区在线观看 | 日韩深夜在线观看 | 中文字幕中文中文字幕 | 99久久这里有精品 | 日韩av高清在线观看 | 亚州精品天堂中文字幕 | 麻豆影视网 | 免费人做人爱www的视 | 亚洲精品久久久久中文字幕二区 | 国内视频在线观看 | 欧美成年人在线观看 | 成全免费观看视频 | 人人干人人干人人干 | 丁香婷婷深情五月亚洲 | 97理论片| 97超碰超碰久久福利超碰 | 日本中文字幕视频 | 狠狠操在线 | 成年人毛片在线观看 | 欧美性大战久久久久 | 91人人干| 国产一区二区在线精品 | 色97在线| 中文一二区 | 日韩性久久 | 激情影音先锋 | 色视频成人在线观看免 | 亚洲一二三区精品 | 日韩中文字幕在线不卡 | 久久综合国产伦精品免费 | 久久与婷婷| 午夜12点 | av天天澡天天爽天天av | 亚洲不卡在线 | 欧美一级日韩三级 | 777久久久| av电影免费在线播放 | 国产91精品久久久久久 | a√国产免费a | 国产成人一区二区三区在线观看 | 国产96在线观看 | 久久美女电影 | 亚洲精品国产综合99久久夜夜嗨 | 成人免费影院 | 国产亚洲一区二区在线观看 | 国产高清免费在线播放 | 免费午夜视频在线观看 | 亚洲视频在线看 | 欧美精品v国产精品 | www.888av | 国产91精品欧美 | 午夜天使 | 免费av网站在线看 | 免费69视频| 97天堂| 香蕉视频在线看 | 黄色www| 91在线看 | 黄色视屏在线免费观看 | 日日夜夜人人精品 | 91麻豆精品国产自产在线 | 精品视频免费播放 | av高清免费在线 | 一二区精品 | 久久69av| 视频在线观看入口黄最新永久免费国产 | 久草国产精品 | 激情伊人五月天 | 久久综合久久综合这里只有精品 | 免费在线观看毛片网站 | 日韩av三区 | 亚洲午夜大片 | 色婷婷国产精品一区在线观看 | 免费观看黄色av | 精品欧美一区二区三区久久久 | 中文区中文字幕免费看 | 日韩大陆欧美高清视频区 | 国产亚洲在线 | 国产精品国产亚洲精品看不卡15 | 在线视频观看国产 | 久久久久亚洲精品中文字幕 | www.xxxx变态.com| 99久久久国产精品美女 | 欧美日韩精品综合 | 成人av资源在线 | 国内丰满少妇猛烈精品播放 | 中文字幕 国产精品 | 久久夜夜操 | 在线观看国产麻豆 | 国产成免费视频 | 久久精品99国产精品酒店日本 | 国产黄色免费电影 | 国产午夜精品一区二区三区在线观看 | 福利视频精品 | 激情伊人| 综合久久精品 | 国产精品1区2区在线观看 | 97视频网址| 中文字幕一区二区在线播放 | 免费高清男女打扑克视频 | 99国内精品久久久久久久 | 夜夜摸夜夜爽 | .精品久久久麻豆国产精品 亚洲va欧美 | 四虎国产永久在线精品 | 在线观看视频一区二区 | 一区二区三区影院 | 精品国产99 | 在线a视频免费观看 | 久久久免费毛片 | 国产一级精品绿帽视频 | 91成人精品一区在线播放69 | 婷香五月 | 国产免费黄视频在线观看 | 97精品国产手机 | 这里只有精彩视频 | 日韩网站在线免费观看 | 超碰人人舔 | www.99在线观看 | av片子在线观看 | 精品网站999www | 精品视频免费在线 | 九九九九精品九九九九 | 成人一级电影在线观看 | av在线观| 日韩精品中文字幕一区二区 | 欧美日韩国产一区二区三区在线观看 | 日韩理论电影在线观看 | 国产小视频在线观看 | 亚洲精品久久久久www | 久久视频免费 | 在线免费观看成人 | 成年人黄色在线观看 | 波多野结衣在线播放一区 | 伊人网站 | 久久99精品久久只有精品 | 久久黄色免费视频 | 久草免费在线视频 | 色婷婷av国产精品 | 97视频在线免费 | 中文字幕美女免费在线 | 玖玖在线观看视频 | 亚洲天堂网在线视频观看 | 人人涩 | 人人讲下载 | 日韩精品视频在线观看免费 | 国内精品视频久久 | 成人午夜在线观看 | 99亚洲精品在线 | 国产精品久久久久婷婷二区次 | 狠狠色噜噜狠狠狠狠2022 | 久久在线精品 | 精品日韩在线 | av色综合| 天天插综合 | 免费看的黄色录像 | 日本性xxx | 91片在线观看 | 二区三区在线 | 久久99精品久久久久久久久久久久 | 麻豆传媒一区二区 | 日日草夜夜操 | 亚洲视频久久久久 | 欧美激情视频三区 | 国产成人黄色网址 | av一区二区三区在线播放 | 欧美日韩亚洲在线观看 | 日韩成人高清在线 | 成人免费色 | 在线亚洲免费视频 | 91丝袜美腿 | 97在线视 | 一级免费片 | 国产欧美中文字幕 | 亚洲激情视频在线 | 日韩欧三级 | 中文字幕av免费在线观看 | 91精品国产99久久久久 | 在线视频婷婷 | 91精品在线免费 | 视频二区在线 | 91人人射 | 日韩黄色免费电影 | 国产一区二区三区免费观看视频 | 高清中文字幕av | 亚洲成人精品久久久 | 美女网站色免费 | 久久久五月婷婷 | 中文字幕资源网 国产 | 美女网站免费福利视频 | 亚洲色五月| 激情综合色播五月 | 一区二区精品在线 | 人人搞人人爽 | 丁香久久久 | 91综合视频在线观看 | 国产综合在线视频 | 成人免费网站视频 | 久久久久久免费 | 免费黄色小网站 | 国产精品麻豆欧美日韩ww | 国产首页| 成年人天堂com | 国产乱对白刺激视频不卡 | 91精品国产综合久久福利 | 国产精品不卡一区 | 亚洲免费av观看 | 亚洲人成影院在线 | 国产精品视频免费在线观看 | 激情综合中文娱乐网 | 亚洲视频 中文字幕 | 三级黄色网络 | 国产精品久久久久久久午夜片 | 国产字幕在线播放 | 国产96在线视频 | 黄色毛片在线 | 亚洲国产成人精品电影在线观看 | 久草在线观看 | 中文字幕在线播放一区 | 日韩欧美视频一区二区 | 亚洲精品456在线播放第一页 | www国产一区 | 久草精品视频在线观看 | 人人爱爱 | 欧美日韩国产精品一区二区亚洲 | 国产视频美女 | 精品一二区 | 福利一区二区在线 | 日韩高清一区二区 | 亚洲精品在线观看视频 | 狠狠色丁香婷婷综合久久片 | 久久久久亚洲精品男人的天堂 | 欧美极品少妇xbxb性爽爽视频 | 日韩天堂网 | 亚洲精品麻豆视频 | 在线黄色国产电影 | 九九一级片 | 欧美日韩视频免费看 | 国产女人18毛片水真多18精品 | 久久精品a | 91看片在线 | 免费手机黄色网址 | 天天干 夜夜操 | 伊人狠狠 | 九九热有精品 | 亚洲国产精品成人综合 | 久久不卡视频 | www黄色com | 在线视频欧美亚洲 | 国产很黄很色的视频 | 操操操综合 | 99视频精品| 国产高清黄色 | 蜜臀av网址 | 天天色棕合合合合合合 | 99热99re6国产在线播放 | 91在线免费播放视频 | 99久热在线精品视频 | 国产一区二区在线观看视频 | 草久草久 | 日本丶国产丶欧美色综合 | 国产精品精品国产色婷婷 | 黄色www | 久久精品99久久久久久 | 亚洲区精品视频 | 成人在线视频一区 | 日韩欧美高清免费 | 黄色av一区 | 天天综合中文 | 久草av在线播放 | 成人黄色电影在线 | a黄色一级 | av电影一区 | 日韩手机在线观看 | 国产一级片久久 | 免费观看完整版无人区 | av手机版 | 手机看片福利 | 奇米导航 | 日韩免费在线播放 | 在线观看视频免费播放 | 亚洲午夜久久久综合37日本 | 久草免费在线视频观看 | av中文天堂在线 | 日韩有码第一页 | 国产婷婷视频在线 | 欧美日韩高清一区二区 | 天堂在线视频中文网 | 欧美视频在线二区 | 99久久99视频 | 精品免费国产一区二区三区四区 | 激情在线五月天 | 综合久久综合久久 | 在线观看国产亚洲 | 日本婷婷色 | 九九热在线观看视频 | 婷婷视频在线 | 日韩网站在线免费观看 | 久久好看免费视频 | 91天天操 | 国产一级在线观看视频 | 色综合久久天天 | 美女视频网站久久 | 亚洲精品成人免费 | 中文字幕韩在线第一页 | 超碰人人在线 | 一级片免费在线 | 在线 国产 日韩 | 在线观看中文 | 国产精品久久久久一区二区三区共 | 中文字幕av在线电影 | 91免费版成人 | 中文字幕乱在线伦视频中文字幕乱码在线 | 亚洲国产精品久久久久婷婷884 | 日本性高潮视频 | 色开心| 日韩精品五月天 | 99久久影院| 在线播放av网址 | 中文字幕免费在线看 | 天天色天天操综合 | 国产麻豆剧传媒免费观看 | 精久久久久| 麻豆精品传媒视频 | 中文字幕网站 | 亚洲区色 | 免费的国产精品 | 五月婷婷精品 | 热久久国产精品 | 91精品免费在线视频 | 久久精彩免费视频 | 日韩av午夜在线观看 | 亚州日韩中文字幕 | 操处女逼 | 免费在线精品视频 | 成人宗合网 | 国产成人一区在线 | 在线观看亚洲国产精品 | 一区二区三区av在线 | 中文字幕av免费在线观看 | 在线久草视频 | 亚洲国产剧情av | 天天干,夜夜操 | 黄色av一区| 成人毛片一区 | 久草精品在线播放 | 亚洲区色 | 日韩专区av | 国产美女精品 | 日韩av在线一区二区 | 欧美成人基地 | 91精品爽啪蜜夜国产在线播放 | 欧美日韩xx | 日韩在线免费看 | 日韩视频a | 欧美日韩免费一区二区 | 日韩久久激情 | 天天操天天草 | av片在线看 | 大胆欧美gogo免费视频一二区 | 日韩二区三区在线观看 | 在线 视频 一区二区 | www.狠狠色| 久久精品视频观看 | 精品视频免费看 | 91亚洲精品视频 | 国产午夜一区 | av成人免费网站 | 欧美极度另类性三渗透 | 日韩免费一级电影 | 少妇bbbb搡bbbb桶 | 高清在线观看av | 91桃色在线播放 | 狠狠操狠狠干天天操 | 成人av高清在线观看 | 日韩美女免费线视频 | 久久国产色 | 国产一级在线看 | 亚洲人在线视频 | 就操操久久 | 国产在线a | 精品a在线 | 亚洲欧洲美洲av | 最近高清中文字幕在线国语5 | 国产呻吟在线 | www一起操 | 黄色大全视频 | 2019中文最近的2019中文在线 | 日韩xxxxxxxxx| 婷婷色伊人 | 97人人模人人爽人人喊网 | 欧美日韩精品国产 | 狠狠做深爱婷婷综合一区 | 国产精品久久久久久久久久久久久久 | 91看片黄色 | 久久久久免费观看 | 最新av观看 | 亚洲免费av一区二区 | 精品国产1区 | 婷婷中文字幕 | 99视频在线精品国自产拍免费观看 | 国产亚洲人成网站在线观看 | 特级西西人体444是什么意思 | 国产免费嫩草影院 | 国产免费久久精品 | 黄色精品久久 | 一区二区影院 | 国产精品自拍av | 2020天天干天天操 | 一区二区三区四区精品 | 91九色视频导航 | 99热这里有 | 99亚洲国产 | 亚洲激情免费 | 91污在线| 天天操夜夜想 | 在线a人v观看视频 | 日韩av在线免费看 | 日韩3区| 九九激情视频 | 国产成人精品一区二区在线 | aⅴ精品av导航| 日韩最新中文字幕 | 精品毛片一区二区免费看 | 9999在线观看 | 久久久免费观看视频 | 久久综合狠狠 | 亚洲视屏在线播放 | 999精品网| 国产成人精品一区二区三区福利 | 成人欧美一区二区三区在线观看 | 香蕉视频在线观看免费 | 午夜美女av | 免费看黄在线观看 | 欧美精品亚州精品 | 久草在线电影网 | 91禁在线看 | 成人av网站在线观看 | 一本到在线 | 久久在线一区 | 成人久久18免费网站麻豆 | 亚洲精品国偷拍自产在线观看蜜桃 | 日本少妇高清做爰视频 | 日本精品视频网站 | 精品字幕在线 | 美女视频免费精品 | 亚洲精品在线观 | 韩国av免费在线观看 | 亚洲精品456在线播放乱码 | 亚洲韩国一区二区三区 | 黄色在线网站噜噜噜 | 高清av中文在线字幕观看1 | 日韩欧美一区二区在线观看 | 综合久久综合久久 | 国产亚洲在 | 色橹橹欧美在线观看视频高清 | 国产精品手机在线观看 | 91污在线观看 | 国产视频九色蝌蚪 | 久久国产成人午夜av影院宅 | 久久久久免费精品国产小说色大师 | 992tv成人免费看片 | 亚洲视频在线视频 | 中文免费在线观看 | 99综合电影在线视频 | 国产又粗又长又硬免费视频 | 久久香蕉一区 | 精品中文字幕在线观看 | 六月丁香综合网 | 亚洲九九九在线观看 | 亚洲国产97在线精品一区 | 在线成人免费 | 99日精品 | 97视频免费观看2区 亚洲视屏 | 中文字幕在线乱 | 综合五月 | 久久精品国产一区二区电影 | 超碰在线最新网址 | 亚洲精品资源在线观看 | 国产精品美女毛片真酒店 | 最近中文字幕完整高清 | 99久久日韩精品免费热麻豆美女 | 国产一级黄色av | wwwav视频| 悠悠av资源片 | 国产精品完整版 | 成人a视频| 日韩av资源在线观看 | 激情久久久久 | 久久久在线免费观看 | 日韩电影精品 | 久久久久久久久久福利 | 国产精品九九久久99视频 | 国产精品入口麻豆www | 亚洲国产97在线精品一区 | 天天综合网在线观看 | 亚洲综合色丁香婷婷六月图片 | 久操视频在线免费看 | 久久综合九色综合97婷婷女人 | 欧美日韩久久久 | 久久久国产精品久久久 | 国产精品18毛片一区二区 | 久久爽久久爽久久av东京爽 | 伊人久久精品久久亚洲一区 | 亚洲国产欧美一区二区三区丁香婷 | 精品视频123区在线观看 | 免费看黄网站在线 | 日韩欧美一区二区三区在线 | 久久乐九色婷婷综合色狠狠182 | 亚洲不卡在线 | 91久久久久久久 | 美女免费视频观看网站 | 国产精品入口久久 | 美女网站色 | 成人网页在线免费观看 | 在线观看日本韩国电影 | 久久爽久久爽久久av东京爽 | 欧美日韩免费一区 | 香蕉视频亚洲 | 国产专区视频 | 国色天香av| 欧美性色黄大片在线观看 | 国产精品一区二区av影院萌芽 | 超级碰碰碰免费视频 | 日本在线观看一区 | 涩涩资源网 | 欧美极品少妇xbxb性爽爽视频 | av播放在线| 91精品免费 | 欧美福利在线播放 | www.五月婷婷| 91香蕉视频黄色 | 久久久久国产精品视频 | 国产精品成人免费一区久久羞羞 | 日韩在线观看网址 | 国产精品一区电影 | 久久这里只有精品视频99 | 欧美精品日韩 | 在线免费观看羞羞视频 | 99福利片| 国产在线观看av | 青青河边草免费观看 | 亚洲在线精品 | 97精品视频在线 | 国产视频在线观看免费 | 四虎天堂 | 成人国产精品久久久春色 | 99色免费 | 国产精品资源在线观看 | 精品视频免费观看 | 中文字幕av日韩 | 懂色av一区二区在线播放 | 午夜123| 中文字幕在线视频第一页 | 日日干干 | 国产精品久久久免费 | 亚洲综合五月天 | 日韩综合色 | 91精品国产高清 | 夜夜躁狠狠躁日日躁视频黑人 | 亚洲日韩欧美视频 | 99国内精品| 超碰人人99| 在线免费观看国产精品 | 久草精品在线播放 | 片黄色毛片黄色毛片 | 久草在| 久草免费看 | 国产精品久久久久一区二区国产 | 成人a视频片观看免费 | www.五月婷婷 | www.色午夜,com | 亚洲jizzjizz日本少妇 | 麻豆视频大全 | 夜夜爽www|