精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

一個小小的正則表達式,竟然導致線上CPU 100%異常!

運維 系統運維
前幾天線上一個項目監控信息突然報告異常,上到機器上后查看相關資源的使用情況,發現 CPU 利用率將近 100%。

 一個小小的正則表達式,竟然導致線上CPU 100%異常!

前幾天線上一個項目監控信息突然報告異常,上到機器上后查看相關資源的使用情況,發現 CPU 利用率將近 100%。通過 Java 自帶的線程 Dump 工具,我們導出了出問題的堆棧信息。

一個小小的正則表達式,竟然導致線上CPU 100%異常!

我們可以看到所有的堆棧都指向了一個名為 validateUrl 的方法,這樣的報錯信息在堆棧中一共超過 100 處。通過排查代碼,我們知道這個方法的主要功能是校驗 URL 是否合法。

很奇怪,一個正則表達式怎么會導致 CPU 利用率居高不下。為了弄清楚復現問題,我們將其中的關鍵代碼摘抄出來,做了個簡單的單元測試。

  1. public static void main(String[] args) {    String badRegex = "^([hH][tT]{2}[pP]://|[hH][tT]{2}[pP][sS]://)(([A-Za-z0-9-~]+).)+([A-Za-z0-9-~\\/])+$";    String bugUrl = "http://www.fapiao.com/dddp-web/pdf/download?request=6e7JGxxxxx4ILd-kExxxxxxxqJ4-CHLmqVnenXC692m74H38sdfdsazxcUmfcOH2fAfY1Vw__%5EDadIfJgiEf";    if (bugUrl.matches(badRegex)) {        System.out.println("match!!");    } else {        System.out.println("no match!!");    }} 

當我們運行上面這個例子的時候,通過資源監視器可以看到有一個名為 java 的進程 CPU 利用率直接飆升到了 91.4% 。

一個小小的正則表達式,竟然導致線上CPU 100%異常!

 

看到這里,我們基本可以推斷,這個正則表達式就是導致 CPU 利用率居高不下的兇手!

