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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【热修复】Andfix源码分析

發布時間:2025/3/15 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【热修复】Andfix源码分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載請標注來源:http://www.cnblogs.com/charles04/p/8471301.html


?Andfix源碼分析

0、目錄

  • 背景介紹
  • 源碼分析
  • 方案評價
  • 總結與思考
  • 參考文獻
  • 1、背景介紹

    熱修復技術是移動端領域近年非常活躍的一項新技術,通過熱修復技術可以在不發布應用市場版本,在用戶無感知的情況下對線上Bug進行緊急修復。正所謂修復于千里之外,剿滅與無形之中,實乃移動端開發運營中一項必備之尖端技術。其主要的運行原理如下:

    簡而言之,熱修復就是通過一定的技術手段,讓用戶在程序的實際運行操作中,走到修復的Patch邏輯序列,而繞開存在問題的邏輯片段,實現問題的緊急規避。目前實現的技術手段主要有騰訊系的基于ClassLoader的熱修復方案(例如微信的Tinker,qq空間的超級補丁)以及阿里系的基于Method Hook的熱修復方案(例如Andfix,Sophix等)。今天主要介紹的就是阿里巴巴的Andfix。

    2、源碼分析

    如前所述,Andfix是阿里巴巴推出的一款基于Method Hook的熱修復技術,目前Github點贊數5.7K,是一款安全性高,較為穩定,性能比較優異的方法級替換的熱修復技術。代碼實現上條理清晰,架構設計合理,可讀性強,是一個實現上非常優雅的開源框架。下面我們重點介紹下Andfix的源碼及其設計。

    一個經典的開源框架首先要友好的對外暴露接口,這樣才能更便于接入,實現快速啟動。所以,在介紹核心源碼之前,我們首先關注下Andfix的外部接口部分。

    2.1. 初始化部分

    為了盡可能的覆蓋BUG修復的范圍,和其他的熱修復技術一樣,Andfix選擇在APP啟動的時候對熱補丁進行加載,也即Application的OnCreate過程。整體的外部接口調用如下所示:

    1 @Override 2 public void onCreate() { 3 super.onCreate(); 4 // patch的初始化 5 mPatchManager = new PatchManager(this); 6 mPatchManager.init("1.0"); 7 Log.d(TAG, "inited."); 8 9 // 加載緩存中的patch 10 mPatchManager.loadPatch(); 11 Log.d(TAG, "apatch loaded."); 12 13 // 將外部存儲中的patch加載到當前運行的ART中 14 try { 15 // .apatch file path 16 String patchFileString = Environment.getExternalStorageDirectory() 17 .getAbsolutePath() + APATCH_PATH; 18 mPatchManager.addPatch(patchFileString); 19 Log.d(TAG, "apatch:" + patchFileString + " added."); 20 } catch (IOException e) { 21 Log.e(TAG, "", e); 22 } 23 }

    這部分接口非常簡潔,大概分為三步:patch的初始化,patch的緩存加載,patch的外部存儲加載。

    緩存加載是為了加載之前已經從外部存儲載入到緩存(data目錄下)中的patch,外部存儲加載是為了從外部存儲中加載patch到緩存。Andfix的整體外部調用就是上面的幾步,下面我們來看下Andfix的具體實現部分。

    2.2. 核心實現?

    Andfix的具體實現上主要分為三部分:Patch管理部分,Fix管理部分,Native Hook部分,其整體的UML架構圖如下所示:

    //todo 增加整體UML

    ?

    ?

    2.2.1. PatchManager

    整體的初始化函數的源碼如下:

    1 /** 2 * Patch的初始化工作 3 * @param appVersion App的版本號 4 */ 5 public void init(String appVersion) { 6 if (!mPatchDir.exists() && !mPatchDir.mkdirs()) {// make directory fail 7 Log.e(TAG, "patch dir create error."); 8 return; 9 } else if (!mPatchDir.isDirectory()) {// not directory 10 mPatchDir.delete(); 11 return; 12 } 13 SharedPreferences sp = mContext.getSharedPreferences(SP_NAME, 14 Context.MODE_PRIVATE); 15 String ver = sp.getString(SP_VERSION, null); 16 if (ver == null || !ver.equalsIgnoreCase(appVersion)) { 17 cleanPatch(); 18 sp.edit().putString(SP_VERSION, appVersion).commit(); 19 } else { 20 initPatchs(); 21 } 22 }

    其中mPatchDir表示data私有目錄下存放Patch文件的文件夾。首先是關于mPatchDir的簡單文件夾操作,在mPatchDir文件夾初始化完成之后,緊接著比較當前的APP版本和SharedPreferences中保存的Patch對應的APP版本,兩者如果不相等的話,會直接清除掉本地緩存的Patch文件和對應Patch相關的數據。這是因為熱補丁是跟APP強相關的,Patch只能精確的修復對應版本的Bug。清除的源碼如下所示:

    1 private void cleanPatch() { 2 File[] files = mPatchDir.listFiles(); 3 for (File file : files) { 4 mAndFixManager.removeOptFile(file); 5 if (!FileUtil.deleteFile(file)) { 6 Log.e(TAG, file.getName() + " delete error."); 7 } 8 } 9 }

    在版本號匹配之后,緊接著是Patch文件的初始化部分(initPatchs()),其源碼如下:

    1 private void initPatchs() { 2 File[] files = mPatchDir.listFiles(); 3 for (File file : files) { 4 addPatch(file); 5 } 6 }

    在上述函數中,ART會遍歷Patch文件,并將Patch文件通過addPatch方法添加到內存中。

    addPatch方法有兩種多態實現,分別如下:

    • private Patch addPatch(File file)
    • public void addPatch(String path) throws IOException

    其中第一個方法是從Patch文件中獲取Patch對象,具體的源碼如下:

    1 /** 2 * add patch file 3 * 4 * @param file 5 * @return patch 6 */ 7 private Patch addPatch(File file) { 8 Patch patch = null; 9 if (file.getName().endsWith(SUFFIX)) { 10 try { 11 patch = new Patch(file); 12 mPatchs.add(patch); 13 } catch (IOException e) { 14 Log.e(TAG, "addPatch", e); 15 } 16 } 17 return patch; 18 }

    此方法中把Patch文件夾映射為Patch對象,然后將Patch對象統一存放在mPatchs數據集里面。

    第二個方法是從本地路徑中獲取Patch文件,然后從Patch文件中解析出Patch對象,之后觸發Patch的加載過程,具體源碼如下:?

    1 public void addPatch(String path) throws IOException { 2 File src = new File(path); 3 File dest = new File(mPatchDir, src.getName()); 4 if(!src.exists()){ 5 throw new FileNotFoundException(path); 6 } 7 if (dest.exists()) { 8 Log.d(TAG, "patch [" + path + "] has be loaded."); 9 return; 10 } 11 FileUtil.copyFile(src, dest);// copy to patch's directory 12 Patch patch = addPatch(dest); 13 if (patch != null) { 14 loadPatch(patch); 15 } 16 }

    獲取完Patch的對象列表之后,接下來的內容就是加載Patch中的內容,并根據Patch中的內容進行Hotfix。此過程是通過Patchmanager類中的loadPatch方法實現的。loadPatch方法一共有三個多態,分別如下:

    • public void loadPatch(String patchName, ClassLoader classLoader)
    • public void loadPatch()
    • private void loadPatch(Patch patch)

    三個方法入參不同,會通過不同的ClassLoader加載不同的Patch文件,已第三個方法為例,該函數中對數據進行封裝之后,最終會循環調用AndfixManager中的fix方法,具體的源碼如下:

    1 private void loadPatch(Patch patch) { 2 Set<String> patchNames = patch.getPatchNames(); 3 ClassLoader cl; 4 List<String> classes; 5 for (String patchName : patchNames) { 6 if (mLoaders.containsKey("*")) { 7 cl = mContext.getClassLoader(); 8 } else { 9 cl = mLoaders.get(patchName); 10 } 11 if (cl != null) { 12 classes = patch.getClasses(patchName); 13 mAndFixManager.fix(patch.getFile(), cl, classes); 14 } 15 } 16 }

    PatchManager的源碼基本就如上所述,主要是對Patch的管理與加載過程,代碼簡潔易懂,可讀性強。

    2.2.2.?AndFixManager

    接下來,我們重點分析下AndfixManager類,該類中主要介紹Andfix的BugFix的核心流程。通過之前的PatchManager類的源碼分析可知,AndfixManager的關鍵入口函數為fix方法。其源碼如下所示:

    1 public synchronized void fix(File file, ClassLoader classLoader, List<String> classes) { 2 if (!mSupport) { 3 return; 4 } 5 6 if (!mSecurityChecker.verifyApk(file)) {// security check fail 7 return; 8 } 9 10 try { 11 File optfile = new File(mOptDir, file.getName()); 12 boolean saveFingerprint = true; 13 if (optfile.exists()) { 14 // need to verify fingerprint when the optimize file exist, 15 // prevent someone attack on jailbreak device with 16 // Vulnerability-Parasyte. 17 // btw:exaggerated android Vulnerability-Parasyte 18 // http://secauo.com/Exaggerated-Android-Vulnerability-Parasyte.html 19 if (mSecurityChecker.verifyOpt(optfile)) { 20 saveFingerprint = false; 21 } else if (!optfile.delete()) { 22 return; 23 } 24 } 25 26 final DexFile dexFile = DexFile.loadDex(file.getAbsolutePath(), 27 optfile.getAbsolutePath(), Context.MODE_PRIVATE); 28 29 if (saveFingerprint) { 30 mSecurityChecker.saveOptSig(optfile); 31 } 32 33 ClassLoader patchClassLoader = new ClassLoader(classLoader) { 34 @Override 35 protected Class<?> findClass(String className) 36 throws ClassNotFoundException { 37 Class<?> clazz = dexFile.loadClass(className, this); 38 if (clazz == null 39 && className.startsWith("com.alipay.euler.andfix")) { 40 return Class.forName(className);// annotation’s class 41 // not found 42 } 43 if (clazz == null) { 44 throw new ClassNotFoundException(className); 45 } 46 return clazz; 47 } 48 }; 49 Enumeration<String> entrys = dexFile.entries(); 50 Class<?> clazz = null; 51 while (entrys.hasMoreElements()) { 52 String entry = entrys.nextElement(); 53 if (classes != null && !classes.contains(entry)) { 54 continue;// skip, not need fix 55 } 56 clazz = dexFile.loadClass(entry, patchClassLoader); 57 if (clazz != null) { 58 fixClass(clazz, classLoader); 59 } 60 } 61 } catch (IOException e) { 62 Log.e(TAG, "pacth", e); 63 } 64 }

    在此方法中,主要包括安全校驗,bugFix兩部分,具體如下;

    (1)安全校驗

    Andfix會對傳進來的Patch文件進行安全校驗,包括準確性校驗和完整性校驗。

    安全校驗的具體實現在SecurityChecker類中,其結構體如下:

    //todo 補充SecurityChecker UML

    其中準確性校驗(簽名校驗)的具體實現如下:

    1 /** 2 * @param path 3 * Apk file 4 * @return true if verify apk success 5 */ 6 public boolean verifyApk(File path) { 7 if (mDebuggable) { 8 Log.d(TAG, "mDebuggable = true"); 9 return true; 10 } 11 12 JarFile jarFile = null; 13 try { 14 jarFile = new JarFile(path); 15 16 JarEntry jarEntry = jarFile.getJarEntry(CLASSES_DEX); 17 if (null == jarEntry) {// no code 18 return false; 19 } 20 loadDigestes(jarFile, jarEntry); 21 Certificate[] certs = jarEntry.getCertificates(); 22 if (certs == null) { 23 return false; 24 } 25 return check(path, certs); 26 } catch (IOException e) { 27 Log.e(TAG, path.getAbsolutePath(), e); 28 return false; 29 } finally { 30 try { 31 if (jarFile != null) { 32 jarFile.close(); 33 } 34 } catch (IOException e) { 35 Log.e(TAG, path.getAbsolutePath(), e); 36 } 37 } 38 } 39 40 // verify the signature of the Apk 41 private boolean check(File path, Certificate[] certs) { 42 if (certs.length > 0) { 43 for (int i = certs.length - 1; i >= 0; i--) { 44 try { 45 certs[i].verify(mPublicKey); 46 return true; 47 } catch (Exception e) { 48 Log.e(TAG, path.getAbsolutePath(), e); 49 } 50 } 51 } 52 return false; 53 }

    上述過程對APK進行證書簽名校驗,符合簽名的APK為合法的APK,否則為非法的APK,中斷熱修復過程。

    Andfix的過程不僅進行簽名校驗,還進行完整性校驗。完整性校驗是為了防止出現在進行patch下載的過程中下載不完整,導致修復出現異常的情況。完整性校驗是通過校驗MD4來實現的,具體如下;

    1 /** 2 * @param path 3 * Dex file 4 * @return true if verify fingerprint success 5 */ 6 public boolean verifyOpt(File file) { 7 String fingerprint = getFileMD5(file); 8 String saved = getFingerprint(file.getName()); 9 if (fingerprint != null && TextUtils.equals(fingerprint, saved)) { 10 return true; 11 } 12 return false; 13 }?

    ?(2)Bug Fix

    Andfix熱修復的核心實現中,分為兩個步驟:

  • 找到需要修復的Class;
  • 替換需要進行修復的Method。
  • 第一步的具體實現如下:

    1 /** 2 * fix class 3 * 4 * @param clazz 5 * class 6 */ 7 private void fixClass(Class<?> clazz, ClassLoader classLoader) { 8 Method[] methods = clazz.getDeclaredMethods(); 9 MethodReplace methodReplace; 10 String clz; 11 String meth; 12 for (Method method : methods) { 13 methodReplace = method.getAnnotation(MethodReplace.class); 14 if (methodReplace == null) 15 continue; 16 clz = methodReplace.clazz(); 17 meth = methodReplace.method(); 18 if (!isEmpty(clz) && !isEmpty(meth)) { 19 replaceMethod(classLoader, clz, meth, method); 20 } 21 } 22 }

    第二部的具體實現如下:

    1 /** 2 * replace method 3 * 4 * @param classLoader classloader 5 * @param clz class 6 * @param meth name of target method 7 * @param method source method 8 */ 9 private void replaceMethod(ClassLoader classLoader, String clz, 10 String meth, Method method) { 11 try { 12 String key = clz + "@" + classLoader.toString(); 13 Class<?> clazz = mFixedClass.get(key); 14 if (clazz == null) {// class not load 15 Class<?> clzz = classLoader.loadClass(clz); 16 // initialize target class 17 clazz = AndFix.initTargetClass(clzz); 18 } 19 if (clazz != null) {// initialize class OK 20 mFixedClass.put(key, clazz); 21 Method src = clazz.getDeclaredMethod(meth, method.getParameterTypes()); 22 AndFix.addReplaceMethod(src, method); 23 } 24 } catch (Exception e) { 25 Log.e(TAG, "replaceMethod", e); 26 } 27 }?

    其中核心函數AndFix.addReplaceMethod(src, method)的具體實現如下:

    1 /** 2 * replace method's body 3 * 4 * @param src 5 * source method 6 * @param dest 7 * target method 8 * 9 */ 10 public static void addReplaceMethod(Method src, Method dest) { 11 try { 12 replaceMethod(src, dest); 13 initFields(dest.getDeclaringClass()); 14 } catch (Throwable e) { 15 Log.e(TAG, "addReplaceMethod", e); 16 } 17 }?

    可以觀察到,Andfix中函數的替換是通過Native方法replaceMethod(Method dest, Method src)實現的。從JNI中找到這部分的源碼如下:

    1 static void replaceMethod(JNIEnv* env, jclass clazz, jobject src, jobject dest) { 2 if (isArt) { 3 art_replaceMethod(env, src, dest); 4 } else { 5 dalvik_replaceMethod(env, src, dest); 6 } 7 }?

    Native層面進行Method Hook的原理是將源方法中的各個屬性替換為目標方法的屬性。由于不同虛擬機,甚至同樣虛擬機下不同API對應的方法結構體的不同,在進行Method Hook的過程中,對不同情況,要適配不同的方法。

    不同的Android版本,對于的虛擬機不同:Android 4.4以下用的是Dalvik虛擬機,而Android 4.4以上用的是ART(Android Running Time)虛擬機。如上面代碼實現,在進行熱修復的過程中,ART虛擬機下調用的是art_replaceMethod(env, src, dest)方法;Dalvik虛擬機調用的是dalvik_replaceMethod(env, src, dest)方法。?

    而對于ART虛擬機,不同Android API的系統,可能會對應不同的方法結構體(ArtMethod),所以會有對應的不同的適配實現,其代碼如下:

    1 extern void __attribute__ ((visibility ("hidden"))) art_replaceMethod( 2 JNIEnv* env, jobject src, jobject dest) { 3 if (apilevel > 23) { 4 replace_7_0(env, src, dest); 5 } else if (apilevel > 22) { 6 replace_6_0(env, src, dest); 7 } else if (apilevel > 21) { 8 replace_5_1(env, src, dest); 9 } else if (apilevel > 19) { 10 replace_5_0(env, src, dest); 11 }else{ 12 replace_4_4(env, src, dest); 13 } 14 }

    不同API的實現類如下:

    所以說Andfix可以兼容Android2.3到7.0版本,對于超過Android7.0的版本,如果ArtMethod相比較7.0有較大的改變,就可能存在兼容性問題,這是后話。

    以7.0版本為例,Andfix中Method hook的屬性替換的具體實現如下:

    1 void replace_7_0(JNIEnv* env, jobject src, jobject dest) { 2 art::mirror::ArtMethod* smeth = (art::mirror::ArtMethod*) env->FromReflectedMethod(src); 3 4 art::mirror::ArtMethod* dmeth = 5 (art::mirror::ArtMethod*) env->FromReflectedMethod(dest); 6 7 // reinterpret_cast<art::mirror::Class*>(smeth->declaring_class_)->class_loader_ = 8 // reinterpret_cast<art::mirror::Class*>(dmeth->declaring_class_)->class_loader_; //for plugin classloader 9 reinterpret_cast<art::mirror::Class*>(dmeth->declaring_class_)->clinit_thread_id_ = 10 reinterpret_cast<art::mirror::Class*>(smeth->declaring_class_)->clinit_thread_id_; 11 reinterpret_cast<art::mirror::Class*>(dmeth->declaring_class_)->status_ = 12 reinterpret_cast<art::mirror::Class*>(smeth->declaring_class_)->status_ -1; 13 //for reflection invoke 14 reinterpret_cast<art::mirror::Class*>(dmeth->declaring_class_)->super_class_ = 0; 15 16 smeth->declaring_class_ = dmeth->declaring_class_; 17 smeth->access_flags_ = dmeth->access_flags_ | 0x0001; 18 smeth->dex_code_item_offset_ = dmeth->dex_code_item_offset_; 19 smeth->dex_method_index_ = dmeth->dex_method_index_; 20 smeth->method_index_ = dmeth->method_index_; 21 smeth->hotness_count_ = dmeth->hotness_count_; 22 23 smeth->ptr_sized_fields_.dex_cache_resolved_methods_ = 24 dmeth->ptr_sized_fields_.dex_cache_resolved_methods_; 25 smeth->ptr_sized_fields_.dex_cache_resolved_types_ = 26 dmeth->ptr_sized_fields_.dex_cache_resolved_types_; 27 28 smeth->ptr_sized_fields_.entry_point_from_jni_ = 29 dmeth->ptr_sized_fields_.entry_point_from_jni_; 30 smeth->ptr_sized_fields_.entry_point_from_quick_compiled_code_ = 31 dmeth->ptr_sized_fields_.entry_point_from_quick_compiled_code_; 32 33 LOGD("replace_7_0: %d , %d", 34 smeth->ptr_sized_fields_.entry_point_from_quick_compiled_code_, 35 dmeth->ptr_sized_fields_.entry_point_from_quick_compiled_code_); 36 37 }?

    首先調用ART的方法獲取Andfix中源方法(smeth)和目標方法(dmeth)的句柄,然后將源方法的各個屬性(例如declaring_class_:所屬類,access_flags:訪問權限,method_index_:代碼執行地址等)替換為目標方法的各個屬性,從而實現方法層面的Hook,實現Hotfix。

    3.方案評價

    3.1.優點

    (1)即時生效

    (2)基于Method Hook的實現,對原始APK侵入較小,性能影響幾乎忽略不計

    3.2.缺點

    (1)只能用于方法級的修復

    Andfix最為明顯的缺點是只能實現方法級別的修復。而無法實現xml,資源文件級別的修復,也無法增加或者刪除class類,這一點從原理分析上能夠很明顯的看到。但是,熱修復的精髓就是在不重新發布版本,不影響性能和體驗的前提下,實現對線上緊急Bug的靈活修復。在大多數情況下,通過方法級別的修復就能夠達到熱修復的目的,Andfix做到了小而精,改動小,影響小但性能優異,效果穩定,個人認為在一定程度上已經滿足了熱修復的需求。與Andfix形成鮮明對比的是微信推出的Tinker,Tinker追求的是廣而博,能夠實現類,xml,資源文件,so庫等的修復,甚至可以新增export屬性為false的Activity類,從某種意義上講,甚至可以小型功能的發布,有點插件化的味道。

    這里不過多評價兩種插件化框架的優劣,和談戀愛一樣,沒有最好的,只有最合適的,選擇適合自己項目的熱修復框架,然后用好,就可以了。

    (2)兼容性問題

    由于Java方法對應的底層數據結構體的差異,在進行native層面的Method Hook過程中,不同虛擬機之間要使用不同的方法,甚至在ART架構中,不同的API的Android版本間也可能要使用不同的適配方法。

    目前Andfix在實現的時候,根據AOSP開源代碼中不同API版本對ArtMethod的定義,將運行的Java Method強行地轉換為art::mirror::ArtMethod,但是由于Android源碼是公開的,在實際的設備上,不同的手機廠商可能會對ArtMethod做個性化修改,這樣就有可能會導致基于開源標準代碼實現的Method Hook無法兼容有些設備的情況。

    為了解決Andfix的兼容性問題,阿里巴巴隨后推出了Andfix的改進版熱修復方案——Sophix。Sophix與Andfix的區別在于,在進行Method Hook的時候,不再進行ArtMethod屬性的替換,而是直接將ArtMethod作為一個整體進行替換, 其Method Hook的核心實現如下:

    • memcpy(dmeth, smeth, sizeof(ArtMethod));

    Sophix通過進行整體方法體的替換,完美的解決了Andfix中的兼容性問題,這樣,不僅在不能的廠商的設備上可以達到兼容,而且對于后續發布的Android版本也能夠做到向后兼容,保障了熱修復方案的健壯性。

    4.總結與思考

    本文對Andfix的原理進行了分析介紹,并對Andfix客戶端的源碼實現進行了簡要分析,其中重點介紹了客戶端在獲取Patch后進行Class匹配與Method替換的過程。

    初次此外,在開發過程中,有幾個技術細節也有較大的可挖掘性,具體如下:

    (1)Andfix中熱修復Patch的生成原理;

    (2)Patch的下載流程(推薦自己搭建服務器框架,通過okhttp實現下載流程),更新,版本管理;

    (3)MultiDex下的Andfix;

    (4)ClassLoader的內核原理;

    (5)Android Running Time與Dalvik;

    (6)其他同類型的熱修復框架,例如騰訊微信的Tinker,美團的Robust,餓了么的MiGo,大眾點評的Nuwa等。

    5.參考文獻

    (1)https://github.com/alibaba/AndFix (2)http://blog.csdn.net/weelyy/article/details/78906537 (3)https://www.jianshu.com/p/633019c4970d (4)http://blog.csdn.net/lixin88/article/details/72190240 (5)https://www.cnblogs.com/soaringEveryday/p/5338214.html

    轉載于:https://www.cnblogs.com/charles04/p/8471301.html

    總結

    以上是生活随笔為你收集整理的【热修复】Andfix源码分析的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    国产精成人品免费观看 | 亚洲.www| 亚洲色图美腿丝袜 | 国产黄色免费观看 | 精品亚洲一区二区 | 日韩精品视频一二三 | 91视频麻豆视频 | 亚洲成人免费 | 国产一二三四在线观看视频 | 伊人久久国产 | 欧美视频www | 可以免费观看的av片 | 日韩精品在线看 | 欧美性做爰猛烈叫床潮 | 免费看三级 | 久章草在线观看 | 欧美成人精品在线 | 国产精品1区2区3区在线观看 | 日韩精品最新在线观看 | 99人久久精品视频最新地址 | 日韩精品在线视频 | 日韩xxx视频 | 成人一级在线观看 | 国产精品美女久久久免费 | www最近高清中文国语在线观看 | 国产免费看 | 日韩精品免费一区二区在线观看 | 久久久久久久久久久久久久免费看 | 精品国产成人av | 首页中文字幕 | 在线视频手机国产 | 免费在线黄色av | 91黄色在线看 | 日韩性网站| 六月丁香婷婷久久 | 最近日韩中文字幕中文 | 日日躁天天躁 | 久久99视频免费观看 | 人人爽人人爽人人 | 国产不卡精品视频 | 97色国产 | 国产自产在线视频 | 日韩免费在线观看视频 | 丁香婷婷激情 | 国产精品久久久久永久免费 | 久久综合婷婷 | 国产a国产a国产a | 99亚洲国产 | 手机看片中文字幕 | 国产精品一区在线观看 | 免费黄在线看 | 这里只有精品视频在线观看 | 香蕉97视频观看在线观看 | 精品久久久久一区二区国产 | 超碰97久久| 69久久久 | 国产成人三级在线观看 | 久久男人中文字幕资源站 | 国产区在线视频 | a'aaa级片在线观看 | 亚洲美女精品视频 | 亚洲日本在线视频观看 | www.五月婷婷.com| 国产成人三级 | 天天干天天操av | 日韩婷婷 | 精品亚洲视频在线 | 亚洲成人精品av | 波多野结衣精品 | 中文字幕电影一区 | 狠狠狠狠狠狠狠狠干 | 欧美va天堂va视频va在线 | 成人在线播放网站 | 狠狠躁18三区二区一区ai明星 | 蜜臀久久99精品久久久酒店新书 | 欧美激情一区不卡 | 人人插人人费 | 最近中文字幕 | 久久人人爽 | 欧美在线观看小视频 | 男女视频久久久 | 激情五月看片 | 亚洲综合爱 | 日韩精品亚洲专区在线观看 | 综合久久久久久 | 在线小视频你懂的 | 五月天亚洲综合小说网 | 久久刺激视频 | 欧美乱大交 | 极品嫩模被强到高潮呻吟91 | 久久夜色精品国产欧美乱 | 91成人在线看 | 区一区二区三区中文字幕 | 国产精品国产三级在线专区 | 国产v视频 | 黄色精品久久久 | 麻豆果冻剧传媒在线播放 | 天天射天天干天天操 | 99精品国产99久久久久久福利 | 一区二区av| 国产美女精品视频 | 中文字幕在线观看视频网站 | 久久精品这里都是精品 | 黄色成人av | 99精品久久久久久久 | 国产裸体永久免费视频网站 | 在线观看免费国产小视频 | 天天干,狠狠干 | 在线观看黄网站 | av在线影视| 国产福利av在线 | 探花系列在线 | 婷婷伊人综合亚洲综合网 | 免费视频成人 | av黄色成人 | 亚洲国产中文字幕在线观看 | 国产精品不卡 | 日韩在线不卡视频 | av888.com| 亚洲福利精品 | 一区二区三区四区精品视频 | 天天射天天添 | 91麻豆免费视频 | 国产麻豆果冻传媒在线观看 | 在线视频日韩一区 | 伊人五月天.com | 亚洲精品2区 | 热久久最新地址 | 黄色一级大片在线免费看国产一 | 99精品在线免费视频 | 99精品国产一区二区三区麻豆 | 91av色| 国产小视频在线观看 | 久久九精品| 人人干人人做 | 日韩一级精品 | 免费看国产a | 精品国产一区二区三区久久久蜜月 | 亚洲91中文字幕无线码三区 | 久久精品视频网站 | 久久精品欧美日韩精品 | 欧美日韩国产综合网 | 开心婷婷色 | 亚洲理论在线观看 | 成人午夜在线观看 | 久久精品站 | 日本久久久久久久久久 | 国产精品人人做人人爽人人添 | 久久久高清视频 | 亚洲精品资源在线 | 久久在线视频在线 | 一区在线播放 | 亚洲综合在线视频 | 国产精品一区二区在线免费观看 | 日韩a在线观看 | 999久久 | 91精品久久久久久综合乱菊 | 9在线观看免费高清完整版在线观看明 | 四虎伊人 | 97超碰在 | 欧美亚洲成人xxx | 丝袜av一区 | 国产高清黄 | 成人免费视频a | 国产精国产精品 | 人人爽人人做 | 免费婷婷 | 日韩在线电影一区二区 | 成人a免费看 | 色综合在| 日韩天堂网| 欧美日韩亚洲一 | 免费看麻豆| 久久久久国产精品厨房 | 国产精品免费在线观看视频 | 国产精品免费不卡 | 国内精品视频一区二区三区八戒 | 天天射综合网站 | 久久综合狠狠综合久久综合88 | 国产精品 国产精品 | 天天做夜夜做 | 99久久精品免费看国产免费软件 | 亚洲综合在线五月 | 免费视频色 | 欧美精品v国产精品v日韩精品 | 国产xvideos免费视频播放 | 免费国产视频 | 亚洲一区二区精品 | 丰满少妇对白在线偷拍 | 久久综合丁香 | 亚洲午夜精品久久久久久久久 | 伊人超碰在线 | 一区二区三区四区精品视频 | 欧美激情视频一二三区 | 成人91在线观看 | 久久久黄色免费网站 | 色视频在线免费观看 | 日日日干| 欧美性网站 | 日韩中文三级 | 欧美精品久久人人躁人人爽 | av成人在线看 | 美女一二三区 | 黄色亚洲精品 | av看片在线| 亚洲高清在线观看视频 | 88av网站| 日日干夜夜爱 | 久久视频热 | 丝袜足交在线 | 久在线观看 | 一区二区视频播放 | 欧美性生活小视频 | 激情丁香5月 | 国产手机av在线 | 97人人模人人爽人人喊中文字 | 欧美日韩高清在线观看 | 婷婷视频在线播放 | 成人高清在线观看 | 国产成人精品日本亚洲999 | 黄色av成人在线 | 国产一级三级 | 五月天激情综合 | 黄色毛片网站在线观看 | 国产精品免费在线播放 | 97福利 | 人人爽夜夜爽 | 国产亚洲久久 | 五月婷婷中文字幕 | 又色又爽的网站 | 久久一久久| 中文字幕视频在线播放 | 九九热在线观看视频 | 蜜桃视频成人在线观看 | 亚洲精品午夜aaa久久久 | 狠狠做六月爱婷婷综合aⅴ 日本高清免费中文字幕 | 日韩电影在线看 | 在线观看第一页 | 国产色网 | 综合色婷婷 | 国产二区av| 亚洲精品66 | 国产最新视频在线观看 | www蜜桃视频 | 国产精品自在线拍国产 | 色婷婷综合视频在线观看 | 人人看人人做人人澡 | 久久成熟 | 国产高清视频在线播放一区 | 免费a级毛片在线看 | 亚洲干 | 2022中文字幕在线观看 | a视频在线| 超碰免费成人 | 成人黄色电影免费观看 | 欧美日韩国产二区三区 | 国产在线观看91 | 91麻豆精品国产91久久久久久 | 欧美黄色软件 | 中文字幕在线播放第一页 | 日韩精品电影在线播放 | 少妇bbw揉bbb欧美 | 最新日韩视频 | 精品999 | 久草剧场 | 亚洲精品久久久久中文字幕m男 | 精品在线视频一区 | 91精品国产91热久久久做人人 | 九九综合九九综合 | 国产成人免费精品 | 国产激情电影综合在线看 | 国产精品高清一区二区三区 | 国产成人精品一区二区在线观看 | 韩日精品中文字幕 | 六月丁香婷婷网 | 欧美日韩在线播放一区 | 亚洲三级在线免费观看 | 色网站中文字幕 | 国产中年夫妇高潮精品视频 | 超碰99人人 | 日日草夜夜操 | 就要干b | 99精彩视频在线观看免费 | 97视频亚洲 | 一区二区三区日韩在线观看 | 91丨精品丨蝌蚪丨白丝jk | 午夜精品福利影院 | 中文字幕在线观看第一区 | 一区二区电影网 | 国产在线 一区二区三区 | 久草在在线 | 91免费视频网站在线观看 | 奇米影视8888在线观看大全免费 | 一区二区视频欧美 | 欧美日本不卡视频 | 久久99在线视频 | 美女视频黄免费网站 | 97av超碰| 国产精品一区二区三区久久 | 91免费看黄 | 亚洲在线视频网站 | 99久e精品热线免费 99国产精品久久久久久久久久 | 一区 二区电影免费在线观看 | 99成人在线视频 | 久久精品高清 | 丝袜一区在线 | 天天干天天操人体 | 永久免费精品视频网站 | 中文字幕在线观看免费高清电影 | 麻豆成人精品 | 在线天堂8√ | 日日夜夜精品免费 | 在线观看国产日韩 | 国产综合婷婷 | 天天av天天 | 一区二区三区电影 | 国产精品久久久久久久久久免费 | 日本中出在线观看 | 日本公妇在线观看 | 国产馆在线播放 | 欧美福利网站 | 欧美一二区在线 | 日韩av免费在线电影 | 中文在线免费看视频 | 国产精品免费一区二区 | 久久精品国产免费看久久精品 | 国产 一区二区三区 在线 | 96国产精品 | 最近能播放的中文字幕 | 国产精品一区二区 91 | 91麻豆福利 | 亚洲日本va中文字幕 | 男女全黄一级一级高潮免费看 | 久久久高清视频 | 亚洲成色777777在线观看影院 | 国产69精品久久99的直播节目 | 国产精品一区二区 91 | 97成人超碰 | 久久精品国产一区二区电影 | 免费看高清毛片 | 久久av一区二区三区亚洲 | 亚洲视频网站在线观看 | 1区2区视频 | 99久久精品免费看国产免费软件 | 毛片在线播放网址 | 97视频中文字幕 | 国产999久久久 | 国产精品69久久久久 | 毛片二区 | 狠狠干成人 | 日本中出在线观看 | 国产午夜剧场 | 精品国产伦一区二区三区 | 国产一区二区网址 | 免费网站看av片 | 亚洲热久久 | 日本高清免费中文字幕 | 精品久久福利 | 免费av电影网站 | 日韩av午夜 | 国产视频一区二区三区在线 | 成人免费毛片aaaaaa片 | 日本久久免费电影 | 久久a久久| 青青草国产在线 | 天天色中文| 欧美性一级观看 | 久久久国产精品人人片99精片欧美一 | 久久超碰免费 | 日日干日日 | 久久免费一 | 在线国产能看的 | 97看片网 | 狠狠干狠狠久久 | 欧美一区二区三区不卡 | 国产精品福利在线观看 | 国产精品亚洲片在线播放 | 中文av日韩 | 中文字幕一区二区在线播放 | 992tv在线| 久久五月婷婷丁香 | 国产精品美女久久久久久2018 | 国产免费一区二区三区最新 | 日日干 天天干 | 天天干天天射天天插 | 日韩在线观看网站 | 久草在线视频精品 | 中字幕视频在线永久在线观看免费 | 成人免费观看在线视频 | 日韩精品中文字幕在线播放 | 国产精品精品久久久 | 欧美日韩aaaa | 国产日韩欧美中文 | 国产精品2020| 国产一级二级在线播放 | 国产91精品看黄网站在线观看动漫 | 人人爽人人av| 色欧美成人精品a∨在线观看 | 国产伦精品一区二区三区高清 | 国产精品专区h在线观看 | 精品人妖videos欧美人妖 | 欧美日韩午夜 | 日韩啪视频 | 草久久影院 | 国产超碰在线观看 | 人人爽影院 | 99精品久久精品一区二区 | 国产成人亚洲在线观看 | 欧美日bb| 天天色天 | 国产精品一区二区三区视频免费 | 99久久婷婷国产精品综合 | 色噜噜日韩精品欧美一区二区 | 久久99偷拍视频 | av中文天堂在线 | 探花视频在线观看免费版 | 久草在线综合 | 黄色免费网站 | 69国产精品成人在线播放 | 亚洲精品午夜aaa久久久 | 久久久久久久久免费 | 丁香婷五月 | 丁香六月婷 | 成人a视频片观看免费 | 2021国产精品 | 久草久草在线观看 | 成人精品国产免费网站 | 欧美最新大片在线看 | 激情av一区二区 | 三级视频片 | 久久五月情影视 | 亚洲国产一区av | 国产精品一区久久久久 | 久久久久福利视频 | 久久久久成 | 国产一区 在线播放 | 久草在线免费看视频 | 午夜美女福利直播 | 久久er99热精品一区二区 | 91色在线观看视频 | 国产精品九九久久久久久久 | 日本在线观看中文字幕 | 婷婷资源站 | 2019国产精品| 91精品在线免费观看 | 麻豆视频在线看 | 色婷婷啪啪免费在线电影观看 | 天天综合狠狠精品 | 欧美成人高清 | 黄色av电影一级片 | 国产福利小视频在线 | 成人永久视频 | 丰满少妇在线 | 日韩精品无 | 超碰在97 | 国产一级在线视频 | 免费视频一二三 | 在线观看视频一区二区三区 | 精品久久久久_ | 久久国产精品99国产精 | 精品v亚洲v欧美v高清v | 伊人狠狠色丁香婷婷综合 | 黄色特一级 | 一级淫片a | 久久麻豆精品 | 免费三级网 | www免费看 | 国产精品video爽爽爽爽 | a视频在线播放 | 国产一区二区久久久 | 成人午夜影院在线观看 | 日日干干夜夜 | 激情五月av | 国产一区二区视频在线播放 | 欧美在线视频不卡 | 激情五月婷婷网 | 超碰在线公开免费 | 永久免费的啪啪网站免费观看浪潮 | 国产午夜三级一区二区三桃花影视 | 97视频一区 | 日韩精品在线视频 | 久久久国产一区二区三区四区小说 | 中文永久字幕 | 黄色成人av在线 | 久久久久久久久久福利 | 国产精品毛片久久久久久久久久99999999 | 天天插天天爱 | 91大神一区二区三区 | 中文字幕在 | 久久天天操 | 丁香国产视频 | 久久国产片| 夜夜嗨av色一区二区不卡 | 久久综合狠狠综合久久狠狠色综合 | 久久性生活片 | 国产一级性生活 | 亚洲欧美视频 | 国产人在线成免费视频 | 国产原创在线视频 | .国产精品成人自产拍在线观看6 | 国产精品资源在线观看 | 国产精品破处视频 | 亚洲欧洲精品一区二区 | 六月色婷| 精品久久久久一区二区国产 | 久久久久久久久久久免费视频 | 91精品视频一区二区三区 | 日韩大陆欧美高清视频区 | 欧美色黄 | 在线国产黄色 | 欧美日韩在线观看视频 | 国产精品久久毛片 | 狠狠搞,com | 免费91在线 | 日日操天天操夜夜操 | 日本在线观看中文字幕无线观看 | 欧美一区二区在线看 | 中文字幕观看av | 国产又黄又硬又爽 | 日韩毛片在线免费观看 | 天天透天天插 | 亚洲理论片 | 国产精品一区二区av影院萌芽 | 亚洲免费在线视频 | 又黄又爽又无遮挡免费的网站 | av高清一区 | 四虎影视成人永久免费观看亚洲欧美 | 精品99免费 | 色婷婷综合视频在线观看 | 国产福利一区二区在线 | 蜜臀av性久久久久蜜臀aⅴ四虎 | 日韩精品观看 | 91大神精品视频在线观看 | 国内久久 | 黄色免费国产 | 久草观看 | 91超碰在线播放 | 久草在| 日韩在线视频一区 | 国产 精品 资源 | 久久手机视频 | 国产淫a | 欧美精品九九99久久 | 在线视频 国产 日韩 | 久久久午夜影院 | 国产黄在线观看 | 成人性生交大片免费看中文网站 | 一级一片免费视频 | 99精品热视频只有精品10 | 99在线视频观看 | 欧美做受高潮1 | 国产精品99爱 | 久久久高清一区二区三区 | 国产三级国产精品国产专区50 | 久久免费电影网 | 亚洲三级av| 国产麻豆精品久久一二三 | 五月天六月婷 | 国产视频2区 | 日韩一区二区三区高清在线观看 | 奇米导航| 91精品天码美女少妇 | 99久久日韩精品视频免费在线观看 | 丁香婷婷自拍 | 二区在线播放 | 一级黄色片毛片 | 天天干天天干天天操 | 国产成人av电影在线观看 | 婷婷色综合色 | 天天草夜夜 | 永久免费毛片在线观看 | 天天性天天草 | 免费男女羞羞的视频网站中文字幕 | 日韩av电影免费观看 | 久热超碰 | 色婷婷亚洲综合 | 97超碰人人澡人人爱学生 | 国产精品免费视频一区二区 | 欧美性猛片 | av+在线播放在线播放 | 91人人视频在线观看 | 久久久久女人精品毛片 | 91免费高清 | 九九久久成人 | 亚洲天堂视频在线 | 免费视频色 | 国产三级av在线 | 毛片永久新网址首页 | 精品视频在线视频 | 日韩在线第一区 | 美女久久视频 | 久久久久久久久久久黄色 | 久久精品xxx | 欧美激情视频一二区 | 成年人免费在线观看网站 | 日韩黄色在线电影 | 超碰午夜| 天天玩天天干 | 欧美巨大 | 国内99视频 | 2019天天干天天色 | av免费观看在线 | 久久视频在线免费观看 | 最近2019好看的中文字幕免费 | 国产99中文字幕 | 色综合网在线 | 91亚洲精品久久久久图片蜜桃 | 亚洲人成人在线 | 中文字幕在线免费观看 | 亚洲成人av一区二区 | 免费合欢视频成人app | 97色在线 | 日韩视频中文 | 亚洲成a人片综合在线 | 欧美激情视频一区二区三区免费 | 免费网站看v片在线a | 热热热热热色 | 日韩网站在线观看 | 午夜精品久久久久久久爽 | 中国一级片免费看 | av中文字幕不卡 | 97视频在线 | 久久久午夜影院 | 97精品国产一二三产区 | 韩国三级av在线 | 成人免费 在线播放 | 国产精品久久久久久欧美 | 免费网站污 | 国产高清av免费在线观看 | 超碰97国产精品人人cao | 在线观看国产高清视频 | 日韩在线视频免费观看 | 久久夜靖品 | 久久国产精品网站 | 天天干天天干天天操 | 成人影片在线免费观看 | 久久精品3 | 国产黄色视 | 亚洲成人av电影 | 激情视频国产 | 日精品在线观看 | 天堂av网址 | 亚洲码国产日韩欧美高潮在线播放 | 久久婷婷视频 | 特级西西人体444是什么意思 | 国产精品久久久久久妇 | 国产女人18毛片水真多18精品 | 久久久久女教师免费一区 | 日本最新一区二区三区 | 久久99精品热在线观看 | 免费日韩一级片 | 娇妻呻吟一区二区三区 | 超碰99人人 | 久久露脸国产精品 | 中文字幕丰满人伦在线 | 国产成人黄色网址 | 日韩有码中文字幕在线 | 天天干天天综合 | 欧美午夜激情网 | 久久久免费电影 | 9i看片成人免费看片 | 日韩最新理论电影 | 91九色视频导航 | 国产91九色视频 | 色美女在线 | av大全在线看 | 国产91丝袜在线播放动漫 | 国模一二三区 | 一区二区三区高清 | 久久精品这里精品 | 午夜精品一区二区三区四区 | 美女黄频在线观看 | 久久久www成人免费精品张筱雨 | 亚洲成人av一区二区 | 欧美日本国产在线观看 | 天天干人人干 | 99精品黄色片免费大全 | 国产探花视频在线播放 | 免费观看的黄色片 | 久久久久伦理电影 | www.狠狠干 | 久久99精品国产麻豆宅宅 | 91看片在线观看 | 成片免费观看视频大全 | 超碰公开在线 | 国产一级高清视频 | 丝袜av网站 | 日韩在线免费不卡 | 免费的黄色av | 欧美 亚洲 另类 激情 另类 | 亚洲视频一级 | 日本精品视频一区 | 色综合小说 | 成人免费在线播放 | 欧洲成人av | 亚洲国产精品视频 | 国产中文字幕视频在线观看 | 久久国产网 | 特级西西444www大胆高清无视频 | 久久亚洲婷婷 | 韩国中文三级 | 人人爽人人看 | 97香蕉久久超级碰碰高清版 | 久久色在线观看 | 日本久久成人中文字幕电影 | 亚洲国产伊人 | 91精品国产自产老师啪 | 99免费在线观看视频 | 日韩中文字幕在线看 | 日韩在线观看电影 | 在线黄色免费 | 国产精品18久久久久久久 | 精品一区二区三区在线播放 | 日韩a级黄色片 | 97视频播放| 香蕉网在线播放 | 国产激情小视频在线观看 | 999久久久久久久久6666 | 精品国产一区二区三区久久 | 亚洲欧美色婷婷 | 日韩一级电影在线观看 | 久久亚洲婷婷 | 日韩欧美在线观看一区 | 成人影片免费 | 久久电影日韩 | 亚洲人成免费 | 精品亚洲欧美无人区乱码 | 91在线porny国产在线看 | 日本超碰在线 | 麻豆综合网 | 久久成人一区 | 免费韩国av | 久久久久久久久久久免费视频 | 97视频网站| 在线免费观看视频你懂的 | 2023年中文无字幕文字 | 欧美老少交 | 99亚洲国产| 欧美精品在线观看免费 | 天堂av在线网址 | 香蕉视频久久 | 日韩视频免费在线观看 | 欧美色噜噜 | 欧美一区二区精美视频 | 免费观看丰满少妇做爰 | 美女黄频 | 国产成人精品一区二区在线观看 | 日韩专区在线 | 国产精品久久久久久久久久ktv | 成人av免费看 | 免费一级片久久 | 日日操日日干 | 天躁狠狠躁| 国产精品成人久久久 | 日韩精品久久久久 | 午夜精品久久久久 | 国产伦精品一区二区三区高清 | 91porny九色91啦中文 | 亚洲另类在线视频 | 国产亚洲综合性久久久影院 | 99国产精品久久久久老师 | 国产三级精品三级在线观看 | 久久91网| 免费欧美精品 | www.国产在线观看 | 国产在线观看不卡 | 激情婷婷在线观看 | av最新资源| 国产精品久久久久久久久费观看 | 久久久久国产精品免费 | 国产91全国探花系列在线播放 | 懂色av一区二区三区蜜臀 | 九九涩涩av台湾日本热热 | 99久久精品无免国产免费 | 国产成人三级三级三级97 | 午夜精品一区二区三区在线播放 | 女人魂免费观看 | a视频免费在线观看 | 三级黄色片在线观看 | 久久99在线视频 | 在线观看香蕉视频 | 中文字幕在线观看av | 在线а√天堂中文官网 | 三级午夜片 | 国产91精品久久久久 | 深爱激情五月综合 | 亚洲丝袜一区 | 日韩a级黄色片 | 国产成人一区二区三区久久精品 | 中文字幕在线播出 | 国产高清av免费在线观看 | 国产一级做a爱片久久毛片a | 日日干天天干 | 国产在线观看你懂得 | 日韩精品久久久 | 国产高清成人av | 久久综合亚洲鲁鲁五月久久 | www黄色com| 五月天激情在线 | 在线欧美日韩 | 91视频亚洲 | 久久久久在线观看 | 久久综合久久久 | 欧美色插 | 亚洲三级黄色 | 国产精品青草综合久久久久99 | 欧美激情视频一区二区三区 | 三级大片网站 | 久久一区国产 | 久久99久久99精品免观看软件 | 日韩黄色免费电影 | 国产成人av网站 | 精品一区二区av | 欧美特一级 | 东方av免费在线观看 | 麻豆视频免费观看 | 中文字幕在线中文 | 91欧美视频网站 | 日韩在线播放视频 | 久久久久国产一区二区 | 91精品1区2区 | 欧美日视频| 综合国产在线观看 | 成人免费一级片 | 国产美女永久免费 | 国产污视频在线观看 | 亚洲午夜精品久久久久久久久久久久 | 亚洲精品视频在线观看免费 | 午夜精品电影 | 不卡在线一区 | 亚洲少妇影院 | 在线观看完整版免费 | 久久久久久国产精品亚洲78 | 奇米影视四色8888 | 超碰人人在线 | 久久久视屏| 91色亚洲| 久久国产一区二区三区 | 成人手机在线视频 | 国产亚洲精品久久久久久 | 狠狠操导航 | 国内精品久久久久影院一蜜桃 | 亚洲午夜在线视频 | 天天综合网在线 | 又色又爽又黄高潮的免费视频 | www.香蕉视频| 久草网在线 | 久草免费在线 | 色先锋av资源中文字幕 | 成人97视频| 日b视频在线观看网址 | 久久精品国产一区二区 | 亚洲视频一级 | 日韩资源在线播放 | 中文字幕在线观看的网站 | 欧美日韩不卡在线观看 | 在线观看午夜av | 中文字幕免费高清av | www久久久| 毛片网免费| 日本精品视频免费 | 国产成人免费网站 | 九色精品在线 | 啪啪激情网 | 国产日本在线播放 | 精品国产一区二区三区在线观看 | 亚洲黄色一级电影 | 免费视频在线观看网站 | 狠狠干在线 | 国产麻豆成人传媒免费观看 | 日韩av三区 | 亚洲国产成人久久综合 | 久久久久北条麻妃免费看 | 伊人国产女 | 最近中文字幕高清字幕免费mv | 狠狠躁夜夜躁人人爽视频 | 四虎成人精品永久免费av | av黄网站| 美女黄频在线观看 | 91色欧美| 视频福利在线观看 | 欧美大片在线观看一区 | 综合网中文字幕 | 99 精品 在线 | 久草在线免费在线观看 | 亚洲精品欧美专区 | 五月天电影免费在线观看一区 | 亚洲视频一 | 日韩成年视频 | 色中色亚洲 | 午夜丁香网 | 国产永久免费高清在线观看视频 | 国产一级二级在线播放 | 午夜精品成人一区二区三区 | 九九久久视频 | 久久五月情影视 | 国产一区视频在线 | 天天在线操 | av大全免费在线观看 | 日韩精品一区二区三区中文字幕 | 亚洲一级黄色片 | 欧美日韩中文字幕视频 | av高清不卡 | 首页国产精品 | 日韩成人高清在线 | 欧美精品在线观看一区 | 91爱爱视频 | 久热电影 | 久久精品专区 | 国产伦精品一区二区三区四区视频 | 丁香婷婷久久久综合精品国产 | 中文av日韩 | 久久久久久久久久久久久久免费看 | 美女免费视频网站 | 国产精品不卡 | a黄色一级片 | 四虎永久网站 | 国产在线 一区二区三区 | 久久99国产精品二区护士 | 久久精品久久精品 | av网址最新 | 亚洲精选视频免费看 | 91在线观看黄 | 日韩亚洲精品电影 | 人人澡超碰碰 | 国产一级一片免费播放放 | 久久久久国产精品免费网站 | 国产精品免费观看久久 | 久久久亚洲影院 | 97超碰在线久草超碰在线观看 | 国产黄色片久久久 | 日日日日| 精品国产日本 | 91日韩在线专区 | 国产高清在线观看 | 人人操日日干 | 精品亚洲男同gayvideo网站 | 五月激情亚洲 | 免费高清看电视网站 | 麻豆网站免费观看 | 国产福利一区二区三区在线观看 | 特级xxxxx欧美 | 丁香六月婷婷开心 | av免费在线观 | 久久久这里有精品 | 天天操夜夜叫 | 91麻豆国产福利在线观看 | 91一区啪爱嗯打偷拍欧美 | 天堂网中文在线 | 久福利 | 中文字幕日韩一区二区三区不卡 | 成人免费共享视频 | 黄色特级毛片 | 东方av在 | 中文字幕91 | 欧洲一区二区在线观看 | 午夜在线观看一区 | 激情久久影院 | 国产成人av在线影院 | 精品影院 | 国产精品第 | 中文在线√天堂 | 亚洲闷骚少妇在线观看网站 | 99久高清在线观看视频99精品热在线观看视频 | 日韩精品久久久久久 | 亚洲精品乱码白浆高清久久久久久 | 欧美色伊人 | 999久久国精品免费观看网站 | 免费日韩一区二区 | 亚洲免费精彩视频 | 99精品电影 | 69av在线播放 | 国产手机在线精品 | 91高清免费看 | 国产成人久久精品亚洲 | 国产综合激情 | 亚洲一区二区视频 | 91视频免费看片 | 婷婷六月综合网 | 波多野结衣精品视频 | 国产成人精品一区在线 | 黄在线免费看 | 午夜黄色一级片 | 国产资源在线观看 | 精品国产乱码久久久久久久 | 超碰在线色| 麻豆果冻剧传媒在线播放 | 黄色天堂在线观看 | 久久国产一区二区 | a成人v | 国产精品99久久久久久小说 | 国产小视频在线观看 | 91一区二区三区久久久久国产乱 | 日日爱av | 久草免费在线观看视频 | 久久午夜精品视频 | 成人午夜在线观看 | 三上悠亚一区二区在线观看 |