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

使用Headless Chrome進行頁面渲染

開發 開發工具
Headless Chrome仍然存在一定的局限,相較于 Nightmare或Phantom 這樣的工具, Chrome的遠程接口仍然無法提供較好的開發者體驗。

使用 Headless Chrome 進行頁面渲染 從屬于筆者的 Web 開發基礎與工程實踐系列文章,主要介紹了使用 Node.js 利用 Chrome Remote Protocol 遠程控制 Headless Chrome 渲染界面的基礎用法。本文涉及的參考與引用資料統一列舉在這里

近日筆者在為 declarative-crawler 編寫動態頁面的蜘蛛,即在使用 declarative-crawler 爬取知乎美圖 一文中介紹的 HeadlessChromeSpider 時,需要選擇某個無界面瀏覽器以執行 JavaScript 代碼來動態生成頁面。之前筆者往往是使用 PhantomJS 或者 Selenium 執行動態頁面渲染,而在 Chrome 59 之后 Chrome 提供了 Headless 模式,其允許在命令行中使用 Chromium 以及 Blink 渲染引擎提供的完整的現代 Web 平臺特性。需要注意的是,Headless Chrome 仍然存在一定的局限,相較于 Nightmare 或 Phantom 這樣的工具, Chrome 的遠程接口仍然無法提供較好的開發者體驗。我們在下文介紹的代碼示例中也會發現,目前我們仍需要大量的模板代碼進行控制。

安裝與啟動

在 Chrome 安裝完畢后我們可以利用其包體內自帶的命令行工具啟動:

  1. $ chrome --headless --remote-debugging-port=9222 https://chromium.org 

筆者為了部署方便,使用 Docker 鏡像來進行快速部署,如果你本地存在 Docker 環境,可以使用如下命令快速啟動:

  1. docker run -d -p 9222:9222 justinribeiro/chrome-headless 

如果是在 Mac 下本地使用的話我們還可以創建命令別名:

  1. alias chrome="/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome" 
  2. alias chrome-canary="/Applications/Google\ Chrome\ Canary.app/Contents/MacOS/Google\ Chrome\ Canary" 
  3. alias chromium="/Applications/Chromium.app/Contents/MacOS/Chromium" 

如果是在 Ubuntu 環境下我們可以使用 deb 進行安裝:

  1. # Install Google Chrome 
  2. # https://askubuntu.com/questions/79280/how-to-install-chrome-browser-properly-via-command-line 
  3. sudo apt-get install libxss1 libappindicator1 libindicator7 
  4. wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb 
  5. sudo dpkg -i google-chrome*.deb  # Might show "errors", fixed by next line 
  6. sudo apt-get install -f 

chrome 命令行也支持豐富的命令行參數,--dump-dom 參數可以將 document.body.innerHTML 打印到標準輸出中:

  1. chrome --headless --disable-gpu --dump-dom https://www.chromestatus.com/ 

而 --print-to-pdf 標識則會將網頁輸出位 PDF:

  1. chrome --headless --disable-gpu --print-to-pdf https://www.chromestatus.com/ 

初次之外,我們也可以使用 --screenshot 參數來獲取頁面截圖:

  1. chrome --headless --disable-gpu --screenshot https://www.chromestatus.com/ 
  2.  
  3. Size of a standard letterhead. 
  4. chrome --headless --disable-gpu --screenshot --window-size=1280,1696 https://www.chromestatus.com/ 
  5.  
  6. # Nexus 5x 
  7. chrome --headless --disable-gpu --screenshot --window-size=412,732 https://www.chromestatus.com/ 

如果我們需要更復雜的截圖策略,譬如進行完整頁面截圖則需要利用代碼進行遠程控制。

代碼控制

啟動

