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

HTTP規范中的那些暗坑

開發 前端
本文總結了 HTTP 規范中常見的幾個暗坑,希望大家開發中有意識的規避它們,提升開發體驗。

HTTP 協議可以說是開發者最熟悉的一個網絡協議,「簡單易懂」和「易于擴展」兩個特點讓它成為應用最廣泛的應用層協議。

雖然有諸多的優點,但是在協議定義時因為諸多的博弈和限制,還是隱藏了不少暗坑,讓人一不小心就會陷入其中。本文總結了 HTTP 規范中常見的幾個暗坑,希望大家開發中有意識的規避它們,提升開發體驗。

1.Referer

HTTP 標準把 Referrer 寫成 Referer(少些了一個 r),可以說是計算機歷史上最著名的一個錯別字了。

Referer 的主要作用是攜帶當前請求的來源地址,常用在反爬蟲和防盜鏈上。前段時間鬧的沸沸揚揚的新浪圖床掛圖事件,就是因為新浪圖床突然開始檢查 HTTP Referer 頭,非新浪域名就不返回圖片,導致很多蹭流量的中小博客圖都掛了。

雖然 HTTP 標準里把 Referer 寫錯了,但是其它可以控制 Referer 的標準并沒有將錯就錯。

例如禁止網頁自動攜帶 Referer 頭的 <meta> 標簽,相關關鍵字拼寫就是正確的: 

  1. <!-- 全局禁止發送 referrer -->  
  2. <meta name="referrer" content="no-referrer" /> 

還有一個值得注意的是瀏覽器的網絡請求。從安全性和穩定性上考慮,Referer 等請求頭在網絡請求時,只能由瀏覽器控制,不能直接操作,我們只能通過一些屬性進行控制。比如說 Fetch 函數,我們可以通過 referrer 和 referrerPolicy 控制,而它們的拼寫也是正確的: 

  1. fetch('/page', {  
  2.   headers: {  
  3.     "Content-Type": "text/plain;charset=UTF-8"  
  4.   },  
  5.   referrer: "https://demo.com/anotherpage", // <-  
  6.   referrerPolicy: "no-referrer-when-downgrade", // <-  
  7. }); 

一句話總結:

凡是涉及到 Referrer 的,除了 HTTP 字段是錯的,瀏覽器的相關配置字段拼寫都是正確的。

二.「靈異」的空格

1.%20 還是 + ?

這個是個史詩級的大坑,我曾經被這個協議沖突坑了一天。

開始講解前先看個小測試,在瀏覽器里輸入 blank test( blank 和 test 間有個空格),我們看看瀏覽器如何處理的:

從動圖可以看出瀏覽器把空格解析為一個加號「+」。

是不是感覺有些奇怪?我們再做個測試,用瀏覽器提供的幾個函數試一下: 

  1. encodeURIComponent("blank test") // "blank%20test"  
  2. encodeURI("q=blank test")        // "q=blank%20test"  
  3. new URLSearchParams("q=blank test").toString() // "q=blank+test" 

代碼是不會說謊的,其實上面的結果都是正確的,encode 結果不一樣,是因為 URI 規范和 W3C 規范沖突了,才會搞出這種讓人疑惑的烏龍事件。

2.沖突的協議

我們首先看看 URI 中的保留字,這些保留字不參與編碼。保留字符一共有兩大類:

  •  gen-delims:: / ? # [ ] @
  •  sub-delims:! $ & ' ( ) * + , ; =

URI 的編碼規則也很簡單,先把非限定范圍的字符轉為 16 進制,然后前面加百分號。

空格這種不安全字符轉為十六進制就是 0x20,前面再加上百分號 % 就是 %20:

所以這時候再看 encodeURIComponent 和 encodeURI 的編碼結果,就是完全正確的。

既然空格轉為%20 是正確的,那轉為 + 是怎么回事?這時候我們就要了解一下 HTML form 表單的歷史。