于是,我們將排錯的重點放在了那個正則表達式上:

  1. ^([hH][tT]{2}[pP]://|[hH][tT]{2}[pP][sS]://)(([A-Za-z0-9-~]+).)+([A-Za-z0-9-~\/])+$ 

這個正則表達式看起來沒什么問題,可以分為三個部分:

第一部分匹配 http 和 https 協議,第二部分匹配 www. 字符,第三部分匹配許多字符。我看著這個表達式發呆了許久,也沒發現沒有什么大的問題。

其實這里導致 CPU 使用率高的關鍵原因就是:Java 正則表達式使用的引擎實現是 NFA 自動機,這種正則表達式引擎在進行字符匹配時會發生回溯(backtracking)。而一旦發生回溯,那其消耗的時間就會變得很長,有可能是幾分鐘,也有可能是幾個小時,時間長短取決于回溯的次數和復雜度。

看到這里,可能大家還不是很清楚什么是回溯,還有點懵。沒關系,我們一點點從正則表達式的原理開始講起。

正則表達式引擎

正則表達式是一個很方便的匹配符號,但要實現這么復雜,功能如此強大的匹配語法,就必須要有一套算法來實現,而實現這套算法的東西就叫做正則表達式引擎。簡單地說,實現正則表達式引擎的有兩種方式:DFA 自動機(Deterministic Final Automata 確定型有窮自動機)和 NFA 自動機(Non deterministic Finite Automaton 不確定型有窮自動機)。

對于這兩種自動機,他們有各自的區別,這里并不打算深入將它們的原理。簡單地說,DFA 自動機的時間復雜度是線性的,更加穩定,但是功能有限。而 NFA 的時間復雜度比較不穩定,有時候很好,有時候不怎么好,好不好取決于你寫的正則表達式。但是勝在 NFA 的功能更加強大,所以包括 Java 、.NET、Perl、Python、Ruby、PHP 等語言都使用了 NFA 去實現其正則表達式。

那 NFA 自動加到底是怎么進行匹配的呢?我們以下面的字符和表達式來舉例說明。

  1. text="Today is a nice day."regex="day" 

要記住一個很重要的點,即:NFA 是以正則表達式為基準去匹配的。也就是說,NFA 自動機會讀取正則表達式的一個一個字符,然后拿去和目標字符串匹配,匹配成功就換正則表達式的下一個字符,否則繼續和目標字符串的下一個字符比較?;蛟S你們聽不太懂,沒事,接下來我們以上面的例子一步步解析。

  • 首先,拿到正則表達式的第一個匹配符:d。于是那去和字符串的字符進行比較,字符串的第一個字符是 T,不匹配,換下一個。第二個是 o,也不匹配,再換下一個。第三個是 d,匹配了,那么就讀取正則表達式的第二個字符:a。

  • 讀取到正則表達式的第二個匹配符:a。那著繼續和字符串的第四個字符 a 比較,又匹配了。那么接著讀取正則表達式的第三個字符:y。

  • 讀取到正則表達式的第三個匹配符:y。那著繼續和字符串的第五個字符 y 比較,又匹配了。嘗試讀取正則表達式的下一個字符,發現沒有了,那么匹配結束。

上面這個匹配過程就是 NFA 自動機的匹配過程,但實際上的匹配過程會比這個復雜非常多,但其原理是不變的。

NFA自動機的回溯

了解了 NFA 是如何進行字符串匹配的,接下來我們就可以講講這篇文章的重點了:回溯。為了更好地解釋回溯,我們同樣以下面的例子來講解。

  1. text="abbc"regex="ab{1,3}c" 

上面的這個例子的目的比較簡單,匹配以 a 開頭,以 c 結尾,中間有 1-3 個 b 字符的字符串。NFA 對其解析的過程是這樣子的:

  • 首先,讀取正則表達式第一個匹配符 a 和 字符串第一個字符 a 比較,匹配了。于是讀取正則表達式第二個字符。

  • 讀取正則表達式第二個匹配符 b{1,3} 和字符串的第二個字符 b 比較,匹配了。但因為 b{1,3} 表示 1-3 個 b 字符串,以及 NFA 自動機的貪婪特性(也就是說要盡可能多地匹配),所以此時并不會再去讀取下一個正則表達式的匹配符,而是依舊使用 b{1,3} 和字符串的第三個字符 b 比較,發現還是匹配。于是繼續使用 b{1,3} 和字符串的第四個字符 c 比較,發現不匹配了。此時就會發生回溯。

  • 發生回溯是怎么操作呢?發生回溯后,我們已經讀取的字符串第四個字符 c 將被吐出去,指針回到第三個字符串的位置。之后,程序讀取正則表達式的下一個操作符 c,讀取當前指針的下一個字符 c 進行對比,發現匹配。于是讀取下一個操作符,但這里已經結束了。

下面我們回過頭來看看前面的那個校驗 URL 的正則表達式:

  1. ^([hH][tT]{2}[pP]://|[hH][tT]{2}[pP][sS]://)(([A-Za-z0-9-~]+).)+([A-Za-z0-9-~\/])+$ 

出現問題的 URL 是:

  1. http://www.fapiao.com/dzfp-web/pdf/download?request=6e7JGm38jfjghVrv4ILd-kEn64HcUX4qL4a4qJ4-CHLmqVnenXC692m74H5oxkjgdsYazxcUmfcOH2fAfY1Vw__%5EDadIfJgiEf 

我們把這個正則表達式分為三個部分:

  • 第一部分:校驗協議。^([hH][tT]{2}[pP]://|[hH][tT]{2}[pP][sS]://)。

  • 第二部分:校驗域名。(([A-Za-z0-9-~]+).)+。

  • 第三部分:校驗參數。([A-Za-z0-9-~\/])+$

我們可以發現正則表達式校驗協議 http:// 這部分是沒有問題的,但是在校驗 www.fapiao.com的時候,其使用了 xxxx. 這種方式去校驗。那么其實匹配過程是這樣的:

  • 匹配到 www.

  • 匹配到 fapiao.

  • 匹配到 com/dzfp-web/pdf/download?request=6e7JGm38jf.....,你會發現因為貪婪匹配的原因,所以程序會一直讀后面的字符串進行匹配,最后發現沒有點號,于是就一個個字符回溯回去了。

這是這個正則表達式存在的第一個問題。

另外一個問題是在正則表達式的第三部分,我們發現出現問題的 URL 是有下劃線(_)和百分號(%)的,但是對應第三部分的正則表達式里面卻沒有。這樣就會導致前面匹配了一長串的字符之后,發現不匹配,最后回溯回去。

這是這個正則表達式存在的第二個問題。

解決方案

明白了回溯是導致問題的原因之后,其實就是減少這種回溯,你會發現如果我在第三部分加上下劃線和百分號之后,程序就正常了。

  1. public static void main(String[] args) {    String badRegex = "^([hH][tT]{2}[pP]://|[hH][tT]{2}[pP][sS]://)(([A-Za-z0-9-~]+).)+([A-Za-z0-9-~_%\\/])+$";    String bugUrl = "http://www.fapiao.com/dddp-web/pdf/download?request=6e7JGxxxxx4ILd-kExxxxxxxqJ4-CHLmqVnenXC692m74H38sdfdsazxcUmfcOH2fAfY1Vw__%5EDadIfJgiEf";    if (bugUrl.matches(badRegex)) {        System.out.println("match!!");    } else {        System.out.println("no match!!");    }} 

運行上面的程序,立刻就會打印出match!!。

但這是不夠的,如果以后還有其他 URL 包含了亂七八糟的字符呢,我們難不成還再修改一遍??隙ú滑F實嘛!

其實在正則表達式中有這么三種模式:貪婪模式、懶惰模式、獨占模式。

在關于數量的匹配中,有 + ? * {min,max} 四種兩次,如果只是單獨使用,那么它們就是貪婪模式。

如果在他們之后加多一個 ? 符號,那么原先的貪婪模式就會變成懶惰模式,即盡可能少地匹配。但是懶惰模式還是會發生回溯現象的。TODO例如下面這個例子:

  1. text="abbc"regex="ab{1,3}?c" 

正則表達式的第一個操作符 a 與 字符串第一個字符 a 匹配,匹配成。于是正則表達式的第二個操作符 b{1,3}? 和 字符串第二個字符 b 匹配,匹配成功。因為最小匹配原則,所以拿正則表達式第三個操作符 c 與字符串第三個字符 b 匹配,發現不匹配。于是回溯回去,拿正則表達式第二個操作符 b{1,3}? 和字符串第三個字符 b 匹配,匹配成功。于是再拿正則表達式第三個操作符 c 與字符串第四個字符 c 匹配,匹配成功。于是結束。

如果在他們之后加多一個 + 符號,那么原先的貪婪模式就會變成獨占模式,即盡可能多地匹配,但是不回溯。

于是乎,如果要徹底解決問題,就要在保證功能的同時確保不發生回溯。我將上面校驗 URL 的正則表達式的第二部分后面加多了個 + 號,即變成這樣:

  1. ^([hH][tT]{2}[pP]://|[hH][tT]{2}[pP][sS]://)(([A-Za-z0-9-~]+).)++    --->>> (這里加了個+號)([A-Za-z0-9-~\/])+$ 

這樣之后,運行原有的程序就沒有問題了。

最后推薦一個網站,這個網站可以檢查你寫的正則表達式和對應的字符串匹配時會不會有問題。

Online regex tester and debugger: PHP, PCRE, Python, Golang and JavaScript

例如我本文中存在問題的那個 URL 使用該網站檢查后會提示:catastrophic backgracking(災難性回溯)。

一個小小的正則表達式,竟然導致線上CPU 100%異常!

當你點擊左下角的「regex debugger」時,它會告訴你一共經過多少步檢查完畢,并且會將所有步驟都列出來,并標明發生回溯的位置。

 

一個小小的正則表達式,竟然導致線上CPU 100%異常!

本文中的這個正則表達式在進行了 11 萬步嘗試之后,自動停止了。這說明這個正則表達式確實存在問題,需要改進。

但是當我用我們修改過的正則表達式進行測試,即下面這個正則表達式。

  1. ^([hH][tT]{2}[pP]://|[hH][tT]{2}[pP][sS]://)(([A-Za-z0-9-~]+).)++([A-Za-z0-9-~\/])+$ 

工具提示只用了 58 步就完成了檢查。

一個小小的正則表達式,竟然導致線上CPU 100%異常!

 

一個字符的差別,性能就差距了好幾萬倍。

樹義有話說

一個小小的正則表達式竟然能夠把 CPU 拖垮,也是很神奇了。這也給平時寫程序的我們一個警醒,遇到正則表達式的時候要注意貪婪模式和回溯問題,否則我們每寫的一個表達式都是一個雷。

通過查閱網上資料,我發現深圳阿里中心 LAZADA 的同學也在 17 年遇到了這個問題。他們同樣也是在測試環境沒有發現問題,但是一到線上的時候就發生了 CPU 100% 的問題,他們遇到的問題幾乎跟我們的一模一樣。有興趣的朋友可以點擊閱讀原文查看他們后期總結的文章:一個由正則表達式引發的血案 - 明志健致遠 - 博客園

雖然把這篇文章寫完了,但是關于 NFA 自動機的原理方面,特別是關于懶惰模式、獨占模式的解釋方面還是沒有解釋得足夠深入。因為 NFA 自動機確實不是那么容易理解,所以在這方面還需要不斷學習加強。歡迎有懂行的朋友來學習交流,互相促進。

責任編輯:張燕妮 來源: 高效運維
相關推薦

2018-09-27 10:33:30

正則表達式CPUJava

2018-08-21 11:00:20

前端正則表達式Java

2017-08-25 16:38:05

表達式正則血案

2024-09-14 09:18:14

Python正則表達式

2018-09-27 15:25:08

正則表達式前端

2021-12-03 08:50:25

LeetCode正則表達式算法

2020-09-04 09:16:04

Python正則表達式虛擬機

2015-12-07 10:03:40

實用PHP表達式

2023-09-04 15:52:07

2009-08-07 14:24:31

.NET正則表達式

2010-03-25 18:25:36

Python正則表達式

2016-11-10 16:21:22

Java 正則表達式

2009-09-16 17:15:57

正則表達式引擎

2022-01-04 11:35:03

Linux Shel正則表達式Linux

2023-09-13 08:12:45

2011-06-02 12:34:16

正則表達式

2022-03-28 06:19:14

正則表達式開發

2017-05-12 10:47:45

Linux正則表達式程序基礎

2021-01-27 11:34:19

Python正則表達式字符串

2009-02-18 09:48:20

正則表達式Java教程
點贊
收藏

51CTO技術棧公眾號

久久九九国产| 黄色欧美在线| 最新日韩在线视频| 亚洲专区在线视频| 日韩精品视频播放| 免费看成人吃奶视频在线| 欧美日韩精品专区| av在线观看地址| 国产免费av高清在线| 狠狠色丁香婷婷综合| 国产69精品99久久久久久宅男| mm131美女视频| 黄色欧美视频| 亚洲国产aⅴ成人精品无吗| 日本在线视频不卡| 精品久久久久成人码免费动漫| 国产日韩一区| 大胆人体色综合| 免费看黄色aaaaaa 片| 日韩一区二区三区四区五区| 午夜av一区二区三区| 一本一道久久a久久精品综合| 丰满人妻一区二区三区免费视频| 日本人妖一区二区| 久久久久五月天| 亚洲精品久久久久久国| 亚洲国产网址| 精品免费日韩av| 三上悠亚av一区二区三区| a天堂资源在线| 一区二区三区丝袜| 天天爽天天狠久久久| 无码国产伦一区二区三区视频| 黄页网站大全一区二区| 国产不卡一区二区在线播放| 精品在线视频免费| 亚洲国产一区二区三区在线播放 | www国产黄色| 成人video亚洲精品| 国产女同性恋一区二区| 久久国产欧美精品| 欧美一区二区黄片| 国产99一区视频免费| 91精品视频网站| 做爰视频毛片视频| 久久久国产亚洲精品| 91国产精品电影| 久久精品免费在线| 国产精品a级| 美女av一区二区| 久久精品一区二区三区四区五区| 成人综合久久| 国产亚洲精品久久久久动| 三叶草欧洲码在线| 色先锋久久影院av| 精品亚洲国产成av人片传媒| 91精品国产高清91久久久久久 | 免费在线欧美视频| 国产成人在线一区二区| 精品人妻一区二区三区潮喷在线| 亚洲在线国产日韩欧美| 国内偷自视频区视频综合| 久久精品波多野结衣| 午夜国产精品视频免费体验区| 久久九九免费视频| 玖玖爱这里只有精品| 一区二区免费不卡在线| 欧美丰满少妇xxxxx| 免费一级肉体全黄毛片| 影音先锋中文字幕一区| 97视频在线观看免费| 国产成人无码精品亚洲| 午夜亚洲性色视频| 国产成人激情小视频| 看黄色一级大片| 蜜臀av在线播放一区二区三区| 国产精品流白浆视频| 夜夜狠狠擅视频| 国产精品一二三四| 国产精品一区二区三区免费| 五月婷婷丁香网| 2023国产精品自拍| 亚洲高清资源综合久久精品| 五月香视频在线观看| 亚洲欧美一区二区三区久本道91| 国产精品免费看久久久无码| 国产传媒在线| 欧洲另类一二三四区| 亚洲一区精品视频在线观看| 视频一区中文字幕精品| 亚洲第一色在线| 国产精品高清无码在线观看| 欧美丰满日韩| 午夜精品国产精品大乳美女| www五月天com| 国产一区二区福利| 久久精品一二三区| 幼a在线观看| 亚洲高清在线精品| 韩国中文字幕av| 超碰成人在线观看| 在线成人一区二区| 国产一二三四在线| 免费日本视频一区| 国产伦精品一区二区三区四区视频 | 亚洲电影一二三区| free性欧美| 欧美撒尿777hd撒尿| 中文字幕一区二区三区人妻在线视频 | 日韩精品电影在线| 91视频免费进入| 国产毛片av在线| 亚洲一区二区高清| 精品久久久久久中文字幕2017| 一区中文字幕电影| 中国人与牲禽动交精品| 久久婷婷国产麻豆91| 久久黄色级2电影| 国产精品人成在线观看免费| 国产伦精品一区二区三区视频孕妇| 黄色软件在线| 亚洲成a天堂v人片| 欧洲美女亚洲激情| 第九色区aⅴ天堂久久香| 韩剧1988免费观看全集| 国产精品国产精品国产专区| 久久综合色8888| 日韩视频 中文字幕| 全球最大av网站久久| 亚洲精品久久久久国产| 国内偷拍精品视频| 国产在线观看免费一区| 丝袜美腿玉足3d专区一区| av资源在线| 欧美精品一区二区三区在线| 黄视频网站免费看| 精品亚洲成a人在线观看| 日本成人黄色| 久久久久久久| 日韩第一页在线| 日韩经典在线观看| 国产成人免费视| 永久免费看av| 国产精品高清一区二区 | 黄色的网站在线观看| 在线视频欧美精品| 欧美bbbbb性bbbbb视频| 影音先锋一区| 国产亚洲一区二区三区在线播放| av在线影院| 欧美日韩国产色站一区二区三区| 亚洲国产日韩一区无码精品久久久| 99国产精品自拍| 国产欧美一区二区视频| 国产污视频在线播放| 亚洲级视频在线观看免费1级| 欧美精品一区二区蜜桃| 国产传媒久久文化传媒| 日韩欧美一级在线| 日韩欧美中文在线观看| 另类视频在线观看| 国产suv一区二区| 亚洲最大色网站| 污网站免费观看| 日韩网站在线| 免费在线成人av| 亚洲成人短视频| 视频在线观看99| 国产美女主播在线观看| 亚洲综合一区二区三区| 韩国三级hd两男一女| 亚洲另类自拍| 日本精品二区| 日韩免费在线电影| 欧美人在线视频| 天堂网2014av| 欧美性色欧美a在线播放| 一级片黄色录像| 国产精品一区免费视频| 欧美一级片免费播放| 啪啪激情综合网| 国产精品精品视频一区二区三区| 欧美边添边摸边做边爱免费| 日韩一二三区视频| 国产香蕉视频在线| 欧美高清在线视频| 四川一级毛毛片| 一本色道久久| 亚洲国产精品综合| 日本一区二区三区电影免费观看| 国语自产精品视频在免费| 韩国福利在线| 日韩一级片网址| 少妇高潮av久久久久久| 中文字幕制服丝袜成人av| 极品白嫩的小少妇| 秋霞电影一区二区| 国产xxxx振车| 欧美精品一区二区三区精品| 91天堂在线视频| 9i看片成人免费高清| 日韩在线播放视频| 亚洲欧美日韩精品永久在线| 欧美精品一卡二卡| 日产精品久久久| 亚洲视频自拍| 精品免费日韩av| 国产成人精品一区二区色戒| 尤物av一区二区| 丁香激情五月少妇| 成人午夜av影视| 色噜噜狠狠一区二区| 国产精品人人爽人人做我的可爱| 亚洲午夜精品一区二区三区| 人妖一区二区三区| 91在线观看免费| 精品日韩视频| 91av视频在线| 污污片在线免费视频| 国产亚洲美女久久| 亚洲 欧美 激情 小说 另类| 欧美高清dvd| 亚洲欧美另类在线视频| 亚洲国产aⅴ天堂久久| 三级全黄做爰视频| 亚洲国产精品成人综合| 在线精品一区二区三区| 国产99久久精品| 奇米视频7777| 免费久久精品视频| 国产高清精品在线观看| 国产综合自拍| 一道本成人在线| 四虎国产精品成人免费入口| 成人app下载| 中文写幕一区二区三区免费观成熟| 美日韩一级片在线观看| 亚洲成熟丰满熟妇高潮xxxxx| 在线高清一区| 亚洲啊啊啊啊啊| 亚洲澳门在线| 亚洲一区二三| 久久综合99| 亚洲 日韩 国产第一区| 国产麻豆精品久久| 欧美大陆一区二区| 最新亚洲精品| 美女视频久久| 九九热精品视频在线观看| 免费av在线一区二区| 亚洲免费成人av在线| 免费中文日韩| 国产欧美日韩一区二区三区四区 | 日韩精品欧美| 亚洲午夜精品国产| 91精品综合久久久久久久久久久 | 国产欧美小视频| 国产精品视频观看| 日韩欧美视频免费观看| 国产精品第一页第二页第三页| 成年人视频软件| 亚洲欧洲韩国日本视频| 手机在线免费看毛片| 亚洲精品成人天堂一二三| 成人免费毛片东京热| 一区二区三区丝袜| 精品成人免费视频| 欧美性猛交xxxx黑人猛交| 亚洲精品男人的天堂| 色94色欧美sute亚洲线路二 | 黄色成人在线网| 久久免费观看视频| 周于希免费高清在线观看| 日本欧美爱爱爱| 久久福利在线| 99r国产精品视频| 欧美调教在线| 亚洲精品乱码久久久久久蜜桃91| 欧美电影一二区| 中文精品无码中文字幕无码专区| 亚洲第一伊人| 久久久久久久久久久免费视频| 日韩电影免费在线观看网站| 中文字幕亚洲影院| 亚洲成a人v欧美综合天堂麻豆| 亚洲裸体xxxx| 日本三级在线视频| 国内精品久久久久久影视8| 天堂av在线网| 国产日韩欧美成人| 国产精品视频3p| 亚洲国产精品视频一区| 亚洲午夜伦理| 少妇黄色一级片| 丰满白嫩尤物一区二区| 四虎国产精品成人免费入口| 亚洲欧美激情在线| 中文字幕日韩免费| 欧美一区二区播放| 日韩大胆人体| 色综合色综合久久综合频道88| 亚洲女同av| 91精品入口蜜桃| 俺要去色综合狠狠| 久久久久免费看黄a片app| 免费高清视频精品| 99re久久精品国产| 亚洲日本中文字幕区| 99久久精品国产亚洲| 日韩亚洲欧美综合| 成在在线免费视频| 456亚洲影院| 亚洲免费资源| 久久国产精品久久| 综合久久久久| 污网站免费在线| 91麻豆国产自产在线观看| 久久久久久久久久网站| 色天天综合色天天久久| 狠狠综合久久av一区二区| 色噜噜久久综合伊人一本| 亚洲一二三四| 国产精品免费一区二区三区观看| 色777狠狠狠综合伊人| 日本www高清视频| eeuss国产一区二区三区| 欧美日韩色视频| 欧美午夜片在线看| 欧美男男同志| 91av在线免费观看视频| japanese色系久久精品| 国产精品久久成人免费观看| 美国十次了思思久久精品导航 | 国产精品久久久久久久岛一牛影视| 日韩美女黄色片| 欧美变态tickling挠脚心| 里番在线观看网站| 国产精品久久久久秋霞鲁丝| 天天躁日日躁狠狠躁欧美| 蜜桃传媒一区二区三区| 国产成人精品一区二| 成年人av电影| 91精品国产综合久久精品图片 | 亚洲男人的天堂在线观看| 一区二区三区免费在线| 中文字幕精品一区久久久久| 欧美日韩五码| 视频一区国产精品| 日韩精品国产欧美| 五月天精品在线| 欧美午夜不卡视频| 91在线视频| 国产精品揄拍一区二区| 久久精品高清| 亚洲综合伊人久久| 亚洲欧美一区二区三区孕妇| 国产富婆一级全黄大片| 欧美日本亚洲视频| 国产精品17p| 激情六月丁香婷婷| 国产区在线观看成人精品| 欧美成人精品网站| 日韩天堂在线视频| 久久三级中文| 99er在线视频| 91浏览器在线视频| www.久久久久久久| 少妇高潮久久久久久潘金莲| crdy在线观看欧美| 成人免费性视频| 99久久精品国产毛片| 亚洲熟女综合色一区二区三区| 亚洲人a成www在线影院| 国产69精品久久| 日本一区二区三区四区五区六区| 国产一区二区h| 91久久国产视频| 在线看福利67194| 国产精品视频一区二区三区综合| 久久久国内精品| 2023国产一二三区日本精品2022| 中文字幕乱伦视频| 久久久999国产| 日韩高清一级| 美女网站视频黄色| 亚洲尤物视频在线| 青青九九免费视频在线| 国产日韩中文字幕在线| 黑丝一区二区三区| 青娱乐国产视频| 欧美成人欧美edvon| 日韩精品一区二区三区| 正在播放国产精品| 99精品视频免费在线观看| 一级黄色片在线| 午夜精品久久久久久99热软件| 欧美精品色图| 波多野结衣视频播放| 欧美性视频一区二区三区| 暧暧视频在线免费观看|