在上文中我們介紹了如何利用命令行來手動啟動 Chrome,這里我們嘗試使用 Node.js 來啟動 Chrome,最簡單的方式就是使用 child_process 來啟動:

  1. const exec = require('child_process').exec
  2.  
  3. function launchHeadlessChrome(url, callback) { 
  4.   // Assuming MacOSx. 
  5.   const CHROME = '/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome'
  6.   exec(`${CHROME} --headless --disable-gpu --remote-debugging-port=9222 ${url}`, callback); 
  7.  
  8. launchHeadlessChrome('https://www.chromestatus.com', (err, stdout, stderr) => { 
  9.   ... 
  10. }); 

遠程控制

這里我們使用 chrome-remote-interface 來遠程控制 Chrome ,實際上 chrome-remote-interface 是對于 Chrome DevTools Protocol 的遠程封裝,我們可以參考協議文檔了解詳細的功能與參數。使用 npm 安裝完畢之后,我們可以用如下代碼片進行簡單控制:

  1. const CDP = require('chrome-remote-interface'); 
  2.  
  3. CDP((client) => { 
  4.     // extract domains 
  5.     const {Network, Page} = client; 
  6.     // setup handlers 
  7.     Network.requestWillBeSent((params) => { 
  8.         console.log(params.request.url); 
  9.     }); 
  10.     Page.loadEventFired(() => { 
  11.         client.close(); 
  12.     }); 
  13.     // enable events then start! 
  14.     Promise.all([ 
  15.         Network.enable(), 
  16.         Page.enable() 
  17.     ]).then(() => { 
  18.         return Page.navigate({url: 'https://github.com'}); 
  19.     }).catch((err) => { 
  20.         console.error(err); 
  21.         client.close(); 
  22.     }); 
  23. }).on('error', (err) => { 
  24.     // cannot connect to the remote endpoint 
  25.     console.error(err); 
  26. }); 

我們也可以使用 chrome-remote-interface 提供的命令行功能,譬如我們可以在命令行中訪問某個界面并且記錄所有的網絡請求:

  1. $ chrome-remote-interface inspect 
  2. >>> Network.enable() 
  3. { result: {} } 
  4. >>> Network.requestWillBeSent(params => params.request.url) 
  5. 'Network.requestWillBeSent''params => params.request.url' } 
  6. >>> Page.navigate({url: 'https://www.wikipedia.org'}) 
  7. 'Network.requestWillBeSent''https://www.wikipedia.org/' } 
  8. { result: { frameId: '5530.1' } } 
  9. 'Network.requestWillBeSent''https://www.wikipedia.org/portal/wikipedia.org/assets/img/Wikipedia_wordmark.png' } 
  10. 'Network.requestWillBeSent''https://www.wikipedia.org/portal/wikipedia.org/assets/img/Wikipedia-logo-v2.png' } 
  11. 'Network.requestWillBeSent''https://www.wikipedia.org/portal/wikipedia.org/assets/js/index-3b68787aa6.js' } 
  12. 'Network.requestWillBeSent''https://www.wikipedia.org/portal/wikipedia.org/assets/js/gt-ie9-c84bf66d33.js' } 
  13. 'Network.requestWillBeSent''https://www.wikipedia.org/portal/wikipedia.org/assets/img/sprite-bookshelf_icons.png?16ed124e8ca7c5ce9d463e8f99b2064427366360' } 
  14. 'Network.requestWillBeSent''https://www.wikipedia.org/portal/wikipedia.org/assets/img/sprite-project-logos.png?9afc01c5efe0a8fb6512c776955e2ad3eb48fbca' } 