早期的網頁沒有 AJAX 的時候,提交數據都是通過 HTML 的 form 表單。form 表單的提交方法可以用 GET 也可以用 POST,大家可以在 MDN form 詞條上測試:

經過測試我們可以看出表單提交的內容中,空格都是轉為加號的,這種編碼類型就是 application/x-www-form-urlencoded,在 WHATWG 規范里是這樣定義的:

到這里基本上就破案了,URLSearchParams 做 encode 的時候,就按這個規范來的。我找到了 URLSearchParams 的 Polyfill 代碼,里面就做了 %20 到 + 的映射: 

  1. replace = {  
  2.     '!': '%21',  
  3.     "'": '%27',  
  4.     '(': '%28',  
  5.     ')': '%29',  
  6.     '~': '%7E',  
  7.     '%20': '+', // <= 就是這個  
  8.     '%00': '\x00'  

規范里對這個編碼類型還有解釋說明:

The application/x-www-form-urlencoded format is in many ways an aberrant monstrosity, the result of many years of implementation accidents and compromises leading to a set of requirements necessary for interoperability, but in no way representing good design practices. In particular, readers are cautioned to pay close attention to the twisted details involving repeated (and in some cases nested) conversions between character encodings and byte sequences. Unfortunately the format is in widespread use due to the prevalence of HTML forms.

這種編碼方式就不是個好的設計,不幸的是隨著 HTML form 表單的普及,這種格式已經推廣開了

其實上面一大段句話就是一個意思:這玩意兒設計的就是 💩,但積重難返,大家還是忍一下吧

3.一句話總結

  •  URI 規范里,空格 encode 為 %20, application/x-www-form-urlencoded 格式里,空格 encode 為 +
  •  實際業務開發時,最好使用業內成熟的 HTTP 請求庫封裝請求,這些雜活兒累活兒框架都干了;
  •  如果非要使用原生 AJAX 提交 application/x-www-form-urlencoded 格式的數據,不要手動拼接參數,要用 URLSearchParams 處理數據,這樣可以避免各種惡心的編碼沖突。

三.X-Forwarded-For 拿到的就是真實 IP 嗎?

1.故事

在這個小節開始前,我先講一個開發中的小故事,可以加深一下大家對這個字段的理解。

前段時間要做一個和風控相關的需求,需要拿到用戶的 IP,開發后灰度了一小部分用戶,測試發現后臺日志里灰度的用戶 IP 全是異常的,哪有這么巧的事情。隨后測試發過來幾個異常 IP: 

  1. 10.148.2.122  
  2. 10.135.2.38  
  3. 10.149.12.33  
  4. ... 

一看 IP 特征我就明白了,這幾個 IP 都是 10 開頭的,屬于 A 類 IP 的私有 IP 范圍(10.0.0.0-10.255.255.255),后端拿到的肯定是代理服務器的 IP,而不是用戶的真實 IP。

2.原理

現在有些規模的網站基本都不是單點 Server 了,為了應對更高的流量和更靈活的架構,應用服務一般都是隱藏在代理服務器之后的,比如說 Nginx。

加入接入層后,我們就能比較容易的實現多臺服務器的負載均衡和服務升級,當然還有其他的好處,比如說更好的內容緩存和安全防護,不過這些不是本文的重點就不展開了。

網站加入代理服務器后,除了上面的幾個優點,同時引入了一些新的問題。比如說之前的單點 Server,服務器是可以直接拿到用戶的 IP 的,加入代理層后,如上圖所示,(應用)原始服務器拿到的是代理服務器的 IP,我前面講的故事的問題就出在這里。

Web 開發這么成熟的領域,肯定是有現成的解決辦法的,那就是 X-Forwarded-For 請求頭。

X-Forwarded-For 是一個事實標準,雖然沒有寫入 HTTP RFC 規范里,從普及程度上看其實可以算 HTTP 規范了。

這個標準是這樣定義的,每次代理服務器轉發請求到下一個服務器時,要把代理服務器的 IP 寫入 X-Forwarded-For 中,這樣在最末端的應用服務收到請求時,就會得到一個 IP 列表: 

  1. X-Forwarded-For: client, proxy1, proxy2 

因為 IP 是一個一個依次 push 進去的,那么第一個 IP 就是用戶的真實 IP,取來用就好了。

但是,事實有這么簡單嗎?

3.攻擊

從安全的角度上考慮,整個系統最不安全的就是人,用戶端都是最好攻破最好偽造的。有些用戶就開始鉆協議的漏洞:X-Forwarded-For 是代理服務器添加的,如果我一開始請求的 Header 頭里就加了 X-Forwarded-For ,不就騙過服務器了嗎?

1. 首先從客戶端發出請求,帶有 X-Forwarded-For 請求頭,里面寫一個偽造的 IP: 

  1. X-Forwarded-For: fakeIP 

2. 服務端第一層代理服務收到請求,發現已經有 X-Forwarded-For,誤把這個請求當成代理服務器,于是向這個字段追加了客戶端的真實 IP: 

  1. X-Forwarded-For: fakeIP, client 

3. 經過幾層代理后,最終的服務器拿到的 Header 是這樣的: 

  1. X-Forwarded-For: fakeIP, client, proxy1, proxy2 

要是按照取 X-Forwarded-For 第一個 IP 的思路,你就著了攻擊者的道了,你拿到的是 fakeIP,而不是 client IP。

4.破招

服務端如何破招?上面三個步驟:

  •  第一步是客戶端造假,服務器無法介入
  •  第二步是代理服務器,可控,可防范
  •  第三步是應用服務器,可控,可防范

第二步的破招我拿 Nginx 服務器舉例。

我們在最外層的 Nginx 上,對 X-Forwarded-For 的配置如下:

  1. proxy_set_header X-Forwarded-For $remote_addr; 

什么意思呢?就是最外層代理服務器不信任客戶端的 X-Forwarded-For 輸入,直接覆蓋,而不是追加。

非最外層的 Nginx 服務器,我們配置: 

  1. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 

$proxy_add_x_forwarded_for 就是追加 IP 的意思。通過這招,就可以破除用戶端的偽造辦法。

第三步的破招思路也很容易,正常思路我們是取X-Forwarded-For 最左側的 IP,這次我們反其道而行之,從右邊數,減去代理服務器的數目,那么剩下的 IP 里,最右邊的就是真實 IP。 

  1. X-Forwarded-For: fakeIP, client, proxy1, proxy2 

比如說我們已知代理服務有兩層,從右向左數,把 proxy1 和 proxy2 去掉,剩下的 IP 列表最右邊的就是真實 IP。

相關思路和代碼實現可參考 Egg.js 前置代理模式

5.一句話總結總結

通過 X-Forwarded-For 獲取用戶真實 IP 時,最好不要取第一個 IP,以防止用戶偽造 IP。

四.略顯混亂的分隔符

1.HTTP 標準

HTTP 請求頭字段如果涉及到多個 value 時,一般來說每個 value 間是用逗號「,」分隔的,就連非 RFC 標準的 X-Forwarded-For,也是用逗號分隔 value 的: 

  1. Accept-Encoding: gzip, deflate, br  
  2. cache-control: public, max-age=604800s-maxage=43200  
  3. X-Forwarded-For: fakeIP, client, proxy1, proxy2 

因為一開始用逗號分隔 value,后面想再用一個字段修飾 value 時,分隔符就變成了分號「;」,最典型的請求頭就是 Accept 了: 

  1. //  q=0.9 修飾的是 application/xml,雖然它們之間用分號分隔  
  2. Accept: text/html, application/xml;q=0.9, */*;q=0.8   

雖然 HTTP 協議易于閱讀,但是這個分隔符用的還是很不符合常識的。按常理來說,分號的斷句語氣是強于逗號的,但是在 HTTP 內容協商的相關字段里卻是反過來的。這里的定義可以看 RFC 7231,寫的還是比較清楚的。

2.Cookie 標準

和常規認識不同,Cookie 其實不算 HTTP 標準,定義 Cookie 的規范是 RFC 6265,所以分隔符規則也不一樣了。規范里定義的 Cookie 語法規則是這樣的: 

  1. cookie-header = "Cookie:" OWS cookie-string OWS  
  2. cookiecookie-string = cookie-pair *( ";" SP cookie-pair ) 

多個 cookie 之間是用分號「;」分隔的,而不是逗號「,」。我隨便扒了個網站的 cookie,可見是用分號分隔的,這里需要特別注意一下:

3.一句話總結

  •  大部分 HTTP 字段的 value 分隔符是逗號「,」
  •  Cookie 不屬于 HTTP 標準,分隔符是分號「;」

五、文章推薦

下面我要推薦我的幾篇文章:

    一篇介紹了 webpack 中最易混淆的 5 個知識點,掘金快 800 贊了,一文講清楚 Webpack 中那些長得像卻意義不同的概念

    一篇詳細介紹了 webpack dll 是個什么東西,并且給出了 2 條最佳實踐,擺脫繁瑣的 dll 配置

    React Native 性能優化指南從渲染層的角度分析了 RN 性能優化的 6 個點,并以圖文形式講解了 FlatList 的實現原理

    Web Scraper——輕量數據爬取利器 介紹了一個小巧的瀏覽器爬蟲插件,可以實現簡單的數據爬取功能 

 

責任編輯:龐桂玉 來源: segmentfault
相關推薦

2022-05-15 08:13:50

Mysql數據庫Mycat

2015-04-13 17:39:11

移動IM開發

2017-08-04 17:07:32

JavaArraysList

2020-04-21 15:18:11

財務信息化

2015-03-12 09:51:09

CoreDataiCloud

2017-07-19 14:26:01

前端JavaScriptDOM

2021-09-07 14:35:48

DevSecOps開源項目

2018-07-30 16:18:51

容災備份

2013-04-12 15:59:33

2017-07-06 11:41:48

CIOIT技術

2017-03-31 10:27:08

推送服務移動

2011-12-02 10:32:23

Java

2017-02-23 08:08:58

2013-07-17 10:11:47

云計算

2011-12-22 19:57:38

PhoneGap

2018-02-06 08:36:02

簡歷程序員面試

2017-08-28 15:30:49

Android編碼器編碼

2011-12-15 09:45:21

PhoneGap

2016-12-28 13:19:08

Android開發坑和小技巧

2019-09-10 12:59:45

點贊
收藏

51CTO技術棧公眾號

国产精品一品视频| 国产乱码精品一区二区三区四区| 亚洲精品福利视频网站| 国产98在线|日韩| 亚洲AV无码成人精品区东京热| 国产99精品| 日韩精品最新网址| 欧美极品欧美精品欧美图片| 麻豆网站在线免费观看| 波波电影院一区二区三区| 国产精品www网站| 欧美成人精品一区二区免费看片| 日韩高清成人在线| 欧美日韩精品一区二区天天拍小说 | 成人动漫在线一区| 国产精品com| 久久高清免费视频| 日韩理论片av| 亚洲精品综合精品自拍| 国产成人精品综合久久久久99| 成人片免费看| 一区二区三区蜜桃网| 水蜜桃一区二区| 婷婷在线观看视频| 久久99精品久久久久久国产越南| 欧美在线亚洲在线| 久久久香蕉视频| 欧美电影三区| 欧美国产美女| 亚洲精品免费电影| 日本不卡在线播放| 香港一级纯黄大片| 国产精品123| 成人精品福利视频| 毛片在线免费播放| 亚洲欧美日本日韩| 久久久久久午夜| 久久久久亚洲av片无码| 波多野结衣在线播放一区| 亚洲国产成人精品一区二区| 真实乱偷全部视频| 日韩精品第二页| 在线看国产一区二区| 日本免费不卡一区二区| 欧美理论电影| 亚洲一区二区视频| 三上悠亚免费在线观看| 男人天堂久久久| 欧美国产视频在线| 婷婷久久五月天| 国产小视频免费在线观看| wwwwww.欧美系列| 国产精品久久国产精品| www.久久色| 国产一区二区三区在线观看免费| 国产日韩欧美中文| 亚洲怡红院av| 久久国产人妖系列| 国产精选久久久久久| 欧美 亚洲 另类 激情 另类| 日韩和欧美一区二区三区| 日本午夜人人精品| 色老头在线视频| 日韩不卡手机在线v区| 国产精品a久久久久久| 最新中文字幕第一页| 美女看a上一区| 91亚洲国产精品| xxxx国产精品| jlzzjlzz亚洲日本少妇| 欧美美乳视频网站在线观看| 国产中文字幕在线观看| 国产精品丝袜一区| 久久久久亚洲av无码专区喷水| 99在线视频观看| 亚洲不卡av一区二区三区| 日韩av资源在线| 国产一区高清| 日韩欧美成人激情| 野战少妇38p| 免费成人高清在线视频theav| 亚洲欧美视频在线| 少妇无套高潮一二三区| 欧美电影一二区| 久久久亚洲精品视频| 羞羞影院体验区| 蜜臀av性久久久久蜜臀aⅴ | 蜜臀久久99精品久久久无需会员| 久久高清无码视频| 亚洲一区二区三区高清| 国产精品偷伦免费视频观看的| 国产熟女一区二区三区五月婷 | 毛片在线导航| 日韩欧美在线观看| 日本在线一二三区| 国产精东传媒成人av电影| 国产亚洲综合久久| 久久精品这里只有精品| 天堂午夜影视日韩欧美一区二区| 成人欧美一区二区三区在线| 天天躁日日躁狠狠躁喷水| 中文字幕乱码日本亚洲一区二区 | 国语精品中文字幕| 阿v免费在线观看| 亚洲一区二区三区爽爽爽爽爽 | 亚洲精品中文字幕女同| 亚洲欧美综合7777色婷婷| 亚洲国产二区| 成人激情av在线| 日本午夜在线视频| 一区二区三区免费网站| 日本久久精品一区二区| 精品三级在线观看视频| 日韩一区二区福利| 国产精品人人人人| 国产不卡在线播放| 一级二级三级欧美| 另类图片综合电影| 亚洲国产精彩中文乱码av| 久久国产精品国语对白| 青青草原综合久久大伊人精品优势| 国产伦一区二区三区色一情| www在线免费观看视频| 欧美性大战xxxxx久久久| 亚洲观看黄色网| 黄色日韩精品| 5566中文字幕一区二区| 91涩漫在线观看| 在线观看三级视频欧美| 亚洲熟妇一区二区三区| 亚洲福利专区| 国产精品久久九九| 天使と恶魔の榨精在线播放| 在线综合亚洲欧美在线视频| 天天舔天天操天天干| 另类激情亚洲| 欧美一区亚洲二区| 樱桃视频成人在线观看| 亚洲国模精品一区| 欧美一二三区视频| 不卡影院免费观看| 69sex久久精品国产麻豆| 一区二区三区免费在线看| 欧美成aaa人片免费看| 国产裸体永久免费无遮挡| 1000部国产精品成人观看| 亚洲 欧美 日韩系列| 成人羞羞视频在线看网址| 国产精品久久久久久久久久久不卡 | 久久艹国产精品| 伊人久久大香线蕉av超碰| 色综合久综合久久综合久鬼88| 国产99对白在线播放| 亚洲人xxxx| 在线观看一区二区三区视频| 欧美另类女人| 国产综合第一页| 伊人成综合网站| 亚洲片在线资源| 性色av一区二区三区四区| 国产精品久久久久aaaa樱花 | 精品91福利视频| 欧美精品中文字幕一区| 国产综合视频在线| 岛国视频午夜一区免费在线观看| 日本高清www| 奇米777欧美一区二区| 懂色av一区二区三区四区五区| 免费一区二区三区在线视频| 欧美人在线视频| 日本黄色不卡视频| 色嗨嗨av一区二区三区| 黄色录像一级片| 国产成人av一区二区三区在线| 欧美激情视频免费看| 欧美aaaaa级| 国产精品成人一区二区| 黄色成人影院| 亚洲开心激情网| 一级黄色a视频| 一区二区三区美女| 婷婷色一区二区三区 | 欧美一级片黄色| 日韩经典中文字幕一区| 最新中文字幕久久| 日韩欧美天堂| 91精品国产综合久久香蕉922 | 天天操天天色综合| 欧美性受xxxx黑人| 国产.精品.日韩.另类.中文.在线.播放| 波多野结衣家庭教师在线| 99热国内精品| 精品一区二区三区国产| 91p九色成人| 97成人超碰免| 久久综合网导航| 国产视频综合在线| 国产精品国产精品国产专区| 精品日本高清在线播放 | a√资源在线| 精品成人a区在线观看| 日本丰满少妇做爰爽爽| 亚洲自拍偷拍欧美| 波多野结衣喷潮| 久久综合九色综合久久久精品综合| 久国产精品视频| 久久国产毛片| 黄页免费在线观看视频| 久久精品青草| 色播五月综合| 欧美高清视频看片在线观看 | 一本色道久久亚洲综合精品蜜桃| 亚洲精品一二| 久久久国内精品| 99久久99视频只有精品| 欧美日韩精品免费观看| 国产精品美女在线观看直播| 91麻豆国产精品| 免费成人毛片| 国产91精品不卡视频| 精精国产xxxx视频在线中文版 | 99精品久久久久| 国产精品国产自产拍高清av王其| 亚洲一区二区三区无码久久| 高清国产一区二区三区| 久久久久亚洲av片无码v| 精品一区精品二区高清| 国产高清视频网站| 日韩成人dvd| 在线观看高清免费视频| 久久尤物视频| 国产黄色特级片| 亚洲在线国产日韩欧美| 少妇无码av无码专区在线观看| 好看的日韩av电影| 免费极品av一视觉盛宴| 午夜天堂精品久久久久| 三级在线免费观看| 香蕉久久网站| 中文字幕第50页| 欧美一区二区三区另类| 国产制服91一区二区三区制服| 91精品在线观看国产| 色爽爽爽爽爽爽爽爽| 午夜精品一区二区三区国产| 中文字幕在线亚洲精品| 99久久.com| 9191国产视频| 国产一区亚洲| 国产 日韩 亚洲 欧美| 国产亚洲精品bv在线观看| 337p粉嫩大胆噜噜噜鲁| 男女av一区三区二区色多| 欧美三级午夜理伦三级| 日本aⅴ免费视频一区二区三区 | 波多野结衣视频一区| 国产制服丝袜在线| 久久久91精品国产一区二区精品 | 国产国产精品人在线视| 国产福利91精品一区二区| 成人免费自拍视频| 999国产精品一区| 玖玖玖精品中文字幕| 国产在线观看91一区二区三区 | 日本一卡二卡在线播放| 国产精品久久一卡二卡| 亚洲国产精品免费在线观看| 亚洲午夜羞羞片| 国产污视频网站| 欧美另类videos死尸| 亚洲va欧美va| 日韩久久午夜影院| 色多多视频在线观看| 九九热这里只有精品免费看| 亚洲啊v在线| www.成人在线| 亚洲精品9999| 欧美深夜福利| 人人干人人视频| 国产精品一区二区在线播放 | 国产欧美一区二区三区在线看蜜臀| 国产精品理论在线| 亚洲一区二区黄色| 亚洲黄网在线观看| 日韩一二三区不卡| 视频在线观看你懂的| 中文字幕一区二区三区电影| 女同一区二区免费aⅴ| 日本中文字幕久久看| 国产在线一区不卡| 麻豆精品视频| 欧美激情1区| 欧美精品aaaa| 成人免费精品视频| 国产精品成人无码免费| 亚洲一区二区三区自拍| 在线观看视频二区| 亚洲国内精品视频| av黄色在线| 国产成人综合精品| 国产三级精品三级在线观看国产| 色女人综合av| 国产精品久久久免费| 91亚洲一区二区| 欧美激情在线免费观看| 香蕉免费毛片视频| 日韩欧美亚洲一区二区| 国产午夜精品一区理论片| 韩剧1988免费观看全集| 99精品视频在线免费播放| 日本在线播放不卡| 99精品视频网| 少妇极品熟妇人妻无码| 中文字幕综合网| 97人妻精品视频一区| 日韩精品在线免费播放| av成人 com a| 成人免费在线一区二区三区| 91精品一区二区三区综合在线爱| 麻豆一区二区三区视频| 91蝌蚪porny| 成人免费区一区二区三区| 欧美videossexotv100| gogogogo高清视频在线| 成人福利网站在线观看| 日韩理论电影大全| 992kp快乐看片永久免费网址| 26uuu亚洲综合色| 免费看日韩毛片| 亚洲国产精品成人av| 欧美高清另类hdvideosexjaⅴ| 亚洲一区二区三区sesese| 91亚洲人成网污www| 日日噜噜夜夜狠狠| 国产精品成人免费精品自在线观看| 精品成人无码久久久久久| 亚洲新中文字幕| 91p九色成人| 伊人久久大香线蕉成人综合网| 久久精品国产亚洲高清剧情介绍| 精品熟妇无码av免费久久| 91成人国产精品| sese一区| 成人看片人aa| 欧美福利电影在线观看| 黄页网站在线看| 亚洲福利一区二区三区| 欧性猛交ⅹxxx乱大交| 97久久国产精品| 亚洲人亚洲人色久| 国产视频在线视频| 中文字幕免费不卡在线| 国产精品乱码久久久| 欧美黄色www| 欧美1区2区3区4区| 精品少妇无遮挡毛片| 国产精品乱码人人做人人爱| 91精品国产乱码久久久| 欧美成人久久久| 成人在线超碰| 日韩毛片在线免费看| 国产精品入口麻豆九色| 国产精品视频久久久久久| 蜜臀久久99精品久久久久久宅男 | 亚洲精品欧美精品| 激情综合色播五月| 精品无码人妻一区二区三| 日韩精品在线免费观看视频| 国产精品毛片久久久久久久久久99999999 | 欧洲成人一区二区三区| 热re91久久精品国99热蜜臀| 第九色区aⅴ天堂久久香| 日韩视频在线观看一区二区三区| 亚洲黄色av一区| 欧美zzoo| 亚洲精品欧美一区二区三区| 日韩一级网站| 极品久久久久久久| 精品国产欧美一区二区| 日韩网站中文字幕| 97碰在线视频| 日本一区二区三区视频视频| 国产福利小视频| 青草成人免费视频| 亚洲国产精品久久久天堂| 亚洲第九十七页| 日韩一区国产二区欧美三区| 在线能看的av网址| 亚洲啊啊啊啊啊| 中文字幕欧美三区| 日韩在线一区二区三区四区| 国产精品自产拍在线观看| 国产一区日韩欧美| 任我爽在线视频| 日韩电影中文字幕在线观看| www.欧美| 91精品无人成人www| 精品二区三区线观看| 羞羞的视频在线看| 午夜免费电影一区在线观看|