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

從測試300萬個超鏈接接學到的

開發 測試
Stack Exchange上有超過三百萬個不同的鏈接。經過很長時間,許多鏈接已經不能用了。最近我花時間編寫了一個工具,它能判斷哪些是壞鏈,能幫助我們來修復壞鏈。

Stack Exchange上有超過三百萬個不同的鏈接。經過很長時間,許多鏈接已經不能用了。

最近我花時間編寫了一個工具,它能判斷哪些是壞鏈,能幫助我們來修復壞鏈。

我們是怎么做的?

首先,我們要對他人的網站心存敬意。

做一個好的網民

● 對每個域名限制請求

我們采用自動過期的set,來確保十秒鐘內對單個域名不會請求多過一次。當我們覺得需要對某些鏈接進行更多的測試時,我們也做了特殊處理。

  1. public class AutoExpireSet<T>  
  2. {  
  3.    
  4.     Dictionary<T, DateTime> items = new Dictionary<T, DateTime>();  
  5.     Dictionary<T, TimeSpan> expireOverride =  
  6.          new Dictionary<T, TimeSpan>();  
  7.    
  8.     int defaultDurationSeconds;  
  9.    
  10.     public AutoExpireSet(int defaultDurationSeconds)  
  11.     {  
  12.         this.defaultDurationSeconds =  
  13.            defaultDurationSeconds;  
  14.     }  
  15.    
  16.     public bool TryReserve(T t)  
  17.     {  
  18.         bool reserved = false;  
  19.         lock (this)  
  20.         {  
  21.             DateTime dt;  
  22.             if (!items.TryGetValue(t, out dt))  
  23.             {  
  24.                 dt = DateTime.MinValue;  
  25.             }  
  26.    
  27.             if (dt < DateTime.UtcNow)  
  28.             {  
  29.                 TimeSpan span;  
  30.                 if (!expireOverride.TryGetValue(t, out span))  
  31.                 {  
  32.                     span =  
  33.                      TimeSpan.FromSeconds(defaultDurationSeconds);  
  34.                 }  
  35.                 items[t] = DateTime.UtcNow.Add(span);  
  36.                 reserved = true;  
  37.             }  
  38.    
  39.         }  
  40.         return reserved;  
  41.     }  
  42.    
  43.     public void ExpireOverride(T t, TimeSpan span)  
  44.     {  
  45.         lock (this)  
  46.         {  
  47.             expireOverride[t] = span;  
  48.         }  
  49.     }  

● 健壯的驗證函數

我們的驗證函數包括了許多我認為非常重要的概念。

  1. public ValidateResult Validate(  
  2.       bool useHeadMethod = true,  
  3.       bool enableKeepAlive = false,  
  4.       int timeoutSeconds = 30 )  
  5. {  
  6.     ValidateResult result = new ValidateResult();  
  7.    
  8.     HttpWebRequest request = WebRequest.Create(Uri)  
  9.                                   as HttpWebRequest;  
  10.     if (useHeadMethod)  
  11.     {  
  12.         request.Method = "HEAD";  
  13.     }  
  14.     else 
  15.     {  
  16.         request.Method = "GET";  
  17.     }  
  18.    
  19.     // always compress, if you get back a 404 from a HEAD  
  20.     //     it can be quite big.  
  21.     request.AutomaticDecompression = DecompressionMethods.GZip;  
  22.     request.AllowAutoRedirect = false;  
  23.     request.UserAgent = UserAgentString;  
  24.     request.Timeout = timeoutSeconds * 1000;  
  25.     request.KeepAlive = enableKeepAlive;  
  26.    
  27.     HttpWebResponse response = null;  
  28.     try 
  29.     {  
  30.         response = request.GetResponse() as HttpWebResponse;  
  31.    
  32.         result.StatusCode = response.StatusCode;  
  33.         if (response.StatusCode ==  
  34.                    HttpStatusCode.Redirect ||  
  35.             response.StatusCode ==  
  36.                    HttpStatusCode.MovedPermanently ||  
  37.             response.StatusCode ==  
  38.                    HttpStatusCode.SeeOther ||  
  39.             response.StatusCode ==  
  40.                    HttpStatusCode.TemporaryRedirect)  
  41.         {  
  42.             try 
  43.             {  
  44.                 Uri targetUri =  
  45.                   new Uri(Uri, response.Headers["Location"]);  
  46.                 var scheme = targetUri.Scheme.ToLower();  
  47.                 if (scheme == "http" || scheme == "https")  
  48.                 {  
  49.                     result.RedirectResult =  
  50.                         new ExternalUrl(targetUri);  
  51.                 }  
  52.                 else 
  53.                 {  
  54.                     // this little gem was born out of  
  55.                     //   http://tinyurl.com/18r  
  56.                     //   redirecting to about:blank  
  57.                     result.StatusCode =  
  58.                            HttpStatusCode.SwitchingProtocols;  
  59.                     result.WebExceptionStatus = null;  
  60.                 }  
  61.             }  
  62.             catch (UriFormatException)  
  63.             {  
  64.                 // another gem ... people sometimes redirect to  
  65.                 //    http://nonsense:port/yay  
  66.                 result.StatusCode =  
  67.                     HttpStatusCode.SwitchingProtocols;  
  68.                 result.WebExceptionStatus =  
  69.                     WebExceptionStatus.NameResolutionFailure;  
  70.             }  
  71.    
  72.         } 

● 從***天開始就設置正確的User Agent字符串

如果什么地方出錯了,你希望他人能夠聯系到你。我們的鏈接爬蟲的user agent字符串為: Mozilla/5.0 (compatible; stackexchangebot/1.0; +http://meta.stackoverflow.com/q/130398)。

● 處理302, 303, 307等頁面跳轉

盡管302和303跳轉非常常見,307卻不多見。它被作為一種針對瀏覽器的錯誤表現的解決方法被引入,解釋見此處

307***的例子是http://www.haskell.org。我非常不贊同在首頁就跳轉地做法,URL重寫以及其他的工具可以解決這個問題,而不需要有多余的跳轉;但是,首頁跳轉仍舊存在。

當你跳轉時,你需要繼續測試。我們的鏈接測試機會測試最多五層。你需要設置層次上限,否則你會陷入無限循環。

跳轉有時很奇怪,網站有時會把你導向到about:config或一個不存在的URL。檢驗跳轉的頁面信息很重要。

● 當你獲得所需要的信息時,請及時中斷請求

在TCP協議中,包收到時,特殊的狀態會被標記。當客戶端發送給服務器的包中標記了FIN的話,連接會早早的中止。調用request.Abort你可以避免在404時從服務器端下載大量數據。

當測試鏈接時,你經常需要避免HTTP keepalive。因為我們的測試機沒必要給服務器造成不必要得連接負擔。

中斷可以減少壓縮,但我非常贊成啟用壓縮。

● 先使用HEAD請求,再用GET請求

一些服務器不使用HEAD。例如,Amazon完全禁止了,對HEAD請求返回405。在ASP.NET MVC中,人們經常顯式設置路由經過的verb屬性。程序員們在規定使用HttpVerbs.Get時往往沒有使用HttpVerbs.Head。所以當你失敗時(沒有獲得200響應),你需要重新使用GET verb來測試。(譯者:這一段不是很懂,如有錯誤請指正。)

● 忽略robots.txt

開始我打算做一個好網民,解析了所有的robots.txt文件,遵守排除和爬蟲頻率。但事實上許多網站如GitHub, Delicious和Facebook都有針對爬蟲的白名單。所有的爬蟲都被屏蔽了,除了那些著名的允許爬蟲的網站(如Google, Yahoo和Bing)。因為鏈接測試機是不會抓取網頁,關注robots.txt也不現實,所以我建議忽略robots.txt。這在Meta Stack Overflow也有討論。

● 使用合理的超時

測試時,我們給網站30s來響應,但有些網站需要更長時間。你當然不想讓一個惡意的網站讓你的測試機停止。所以我們采用30s作為最長的響應時間。

● 用很多線程來測試鏈接

我用在悉尼的開發電腦來做鏈接測試,顯然串行的三百萬次訪問不知道會占用多長時間。所以我用了30個線程。

并發當然也會帶來一些技術挑戰。你也不想在等待一個域名釋放資源的時候讓一個線程阻塞。

我采用Async類來管理隊列。相對于微軟的任務并行庫(Microsoft Task Parallel Library),我更喜歡Async,因為使用它來限制線程池中的線程數量非常簡單,而且API也簡單易用。

● 一次實效不代表***失效

我仍舊在調整判斷一個鏈接是壞鏈的算法。一次失效有可能是偶然事件。一個星期內的數次失效可能是服務器壞掉或者不幸的巧合。

現在隔天的兩次失效看起來比較可靠 – 我們沒有去尋找最***的算法,而是讓用戶告訴我們什么時候出錯了,但我們相信出錯率不高。

同樣的我們仍舊需要確定在一次成功測試之后多久藥重新測試。我想每隔三個月測一次就足夠了。

測試鏈接的一些有趣發現

Kernel.org被黑了

2011年9月1日,Kernel.org被黑了。你要問,這和測試鏈接有什么關系呢?

事實證明有人破壞了所有的文檔鏈接,這些鏈接今天仍舊不能用。例如http://www.kernel.org/pub/software/scm /git/docs/git-svn.html 在Stack Overflow的150個左右的帖子里出現過,現在它們會將你導向到404頁面,而它的新地址應該在:http://git-scm.com/docs /git-svn。在所有我碰到的壞鏈中,git文檔的壞鏈是最嚴重的。將近影響了6000個帖子。采用Apache的重寫功能來處理它是非常容易的。

有的網站的URL不能給你任何信息

http://www.microsoft.com/downloads/details.aspx?familyid=e59c3964-672d-4511-bb3e-2d5e1db91038displaylang=en 是個壞鏈,在60個左右的帖子中出現。想象下,如果這個鏈接類似于http://www.microsoft.com/downloads/ie- developer-toolbar-beta-3,那么就算微軟打算移走這個鏈接,我們仍舊克一猜測它可能帶我們去到什么頁面。

將你的404頁面做的別致和有用–從GitHub學到的

在所有的404頁面中,GitHub的讓我最生氣。

你問為什么?

它看起來很酷,有相當不錯的視覺效果。有些人就是看什么都不順眼。

嗯,事實上是:

https://github.com/dbalatero/typhoeus 在50個左右的帖子里被引用,而它已經轉移到https://github.com/typhoeus。GitHub沒有使用任何的跳轉,僅僅將你轉到404頁面。

對url采用最基本的解析以確定真正想要去的頁面是非常小的開銷:

對不起,我們沒有找到你鏈接到的頁面。用戶經常會改變賬戶導致鏈接失效。”typhoeus”庫也存在于:https://github.com/typhoeus

是的,沒有任何信息告訴我我犯了個錯誤。GitHub應該讓404頁面變得更有用。對我來說GitHub 404頁面最讓我氣憤地是我花了很多力氣而找不到結果。不要給我漂亮的頁面,能提供一些有用的信息嗎。

你可以做多一步,跳轉到他們新的首頁去,我理解賬號是非常有技巧的,但它看起來在GitHub上是多么不可思議的常見錯誤啊。

在Stack Overflow上我們花了很多時間來優化這種情況,例如“你最喜歡的程序員笑話是什么?”,討論區認為這個問題不會持續很久,所以我們盡可能解釋為什么要移除它,以及哪里可以找到它。

Oracle的問題

Oracle收購Sun對Java生態圈來說是個永遠的沉重的打擊。Oracle的任務是重新樹立品牌,重構Java 生態圈,但這是錯誤的引導。大量的文檔都沒有被正確定向。就連最近的在dev.java.net下的所有項目都沒有正確的跳轉頁面。Hudson這個 Java持續集成的服務器曾經使用https://hudson.dev.java.net/ (譯者注:也失效了),Stack Overflow中150個帖子都引用了它。

個人的教訓

href 標題的重要性

在短鏈的世界里,看起來在URI里使用任何合理的標題不再那么被鼓勵了。事實上過去的三年里你訪問的5%的鏈接都失效了。我相信我的博客中也有許多壞鏈。修復壞鏈是個困難的任務,尤其在沒有上下文的情況下,這項任務變得更加困難。

所以我決定為我的鏈接都加上合理的標題。不僅因為能讓搜索引擎更好地搜索結果,也能讓用戶知道受損的圖片下是什么內容,同時在處理壞的勢后能幫我修復它。

超鏈接是很脆弱的

當我們使用Google時,我們從來沒得到404。它確保我們在雜亂無章的網絡中高效的搜索。測試很多的鏈接告訴你現實并沒有那么的好。那么意味著我要避免使用鏈接嗎?當然不是,知道問題的存在能夠幫我思考我寫下的內容。我會避免寫出失去意義的文章。在Stack Overflow我們經常看到如下的回復:

See this blog post over here. 看看這里的文章。

當外部資源鏈接失效的時候,這種答案就沒有了意義。

原文鏈接: samsaffron.com 

編譯:http://blog.jobbole.com/22288/

責任編輯:林師授 來源: 伯樂在線
相關推薦

2016-01-18 10:06:05

編程

2015-06-29 13:47:19

創業創業智慧

2010-08-23 10:30:05

CSS超鏈接

2012-05-22 09:52:03

jQuery

2013-08-19 12:46:27

2024-04-15 12:54:00

ReactVue列表邏輯

2022-02-22 10:40:27

漏洞網絡攻擊

2022-09-13 08:05:47

AlloyDb架構數據庫

2014-08-06 12:29:33

騰訊開放平臺市場

2015-09-24 09:41:04

Amazon云停機云安全教訓

2010-10-18 09:10:57

Google日歷宕機

2015-06-01 06:42:50

開源公司三大教訓

2009-05-26 09:07:50

Windows 7微軟操作系統

2022-03-21 10:21:50

jQuery代碼模式

2010-01-15 18:12:28

VB.NET超鏈接

2014-12-22 10:09:50

工程師

2021-03-09 09:55:02

Vuejs前端代碼

2022-12-12 11:08:07

數字化轉型企業

2024-06-13 15:59:30

2023-11-14 11:18:13

點贊
收藏

51CTO技術棧公眾號

成人一道本在线| 亚洲乱码在线| 一本一道综合狠狠老| 日本精品一区二区| 11024精品一区二区三区日韩| 91日韩欧美| 欧美va亚洲va香蕉在线| 免费成人午夜视频| 国产www.大片在线| 国产精品一区二区久激情瑜伽| 欧美激情视频网| 国产精品成人一区二区三区电影毛片 | 五月天激情在线| 91视频在线观看免费| 国产欧美一区二区| 国产精品19乱码一区二区三区| 一区二区三区日本久久久 | www.com在线观看| 国产一区二区三区成人欧美日韩在线观看 | 国产免费一区二区三区免费视频| 精品动漫3d一区二区三区免费版| 亚洲欧美视频在线| 欧美日韩一区二区区| 亚洲精品一级二级| 一区二区三区在线免费观看| 日韩欧美激情一区二区| 亚洲黄色在线播放| 免费看黄色91| 91成人在线观看国产| 91视频综合网| 欧美最新另类人妖| 亚洲精品www| 成人在线短视频| 成人四虎影院| 欧美日韩在线免费| 国产肉体ⅹxxx137大胆| 日本精品在线| 99在线热播精品免费| 91久久久一线二线三线品牌| 国产一级精品毛片| 男人的天堂亚洲在线| 欧美黑人极品猛少妇色xxxxx| 在线观看免费黄色网址| 亚洲宅男一区| 亚洲国产91色在线| 国产亚洲色婷婷久久| 欧美v亚洲v综合v国产v仙踪林| 欧美日韩激情视频8区| 国产精品videossex国产高清 | 中文字幕免费国产精品| 日本丰满少妇裸体自慰| 国产精品丝袜在线播放| 日韩免费高清视频| 久久久精品视频国产| 青青伊人久久| 欧美视频第二页| 免费看a级黄色片| 午夜精品成人av| 一本在线高清不卡dvd| 红桃av在线播放| 国产伦精品一区二区三区视频金莲| 午夜婷婷国产麻豆精品| 性欧美大战久久久久久久| 男男gaygays亚洲| 一区二区欧美精品| 4444亚洲人成无码网在线观看| 国产成人l区| 亚洲乱码国产乱码精品精98午夜 | 国产区精品视频| 亚洲天堂手机在线| 国产综合色产在线精品| 亚洲japanese制服美女| 国产av一区二区三区精品| 国产一区二区三区香蕉| 91一区二区三区| 亚洲第一成年人网站| eeuss国产一区二区三区| 韩国成人动漫在线观看| 亚洲区小说区图片区| 久久综合九色欧美综合狠狠| 日本高清一区| 免费在线观看av网站| 亚洲伦理在线精品| 你真棒插曲来救救我在线观看| 91福利在线免费| 色综合一个色综合| 成人亚洲精品777777大片| 996久久国产精品线观看| 69精品人人人人| 久久久男人的天堂| 特黄特色欧美大片| 神马国产精品影院av| 欧美国产日韩在线观看成人| 影音先锋在线一区| 欧美最猛黑人xxxx黑人猛叫黄| 波多野结衣理论片| 国内成人免费视频| 精品无人区一区二区三区| 99riav在线| 亚洲高清中文字幕| 国产嫩草在线观看| h视频久久久| 国产亚洲精品一区二555| 乱h高h女3p含苞待放| 亚洲视频福利| 国产成人精品午夜| 亚洲成熟女性毛茸茸| 久久精品人人做| 丰满人妻一区二区三区53号| 亚洲欧美se| 91精品国产91久久综合桃花| 亚洲第一黄色网址| 99热国内精品永久免费观看| 97视频在线观看免费| 亚洲天堂中文网| 97精品超碰一区二区三区| 一区精品视频| 小早川怜子影音先锋在线观看| 制服丝袜中文字幕亚洲| 欧美成人午夜精品免费| 欧美全黄视频| 国产欧美一区二区三区久久 | 国产亚洲欧美视频| 国产大片中文字幕| 国产资源在线一区| 日韩av图片| 日本在线啊啊| 欧美刺激午夜性久久久久久久| 久久久久亚洲av无码a片| 亚洲精品裸体| av观看久久| 二区三区在线观看| 欧美色区777第一页| 在线观看国产网站| 亚洲国产激情| 成人av免费电影| 精品176二区| 欧美日韩在线不卡| 久久精品老司机| av成人天堂| 成人xxxxx色| av网站免费在线观看| 精品视频一区三区九区| 人人妻人人藻人人爽欧美一区| 精品成人在线| 国产乱子伦精品| 欧美人动性xxxxz0oz| 欧美电影一区二区三区| 久久午夜精品视频| 日韩电影一区二区三区四区| 欧美精品亚洲精品| 忘忧草在线影院两性视频| 欧美成人精品福利| 欧美日韩人妻精品一区二区三区| 久久99国产精品免费网站| 日韩一区不卡| xxxxx.日韩| 综合国产在线观看| 中文字幕二区三区| 国产精品免费久久久久| 亚洲综合av在线播放| 999国产精品| 成人乱人伦精品视频在线观看| 黄色软件在线| 欧美日韩视频第一区| 精品无码一区二区三区蜜臀| 精品一区二区在线视频| 狠狠噜天天噜日日噜| 99re8这里有精品热视频免费| 九九精品视频在线观看| 东京干手机福利视频| 性感美女极品91精品| 这里只有精品在线观看视频| 亚洲资源av| 视频在线99re| 国产人与zoxxxx另类91| 久久久久久久999精品视频| 三级黄视频在线观看| 色素色在线综合| 日韩黄色中文字幕| 国产乱子伦一区二区三区国色天香| 日本精品福利视频| 三级小说欧洲区亚洲区| 国产成人拍精品视频午夜网站| 午夜免费福利在线观看| 日韩欧美二区三区| 国产无遮挡呻吟娇喘视频| 中文字幕高清一区| 四虎国产精品免费| 亚洲女人av| 亚洲蜜桃在线| 1313精品午夜理伦电影| 欧美在线xxx| 黄色免费网站在线| 日韩禁在线播放| 国产又大又长又粗| 图片区小说区区亚洲影院| 黄色av免费播放| 国产99久久久久| 搡女人真爽免费午夜网站| 欧美成人亚洲| 日本在线播放一区| 9l视频自拍九色9l视频成人| 日韩美女在线观看一区| 色爱综合区网| 伊人av综合网| 四季av日韩精品一区| 3d成人h动漫网站入口| 国产伦精品一区二区三区视频网站 | 成人黄色网免费| 欧美男男tv网站在线播放| 久久激情视频免费观看| 完全免费av在线播放| 一区二区在线免费观看| 久操视频在线观看免费| 成人在线视频一区二区| 中文字幕第88页| 一本久久综合| 中文字幕乱码免费| 欧美日韩中文一区二区| 激情视频一区二区| 亚洲日本视频在线| 国产欧美一区二区三区四区| 老司机成人影院| 性欧美激情精品| 宅男在线观看免费高清网站| 在线看欧美日韩| 青青国产在线| 亚洲第一天堂av| 精品人妻无码一区二区色欲产成人| 欧美性猛交xxxxxx富婆| 久久久久99精品成人片三人毛片| 亚洲综合在线第一页| 国产日产精品一区二区三区的介绍| 久久久久久久性| 国产chinese中国hdxxxx| 国产福利电影一区二区三区| 91精品无人成人www| 天堂成人免费av电影一区| 一区二区传媒有限公司| 亚洲欧美亚洲| 日韩中文字幕亚洲精品欧美| 欧美激情理论| 一区二区三区视频| 色婷婷色综合| 亚洲a∨一区二区三区| 成人免费在线播放| 日韩.欧美.亚洲| 国产免费久久| 午夜视频久久久| 欧美日韩性在线观看| 日产国产精品精品a∨ | 尤物国产精品| 91精品国产自产拍在线观看蜜| 亚洲一区二区自拍偷拍| 成人高清电影网站| 亚洲精品高清视频| 一区二区三区日本久久久| 欧美高清性xxxxhd| 国产一区二区三区电影在线观看| 欧美日韩电影一区二区| 自拍偷拍欧美一区| 日韩免费三级| 日产精品一区二区| 中文字幕一区二区中文字幕| 亚洲精品网址| 老司机激情视频| 日韩午夜高潮| 国产a级片免费观看| 日韩精品亚洲专区| 中文字幕在线观看日| 国产麻豆91精品| 国产精品嫩草av| 国产亚洲一二三区| 黄色录像二级片| 亚洲国产日韩综合久久精品| 草久视频在线观看| 91成人看片片| 国产免费不卡视频| 亚洲国产精品字幕| 玖玖综合伊人| 久久网福利资源网站| 啪啪免费视频一区| 91精品国产91久久久久福利| 免费欧美电影| 亚洲永久免费观看| 欧美自拍视频| 亚洲一区三区电影在线观看| 欧美日韩精品| 黑森林福利视频导航| 激情欧美一区二区| 少妇激情一区二区三区视频| 国产视频视频一区| 中文字幕手机在线观看| 狠狠色噜噜狠狠狠狠97| 亚洲图片视频小说| 亚洲精品720p| 尤物在线视频| 136fldh精品导航福利| 亚洲精品大全| 久久av一区二区三区漫画| 欧美日韩中文字幕一区二区三区 | 国产亚洲综合精品| 久久久久久久久久一区| 91丨九色丨蝌蚪丨老版| 国产真实乱在线更新| 精品国产户外野外| 99久久一区二区| 亚洲少妇激情视频| xxxx视频在线| 成人免费在线网址| 久久99蜜桃| 日本香蕉视频在线观看| 奇米色一区二区三区四区| 波多野结衣一二三区| 中文字幕色av一区二区三区| 国产综合精品视频| 日韩免费性生活视频播放| 99免在线观看免费视频高清| 38少妇精品导航| 97久久综合区小说区图片区| 亚洲精品日韩精品| 久久精品官网| 久久精品女同亚洲女同13| 亚洲视频免费在线观看| 天干夜夜爽爽日日日日| 亚洲福利在线看| 色爱综合区网| 亚洲自拍偷拍第一页| 欧美成人milf| 日本久久精品一区二区| 成人高清视频免费观看| 久久精品黄色片| 3atv在线一区二区三区| 免费a级毛片在线播放| 国产精品99导航| 亚洲第一福利专区| 欧美亚洲日本一区二区三区| 国产a级毛片一区| 九九热精品免费视频| 51精品秘密在线观看| 在线观看h片| 国产精品免费在线免费 | 亚洲国产日韩欧美综合久久| 欧美aaa免费| 51国产成人精品午夜福中文下载| 99成人超碰| 国产999免费视频| 综合激情成人伊人| 国产精品人人爽| 久久精品国产精品| 国产精品一级在线观看| www国产免费| 国产精品888| 青青操国产视频| 欧美成人女星排名| 高清毛片在线观看| 九九九久久久| 羞羞答答国产精品www一本| 草草影院第一页| 色噜噜狠狠成人中文综合| 黄色在线观看网| 国产精品亚洲网站| 在线看片不卡| 国产一精品一aⅴ一免费| 亚洲不卡av一区二区三区| 天堂成人在线观看| 国产97免费视| 日韩欧美网址| 国产精品欧美性爱| 亚洲v日本v欧美v久久精品| 你懂的在线观看| 国产精品美女av| 亚洲美女视频| 日韩aaaaa| 欧美在线观看一二区| 麻豆网站在线观看| 国产精品久久国产精品| 国产精品视频久久一区| 国产又黄又粗的视频| 欧美一卡2卡3卡4卡| 国产剧情av在线播放| 日韩电影天堂视频一区二区| 久久se精品一区二区| 久久精品一区二区三| 国产偷亚洲偷欧美偷精品| 欧美成人高清视频在线观看| 亚洲精品少妇一区二区| 97精品超碰一区二区三区| 国产一区二区小视频| 欧美激情xxxx| 欧美精品羞羞答答| wwwxxxx在线观看| 色综合天天综合网国产成人综合天| 暖暖日本在线观看| 国产在线播放一区二区| 麻豆精品蜜桃视频网站| 日本在线视频免费观看| 在线观看久久久久久| 国产精品男女|