我們也可以直接查看內置的接口文檔:

  1. >>> Page.navigate 
  2. { [Function
  3.   category: 'command'
  4.   parameters: { url: { type: 'string', description: 'URL to navigate the page to.' } }, 
  5.   returns
  6.    [ { name'frameId'
  7.        '$ref''FrameId'
  8.        hidden: true
  9.        description: 'Frame id that will be navigated.' } ], 
  10.   description: 'Navigates current page to the given URL.'
  11.   handlers: [ 'browser''renderer' ] }>>> Page.navigate 
  12. { [Function
  13.   category: 'command'
  14.   parameters: { url: { type: 'string', description: 'URL to navigate the page to.' } }, 
  15.   returns
  16.    [ { name'frameId'
  17.        '$ref''FrameId'
  18.        hidden: true
  19.        description: 'Frame id that will be navigated.' } ], 
  20.   description: 'Navigates current page to the given URL.'
  21.   handlers: [ 'browser''renderer' ] } 

我們在上文中還提到需要以代碼控制瀏覽器進行完整頁面截圖,這里需要利用 Emulation 模塊控制頁面視口縮放:

  1. const CDP = require('chrome-remote-interface'); 
  2. const argv = require('minimist')(process.argv.slice(2)); 
  3. const file = require('fs'); 
  4.  
  5. // CLI Args 
  6. const url = argv.url || 'https://www.google.com'
  7. const format = argv.format === 'jpeg' ? 'jpeg' : 'png'
  8. const viewportWidth = argv.viewportWidth || 1440; 
  9. const viewportHeight = argv.viewportHeight || 900; 
  10. const delay = argv.delay || 0; 
  11. const userAgent = argv.userAgent; 
  12. const fullPage = argv.full
  13.  
  14. // Start the Chrome Debugging Protocol 
  15. CDP(async function(client) { 
  16.   // Extract used DevTools domains. 
  17.   const {DOM, Emulation, Network, Page, Runtime} = client; 
  18.  
  19.   // Enable events on domains we are interested in
  20.   await Page.enable(); 
  21.   await DOM.enable(); 
  22.   await Network.enable(); 
  23.  
  24.   // If user agent override was specified, pass to Network domain 
  25.   if (userAgent) { 
  26.     await Network.setUserAgentOverride({userAgent}); 
  27.   } 
  28.  
  29.   // Set up viewport resolution, etc. 
  30.   const deviceMetrics = { 
  31.     width: viewportWidth, 
  32.     height: viewportHeight, 
  33.     deviceScaleFactor: 0, 
  34.     mobile: false
  35.     fitWindow: false
  36.   }; 
  37.   await Emulation.setDeviceMetricsOverride(deviceMetrics); 
  38.   await Emulation.setVisibleSize({width: viewportWidth, height: viewportHeight}); 
  39.  
  40.   // Navigate to target page 
  41.   await Page.navigate({url}); 
  42.  
  43.   // Wait for page load event to take screenshot 
  44.   Page.loadEventFired(async () => { 
  45.     // If the `full` CLI option was passed, we need to measure the height of 
  46.     // the rendered page and use Emulation.setVisibleSize 
  47.     if (fullPage) { 
  48.       const {root: {nodeId: documentNodeId}} = await DOM.getDocument(); 
  49.       const {nodeId: bodyNodeId} = await DOM.querySelector({ 
  50.         selector: 'body'
  51.         nodeId: documentNodeId, 
  52.       }); 
  53.       const {model: {height}} = await DOM.getBoxModel({nodeId: bodyNodeId}); 
  54.  
  55.       await Emulation.setVisibleSize({width: viewportWidth, height: height}); 
  56.       // This forceViewport call ensures that content outside the viewport is 
  57.       // rendered, otherwise it shows up as grey. Possibly a bug? 
  58.       await Emulation.forceViewport({x: 0, y: 0, scale: 1}); 
  59.     } 
  60.  
  61.     setTimeout(async function() { 
  62.       const screenshot = await Page.captureScreenshot({format}); 
  63.       const buffer = new Buffer(screenshot.data, 'base64'); 
  64.       file.writeFile('output.png', buffer, 'base64'function(err) { 
  65.         if (err) { 
  66.           console.error(err); 
  67.         } else { 
  68.           console.log('Screenshot saved'); 
  69.         } 
  70.         client.close(); 
  71.       }); 
  72.     }, delay); 
  73.   }); 
  74. }).on('error', err => { 
  75.   console.error('Cannot connect to browser:', err); 
  76. }); 

 【本文是51CTO專欄作者“張梓雄 ”的原創文章,如需轉載請通過51CTO與作者聯系】

戳這里,看該作者更多好文

責任編輯:武曉燕 來源: 51CTO專欄
相關推薦

2016-08-12 10:23:28

javascriptChrome前端

2013-07-10 10:24:10

2014-06-18 10:34:41

Android字體渲染器OpenGL ES

2010-09-09 16:36:36

DIV標簽

2023-05-24 16:41:41

React前端

2017-04-12 11:46:46

前端瀏覽器渲染機制

2013-08-27 10:31:05

Headless模式Java SE設計模式

2023-03-22 18:31:10

Android頁面優化

2018-10-22 16:21:50

ChromeHTMLCSS

2018-01-19 14:39:53

瀏覽器頁面優化

2017-04-25 16:20:10

頁面優化滾動優化

2021-01-09 09:23:29

CSS頁面渲染開發

2009-11-23 19:51:48

ibmdwWeb

2017-10-09 10:04:48

JavaScriptChrome DevT調試

2011-07-29 11:04:52

2009-12-25 12:58:52

GoogleChrome OS

2021-07-27 13:08:52

微軟Chrome新提案

2009-11-26 10:51:40

Chrome OS微軟稱IE9

2009-12-02 19:14:07

PHP header

2021-03-31 09:20:00

Chrome瀏覽器測試
點贊
收藏

51CTO技術棧公眾號

gogo在线高清视频| 国产日韩精品suv| 成人在线亚洲| 欧美一级欧美三级| 男人用嘴添女人下身免费视频| 瑟瑟在线观看| 另类小说综合欧美亚洲| 久久91精品国产| 无码国产69精品久久久久同性| 欧美韩国日本| 精品色蜜蜜精品视频在线观看| 日韩性感在线| 日本激情一区二区三区| 蜜臀久久99精品久久久久宅男 | 国产精品你懂得| 久久久久久久久久91| 国产精品一区二区av日韩在线| 538在线一区二区精品国产| 国产视频一视频二| 欧美极品视频| 久久久久99精品一区| 91情侣在线视频| 亚洲一区中文字幕在线| 一本色道久久综合| 欧美成人h版在线观看| 国产免费一区二区三区网站免费| 日韩精品三级| 欧美天天综合网| 国产成人无码一二三区视频| 超碰在线caoporn| 国产精品午夜免费| 免费在线观看一区二区| 丰满少妇被猛烈进入| 精品制服美女丁香| 国产精品久久久久久av| 一级片中文字幕| 日韩一级在线| 欧美精品videos另类日本| 欧美视频www| 日韩理论在线| 在线精品播放av| 日本xxx在线播放| 欧美日韩大片免费观看| 日韩欧美久久一区| 91视频福利网| 91精品网站在线观看| 欧美群妇大交群中文字幕| 欧美日韩大尺度| heyzo高清在线| 亚洲一区在线观看免费| 成人在线免费高清视频| 超碰在线caoporen| 一区二区三区四区高清精品免费观看| 亚洲va久久久噜噜噜久久狠狠 | 在线成人中文字幕| 国产一区二区三区四区五区六区| 亚洲+变态+欧美+另类+精品| 日韩成人中文字幕| 成人影视免费观看| 精品国产不卡| 这里只有精品在线观看| 久久久国产一级片| 羞羞答答成人影院www| xxx欧美精品| 国产成人综合在线视频| 欧美另类视频| 97视频在线观看亚洲| 久久国产精品免费看| 久久午夜视频| 国产欧美精品va在线观看| 91中文字幕在线视频| 国产精品自拍三区| 精品无人区一区二区三区 | 久久久久国产精品麻豆| 日本一区免费观看| 免费av网站在线看| 一级女性全黄久久生活片免费| 免费看污污视频| 国产丝袜精品丝袜| 91九色最新地址| 国产熟人av一二三区| 成人av在线播放| 欧美精品一区二区三区四区 | 国产精品国产三级国产三级人妇| 免费观看黄色大片| 嗯啊主人调教在线播放视频 | 777精品视频| 久久亚洲精品石原莉奈| 久久99国产精品久久| 懂色中文一区二区三区在线视频| 亚洲 国产 欧美 日韩| 国产精品视频在线看| 国产一线二线三线女| 快播电影网址老女人久久| 欧美高清视频不卡网| 波多野结衣一二三区| av一区二区高清| 欧美高清在线视频观看不卡| 天堂网视频在线| 国产一区二区免费视频| 久久久久久九九九九| 成人在线视频亚洲| 日韩欧美中文字幕在线观看| 欧美大片久久久| 日韩欧美黄色| 久久777国产线看观看精品| 成人免费一级片| 成人精品视频.| 亚洲欧洲在线一区| 欧美aa在线观看| 91精品免费在线观看| 麻豆精品免费视频| 亚洲国产精品一区| 91精品综合视频| 毛片网站在线| 天天影视涩香欲综合网| 日本中文字幕在线不卡| 国内精品视频在线观看 | 免费高清视频在线一区| 欧美精品一区二区三区在线播放 | 91欧美激情另类亚洲| 久久精品蜜桃| 福利二区91精品bt7086| 欧美熟妇精品一区二区| 久久中文视频| 国产大片精品免费永久看nba| 欧美性猛交 xxxx| 亚洲欧美色综合| 五月婷婷激情久久| 免费精品国产的网站免费观看| 欧美激情视频一区二区三区不卡| 一卡二卡三卡在线| 中文字幕不卡的av| 国产一区亚洲二区三区| 欧美国产不卡| 9.1国产丝袜在线观看 | 国产电影一区| 久久好看免费视频| 国产91av在线播放| 国产女人aaa级久久久级| 日韩欧美在线播放视频| 婷婷综合成人| 欧洲亚洲妇女av| 日韩在线免费播放| 欧美视频在线免费| 国产又爽又黄无码无遮挡在线观看| 激情综合激情| 国产日韩一区欧美| 欧美裸体视频| 亚洲欧美国产一区二区三区| 久久中文字幕免费| 久久精品一区八戒影视| 欧美三级午夜理伦三级| 国产精品欧美三级在线观看| 国产成人精品国内自产拍免费看| 欧美巨乳在线| 欧美亚日韩国产aⅴ精品中极品| 一级片视频免费看| 久久精品国产精品亚洲综合| 一区二区三区四区五区精品 | 欧美大片一区二区三区| 国产性生活网站| 99久久er热在这里只有精品66| 国产人妻777人伦精品hd| 婷婷成人影院| 国产福利精品视频| 黄视频在线观看网站| 欧美一区二区三区四区五区 | 色国产综合视频| 中文字幕第二区| 国产中文字幕精品| 久久99久久久久久| 亚洲精品**不卡在线播he| 国产精品精品一区二区三区午夜版 | 国产一级做a爱片久久毛片a| 91麻豆高清视频| 丰满少妇在线观看| 婷婷综合社区| 狠狠色综合一区二区| 亚州一区二区三区| 免费不卡在线观看av| 人妻无码中文字幕免费视频蜜桃| 欧美性猛交xxxx免费看漫画| 亚洲综合第一区| 岛国av在线一区| 黄色av免费在线播放| 性欧美欧美巨大69| 欧美日韩精品久久| 看亚洲a级一级毛片| 91av在线免费观看| 国产黄色在线免费观看| 日韩电影大全免费观看2023年上| 瑟瑟视频在线免费观看| 一区二区三区小说| 色欲AV无码精品一区二区久久| 国产精品2024| 热久久精品免费视频| 国产综合视频| 天堂资源在线亚洲视频| 精品综合久久88少妇激情| 国产精品人人做人人爽| 激情aⅴ欧美一区二区欲海潮| 精品国产一区二区三区久久狼黑人 | 亚洲国产毛片完整版| 国产一级片一区二区| 亚洲一区二区三区在线| 欧美日韩国产一二三区| 91老师片黄在线观看| 亚洲精品一二三四| 七七婷婷婷婷精品国产| 欧美 日韩 国产在线观看| 亚洲欧美色图| 亚洲高清不卡一区| 亚洲精品3区| 国产一级精品aaaaa看| 精品视频在线观看免费观看 | 五十路熟女丰满大屁股 | 亚洲熟妇无码一区二区三区| 你懂的亚洲视频| 一区精品在线| 欧洲美女日日| 日韩av一区二区三区美女毛片| 精品按摩偷拍| 国产精品二区在线| 日本一区二区三区电影免费观看| 国产精品午夜视频| 日韩和的一区二在线| 2019国产精品自在线拍国产不卡| 天堂av资源在线观看| 久久久精品电影| 麻豆传媒视频在线观看| 神马久久久久久| 成人在线二区| 在线不卡国产精品| aaa在线免费观看| 中文字幕精品在线| 丁香婷婷在线| 色久欧美在线视频观看| yiren22综合网成人| 国产亚洲激情在线| 成年人在线看| 在线观看亚洲视频| 欧美成人hd| 久久久精品国产网站| 污污视频在线| 久久久久国产视频| bl视频在线免费观看| 韩国三级日本三级少妇99| 成入视频在线观看| 日本道色综合久久影院| 成人软件在线观看| 国产精品一二三视频| 欧美激情三区| 91成人伦理在线电影| 亚洲三级av| 国产伦精品一区二区| 亚州精品视频| 涩涩日韩在线| 婷婷综合亚洲| 日韩极品视频在线观看| 亚洲伦理一区| 任你操这里只有精品| 免费观看在线色综合| caoporm在线视频| 国产成人午夜精品影院观看视频| 毛茸茸free性熟hd| 久久久久久久电影| 日韩精品一区二区三区在线视频| 亚洲欧美韩国综合色| 久久精品久久精品久久| 精品久久中文字幕久久av| 午夜一区二区三区四区| 91精品国产综合久久精品麻豆| 亚洲伦理在线观看| 亚洲另类欧美自拍| 欧美人xxx| 午夜精品免费视频| 日韩在线观看不卡| 99国产在线视频| 亚洲人成网www| 一区二区三区四区五区视频 | a√天堂在线观看| 日韩国产精品91| 日本中文字幕精品| 久久久久久久久99精品| 一级性生活免费视频| 亚洲国产成人高清精品| 97人妻精品视频一区| 欧美成人a视频| 国产在线超碰| 久久久久中文字幕| 精品久久福利| 精品国产免费久久久久久尖叫| 日韩欧美视频专区| 我的公把我弄高潮了视频| 美女网站色91| 女人被狂躁c到高潮| 亚洲精品视频自拍| 久久国产乱子伦精品| 日韩欧美电影一二三| 第一页在线观看| 91黑丝在线观看| 曰本一区二区| 日本亚洲导航| 一本色道久久综合亚洲精品不卡| 国产成人在线综合| 久久久天堂av| 国产精品a成v人在线播放| 欧美日韩国产系列| 你懂得在线网址| 国内成人精品视频| 秋霞午夜一区二区三区视频| 日韩影视精品| 午夜在线视频一区二区区别| 国产艳妇疯狂做爰视频| 亚洲欧美日本在线| 国产成人av免费| 国产婷婷色综合av蜜臀av | 国产精品r级在线| 成人高潮视频| 成人在线观看毛片| 极品少妇一区二区| 欧美人与性囗牲恔配| 欧美性xxxxx极品| 天堂在线一二区| 久久伊人91精品综合网站| 国产精品第一| 日韩精品国内| 久久久久久久欧美精品| 亚洲色图14p| 亚洲成人免费av| 黄色av网站免费在线观看| 欧美国产极速在线| 亚洲国产欧美国产第一区| 综合久久国产| 国产专区欧美精品| 色欲人妻综合网| 日韩丝袜情趣美女图片| 伊人春色在线观看| 97碰碰视频| 欧美破处大片在线视频| 永久av免费在线观看| 一区二区在线电影| 午夜免费福利视频| 欧美高跟鞋交xxxxhd| 91精品国产自产精品男人的天堂| 国产乱人伦精品一区二区三区| 国产老女人精品毛片久久| 伊人在线视频观看| 欧美电影精品一区二区| 91美女主播在线视频| 久久国产精品-国产精品| 亚洲欧美久久| 国产91丝袜美女在线播放| 欧美日韩一卡二卡| 久久久久久久久免费视频| 亚洲自拍偷拍一区| 精品福利电影| 一卡二卡三卡四卡| 在线观看91视频| 免费观看久久久久| 91亚色免费| 99精品久久久| 国产精品美女高潮无套| 欧美日本在线观看| 日韩经典av| 久久综合伊人77777麻豆| 日韩av一区二区三区| 极品久久久久久| 亚洲国产精品人人爽夜夜爽| 丝袜美腿诱惑一区二区三区| 中文字幕一区二区三区乱码 | 国产精品毛片一区视频| 美女精品一区| 三上悠亚在线观看视频| 亚洲国产欧美一区二区三区同亚洲| 成人性生交大片免费观看网站| 亚洲国产一区二区精品视频 | 久久精品电影| 日韩三级在线观看视频| 亚洲高清福利视频| 日本精品裸体写真集在线观看| 中文字幕一区二区三区在线乱码| 懂色av中文一区二区三区| 最新中文字幕一区| 美女少妇精品视频| 亚洲丝袜美腿一区| 精品亚洲视频在线| 欧美性猛交xxxx乱大交| а√中文在线8| 欧美日韩在线高清| 国产成人一级电影| 波多野结衣一区二区三区四区| 欧美成人精品一区| 国产精品手机在线播放 | 99国产精品免费网站| 91视频免费版污| 亚洲va国产va欧美va观看| 98在线视频| 久久精品99久久|