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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

一个websocket 可以多个页面创建吗_实战分享|给我一个Puppeteer,没有爬不了的网站

發布時間:2025/3/11 编程问答 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一个websocket 可以多个页面创建吗_实战分享|给我一个Puppeteer,没有爬不了的网站 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Puppeteer 是 Chrome 開發團隊在 2017 年發布的一個 Node.js 包,用來模擬 Chrome 瀏覽器的運行。我們團隊從 Puppeteer 剛發布出來就開始成為忠實用戶了(主要是因為 PhantomJs 坑太多了),本文主要在介紹 Puppeteer 的同時,結合我們平時的實踐做一個分享。

學習 Puppeteer 之前我們先來了解一下 Chrome DevTool Protocol

什么是 Chrome DevTool Protocol

  • CDP 基于 WebSocket,利用 WebSocket 實現與瀏覽器內核的快速數據通道
  • CDP 分為多個域(DOM,Debugger,Network,Profiler,Console...),每個域中都定義了相關的命令和事件(Commands and Events)
  • 我們可以基于 CDP 封裝一些工具對 Chrome 瀏覽器進行調試及分析,比如我們常用的 “Chrome 開發者工具” 就是基于 CDP 實現的
  • 如果你以 remote-debugging-port 參數啟動 Chrome,那么就可以看到所有 Tab 頁面的開發者調試前端頁面,還會在同一端口上還提供了 http 服務,主要提供以下幾個接口:
GET /json/version # 獲取瀏覽器的一些元信息GET /json or /json/list # 當前瀏覽器上打開的一些頁面信息GET /json/protocol # 獲取當前 CDP 的協議信息 GET /json/new?{url} # 開啟一共新的 Tab 頁面GET /json/activate/{targetId} # 激活某個頁面成為當前顯示的頁面GET /json/close/{targetId} # 關閉某個頁面GET /devtools/inspector.html # 打開當前頁面的開發者調試工具WebSocket /devtools/page/{targetId} # 獲取某個頁面的 websocket 地址
  • 很多有用的工具都是基于 CDP 實現的,比如 Chrome 開發者工具,chrome-remote-interface,Puppeteer 等

什么是 Headless Chrome

  • 在無界面的環境中運行 Chrome
  • 通過命令行或者程序語言操作 Chrome
  • 無需人的干預,運行更穩定
  • 在啟動 Chrome 時添加參數 --headless,便可以 headless 模式啟動 Chrome
alias chrome="/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" # Mac OS X 命令別名chrome --headless --remote-debugging-port=9222 --disable-gpu # 開啟遠程調試chrome --headless --disable-gpu --dump-dom https://www.baidu.com # 獲取頁面 DOMchrome --headless --disable-gpu --screenshot https://www.baidu.com # 截圖
  • chrome 啟動時可以加一些什么參數,大家可以點擊這里查看

Puppeteer 是什么

  • Puppeteer 是 Node.js 工具引擎
  • Puppeteer 提供了一系列 API,通過 Chrome DevTools Protocol 協議控制 Chromium/Chrome 瀏覽器的行為
  • Puppeteer 默認情況下是以 headless 啟動 Chrome 的,也可以通過參數控制啟動有界面的 Chrome
  • Puppeteer 默認綁定最新的 Chromium 版本,也可以自己設置不同版本的綁定
  • Puppeteer 讓我們不需要了解太多的底層 CDP 協議實現與瀏覽器的通信

Puppeteer 能做什么

官方稱:“Most things that you can do manually in the browser can be done using Puppeteer”,那么具體可以做些什么呢?

  • 網頁截圖或者生成 PDF
  • 爬取 SPA 或 SSR 網站
  • UI 自動化測試,模擬表單提交,鍵盤輸入,點擊等行為
  • 捕獲網站的時間線,幫助診斷性能問題
  • 創建一個最新的自動化測試環境,使用最新的 js 和最新的 Chrome 瀏覽器運行測試用例
  • 測試 Chrome 擴展程序
  • ...

Puppeteer API 分層結構

Puppeteer 中的 API 分層結構基本和瀏覽器保持一致,下面對常使用到的幾個類介紹一下:

  • Browser: 對應一個瀏覽器實例,一個 Browser 可以包含多個 BrowserContext
  • BrowserContext: 對應瀏覽器一個上下文會話,就像我們打開一個普通的 Chrome 之后又打開一個隱身模式的瀏覽器一樣,BrowserContext 具有獨立的 Session(cookie 和 cache 獨立不共享),一個 BrowserContext 可以包含多個 Page
  • Page:表示一個 Tab 頁面,通過 browserContext.newPage()/browser.newPage() 創建,browser.newPage() 創建頁面時會使用默認的 BrowserContext,一個 Page 可以包含多個 Frame
  • Frame: 一個框架,每個頁面有一個主框架(page.MainFrame()),也可以多個子框架,主要由 iframe 標簽創建產生的
  • ExecutionContext: 是 javascript 的執行環境,每一個 Frame 都一個默認的 javascript 執行環境
  • ElementHandle: 對應 DOM 的一個元素節點,通過該該實例可以實現對元素的點擊,填寫表單等行為,我們可以通過選擇器,xPath 等來獲取對應的元素
  • JsHandle:對應 DOM 中的 javascript 對象,ElementHandle 繼承于 JsHandle,由于我們無法直接操作 DOM 中對象,所以封裝成 JsHandle 來實現相關功能
  • CDPSession:可以直接與原生的 CDP 進行通信,通過 session.send 函數直接發消息,通過 session.on 接收消息,可以實現 Puppeteer API 中沒有涉及的功能
  • Coverage:獲取 JavaScript 和 CSS 代碼覆蓋率
  • Tracing:抓取性能數據進行分析
  • Response: 頁面收到的響應
  • Request: 頁面發出的請求

如何創建一個 Browser 實例

puppeteer 提供了兩種方法用于創建一個 Browser 實例:

  • puppeteer.connect: 連接一個已經存在的 Chrome 實例
  • puppeteer.launch: 每次都啟動一個 Chrome 實例
const puppeteer = require('puppeteer');let request = require('request-promise-native');//使用 puppeteer.launch 啟動 Chrome(async () => { const browser = await puppeteer.launch({ headless: false, //有瀏覽器界面啟動 slowMo: 100, //放慢瀏覽器執行速度,方便測試觀察 args: [ //啟動 Chrome 的參數,詳見上文中的介紹 '–no-sandbox', '--window-size=1280,960' ], }); const page = await browser.newPage(); await page.goto('https://www.baidu.com'); await page.close(); await browser.close();})();//使用 puppeteer.connect 連接一個已經存在的 Chrome 實例(async () => { //通過 9222 端口的 http 接口獲取對應的 websocketUrl let version = await request({ uri: "http://127.0.0.1:9222/json/version", json: true }); //直接連接已經存在的 Chrome let browser = await puppeteer.connect({ browserWSEndpoint: version.webSocketDebuggerUrl }); const page = await browser.newPage(); await page.goto('https://www.baidu.com'); await page.close(); await browser.disconnect();})();

這兩種方式的對比:

  • puppeteer.launch 每次都要重新啟動一個 Chrome 進程,啟動平均耗時 100 到 150 ms,性能欠佳
  • puppeteer.connect 可以實現對于同一個 Chrome 實例的共用,減少啟動關閉瀏覽器的時間消耗
  • puppeteer.launch 啟動時參數可以動態修改
  • 通過 puppeteer.connect 我們可以遠程連接一個 Chrome 實例,部署在不同的機器上
  • puppeteer.connect 多個頁面共用一個 chrome 實例,偶爾會出現 Page Crash 現象,需要進行并發控制,并定時重啟 Chrome 實例

如何等待加載?

在實踐中我們經常會遇到如何判斷一個頁面加載完成了,什么時機去截圖,什么時機去點擊某個按鈕等問題,那我們到底如何去等待加載呢?

下面我們把等待加載的 API 分為三類進行介紹:

加載導航頁面

  • page.goto:打開新頁面
  • page.goBack :回退到上一個頁面
  • page.goForward :前進到下一個頁面
  • page.reload :重新加載頁面
  • page.waitForNavigation:等待頁面跳轉

Pupeeteer 中的基本上所有的操作都是異步的,以上幾個 API 都涉及到關于打開一個頁面,什么情況下才能判斷這個函數執行完畢呢,這些函數都提供了兩個參數 waitUtil 和 timeout,waitUtil 表示直到什么出現就算執行完畢,timeout 表示如果超過這個時間還沒有結束就拋出異常。

await page.goto('https://www.baidu.com', { timeout: 30 * 1000, waitUntil: [ 'load', //等待 “load” 事件觸發 'domcontentloaded', //等待 “domcontentloaded” 事件觸發 'networkidle0', //在 500ms 內沒有任何網絡連接 'networkidle2' //在 500ms 內網絡連接個數不超過 2 個 ]});

以上 waitUtil 有四個事件,業務可以根據需求來設置其中一個或者多個觸發才以為結束,networkidle0 和 networkidle2 中的 500ms 對時間性能要求高的用戶來說,還是有點長的

等待元素、請求、響應

  • page.waitForXPath:等待 xPath 對應的元素出現,返回對應的 ElementHandle 實例
  • page.waitForSelector :等待選擇器對應的元素出現,返回對應的 ElementHandle 實例
  • page.waitForResponse :等待某個響應結束,返回 Response 實例
  • page.waitForRequest:等待某個請求出現,返回 Request 實例
await page.waitForXPath('//img');await page.waitForSelector('#uniqueId');await page.waitForResponse('https://d.youdata.netease.com/api/dash/hello');await page.waitForRequest('https://d.youdata.netease.com/api/dash/hello');

自定義等待

如果上面提供的等待方式都不能滿足我們的需求,puppeteer 還提供我們提供兩個函數:

  • page.waitForFunction:等待在頁面中自定義函數的執行結果,返回 JsHandle 實例
  • page.waitFor:設置等待時間,實在沒辦法的做法
await page.goto(url, { timeout: 120000, waitUntil: 'networkidle2' });//我們可以在頁面中定義自己認為加載完的事件,在合適的時間點我們將該事件設置為 true//以下是我們項目在觸發截圖時的判斷邏輯,如果 renderdone 出現且為 true 那么就截圖,如果是 Object,說明頁面加載出錯了,我們可以捕獲該異常進行提示let renderdoneHandle = await page.waitForFunction('window.renderdone', { polling: 120});const renderdone = await renderdoneHandle.jsonValue();if (typeof renderdone === 'object') { console.log(`加載頁面失敗:報表${renderdone.componentId}出錯 -- ${renderdone.message}`);}else{ console.log('頁面加載成功');}

兩個獨立的環境

在使用 Puppeteer 時我們幾乎一定會遇到在這兩個環境之間交換數據:運行 Puppeteer 的 Node.js 環境和 Puppeteer 操作的頁面 Page DOM,理解這兩個環境很重要

  • 首先 Puppeteer 提供了很多有用的函數去 Page DOM Environment 中執行代碼,這個后面會介紹到
  • 其次 Puppeteer 提供了 ElementHandle 和 JsHandle 將 Page DOM Environment 中元素和對象封裝成對應的 Node.js 對象,這樣可以直接這些對象的封裝函數進行操作 Page DOM

10 個用例告訴你如何使用 puppeteer

下面介紹 10 個關于使用 Puppeteer 的用例,并在介紹用例的時候會穿插的講解一些 API,告訴大家如何使用 Puppeteer:

Case1:截圖

我們使用 Puppeteer 既可以對某個頁面進行截圖,也可以對頁面中的某個元素進行截圖:

(async () => { const browser = await puppeteer.launch(); const page = await browser.newPage(); //設置可視區域大小 await page.setViewport({width: 1920, height: 800}); await page.goto('https://youdata.163.com'); //對整個頁面截圖 await page.screenshot({ path: './files/capture.png', //圖片保存路徑 type: 'png', fullPage: true //邊滾動邊截圖 // clip: {x: 0, y: 0, width: 1920, height: 800} }); //對頁面某個元素截圖 let [element] = await page.$x('/html/body/section[4]/div/div[2]'); await element.screenshot({ path: './files/element.png' }); await page.close(); await browser.close();})();

我們怎么去獲取頁面中的某個元素呢?

  • page.$('#uniqueId'):獲取某個選擇器對應的第一個元素
  • page.$$('div'):獲取某個選擇器對應的所有元素
  • page.$x('//img'):獲取某個 xPath 對應的所有元素
  • page.waitForXPath('//img'):等待某個 xPath 對應的元素出現
  • page.waitForSelector('#uniqueId'):等待某個選擇器對應的元素出現

case2: 模擬用戶登錄

(async () => { const browser = await puppeteer.launch({ slowMo: 100, //放慢速度 headless: false, defaultViewport: {width: 1440, height: 780}, ignoreHTTPSErrors: false, //忽略 https 報錯 args: ['--start-fullscreen'] //全屏打開頁面 }); const page = await browser.newPage(); await page.goto('https://demo.youdata.com'); //輸入賬號密碼 const uniqueIdElement = await page.$('#uniqueId'); await uniqueIdElement.type('admin@admin.com', {delay: 20}); const passwordElement = await page.$('#password', {delay: 20}); await passwordElement.type('123456'); //點擊確定按鈕進行登錄 let okButtonElement = await page.$('#btn-ok'); //等待頁面跳轉完成,一般點擊某個按鈕需要跳轉時,都需要等待 page.waitForNavigation() 執行完畢才表示跳轉成功 await Promise.all([ okButtonElement.click(), page.waitForNavigation() ]); console.log('admin 登錄成功'); await page.close(); await browser.close();})();

那么 ElementHandle 都提供了哪些操作元素的函數呢?

  • elementHandle.click():點擊某個元素
  • elementHandle.tap():模擬手指觸摸點擊
  • elementHandle.focus():聚焦到某個元素
  • elementHandle.hover():鼠標 hover 到某個元素上
  • elementHandle.type('hello'):在輸入框輸入文本

case3:請求攔截

請求在有些場景下很有必要,攔截一下沒必要的請求提高性能,我們可以在監聽 Page 的 request 事件,并進行請求攔截,前提是要開啟請求攔截 page.setRequestInterception(true)。

(async () => { const browser = await puppeteer.launch(); const page = await browser.newPage(); const blockTypes = new Set(['image', 'media', 'font']); await page.setRequestInterception(true); //開啟請求攔截 page.on('request', request => { const type = request.resourceType(); const shouldBlock = blockTypes.has(type); if(shouldBlock){ //直接阻止請求 return request.abort(); }else{ //對請求重寫 return request.continue({ //可以對 url,method,postData,headers 進行覆蓋 headers: Object.assign({}, request.headers(), { 'puppeteer-test': 'true' }) }); } }); await page.goto('https://demo.youdata.com'); await page.close(); await browser.close();})();

那 page 頁面上都提供了哪些事件呢?

  • page.on('close') 頁面關閉
  • page.on('console') console API 被調用
  • page.on('error') 頁面出錯
  • page.on('load') 頁面加載完
  • page.on('request') 收到請求
  • page.on('requestfailed') 請求失敗
  • page.on('requestfinished') 請求成功
  • page.on('response') 收到響應
  • page.on('workercreated') 創建 webWorker
  • page.on('workerdestroyed') 銷毀 webWorker

case4:獲取 WebSocket 響應

Puppeteer 目前沒有提供原生的用于處理 WebSocket 的 API 接口,但是我們可以通過更底層的 Chrome DevTool Protocol (CDP) 協議獲得

(async () => { const browser = await puppeteer.launch(); const page = await browser.newPage(); //創建 CDP 會話 let cdpSession = await page.target().createCDPSession(); //開啟網絡調試,監聽 Chrome DevTools Protocol 中 Network 相關事件 await cdpSession.send('Network.enable'); //監聽 webSocketFrameReceived 事件,獲取對應的數據 cdpSession.on('Network.webSocketFrameReceived', frame => { let payloadData = frame.response.payloadData; if(payloadData.includes('push:query')){ //解析payloadData,拿到服務端推送的數據 let res = JSON.parse(payloadData.match(/{.*}/)[0]); if(res.code !== 200){ console.log(`調用websocket接口出錯:code=${res.code},message=${res.message}`); }else{ console.log('獲取到websocket接口數據:', res.result); } } }); await page.goto('https://netease.youdata.163.com/dash/142161/reportExport?pid=700209493'); await page.waitForFunction('window.renderdone', {polling: 20}); await page.close(); await browser.close();})();

case5:植入 javascript 代碼

Puppeteer 最強大的功能是,你可以在瀏覽器里執行任何你想要運行的 javascript 代碼,下面是我在爬 188 郵箱的收件箱用戶列表時,發現每次打開收件箱再關掉都會多處一個 iframe 來,隨著打開收件箱的增多,iframe 增多到瀏覽器卡到無法運行,所以我在爬蟲代碼里加了刪除無用 iframe 的腳本:

(async () => { const browser = await puppeteer.launch(); const page = await browser.newPage(); await page.goto('https://webmail.vip.188.com'); //注冊一個 Node.js 函數,在瀏覽器里運行 await page.exposeFunction('md5', text => crypto.createHash('md5').update(text).digest('hex') ); //通過 page.evaluate 在瀏覽器里執行刪除無用的 iframe 代碼 await page.evaluate(async () => { let iframes = document.getElementsByTagName('iframe'); for(let i = 3; i < iframes.length - 1; i++){ let iframe = iframes[i]; if(iframe.name.includes("frameBody")){ iframe.src = 'about:blank'; try{ iframe.contentWindow.document.write(''); iframe.contentWindow.document.clear(); }catch(e){} //把iframe從頁面移除 iframe.parentNode.removeChild(iframe); } } //在頁面中調用 Node.js 環境中的函數 const myHash = await window.md5('PUPPETEER'); console.log(`md5 of ${myString} is ${myHash}`); }); await page.close(); await browser.close();})();

有哪些函數可以在瀏覽器環境中執行代碼呢?

  • page.evaluate(pageFunction[, ...args]):在瀏覽器環境中執行函數
  • page.evaluateHandle(pageFunction[, ...args]):在瀏覽器環境中執行函數,返回 JsHandle 對象
  • page.$$eval(selector, pageFunction[, ...args]):把 selector 對應的所有元素傳入到函數并在瀏覽器環境執行
  • page.$eval(selector, pageFunction[, ...args]):把 selector 對應的第一個元素傳入到函數在瀏覽器環境執行
  • page.evaluateOnNewDocument(pageFunction[, ...args]):創建一個新的 Document 時在瀏覽器環境中執行,會在頁面所有腳本執行之前執行
  • page.exposeFunction(name, puppeteerFunction):在 window 對象上注冊一個函數,這個函數在 Node 環境中執行,有機會在瀏覽器環境中調用 Node.js 相關函數庫

case6: 如何抓取 iframe 中的元素

一個 Frame 包含了一個執行上下文(Execution Context),我們不能跨 Frame 執行函數,一個頁面中可以有多個 Frame,主要是通過 iframe 標簽嵌入的生成的。其中在頁面上的大部分函數其實是 page.mainFrame().xx 的一個簡寫,Frame 是樹狀結構,我們可以通過 frame.childFrames() 遍歷到所有的 Frame,如果想在其它 Frame 中執行函數必須獲取到對應的 Frame 才能進行相應的處理

以下是在登錄 188 郵箱時,其登錄窗口其實是嵌入的一個 iframe,以下代碼時我們在獲取 iframe 并進行登錄

(async () => { const browser = await puppeteer.launch({headless: false, slowMo: 50}); const page = await browser.newPage(); await page.goto('https://www.188.com'); //點擊使用密碼登錄 let passwordLogin = await page.waitForXPath('//*[@id="qcode"]/div/div[2]/a'); await passwordLogin.click(); for (const frame of page.mainFrame().childFrames()){ //根據 url 找到登錄頁面對應的 iframe if (frame.url().includes('passport.188.com')){ await frame.type('.dlemail', 'admin@admin.com'); await frame.type('.dlpwd', '123456'); await Promise.all([ frame.click('#dologin'), page.waitForNavigation() ]); break; } } await page.close(); await browser.close();})();

case7: 頁面性能分析

Puppeteer 提供了對頁面性能分析的工具,目前功能還是比較弱的,只能獲取到一個頁面性能執行的數據,如何分析需要我們自己根據數據進行分析,據說在 2.0 版本會做大的改版: - 一個瀏覽器同一時間只能 trace 一次 - 在 devTools 的 Performance 可以上傳對應的 json 文件并查看分析結果 - 我們可以寫腳本來解析 trace.json 中的數據做自動化分析 - 通過 tracing 我們獲取頁面加載速度以及腳本的執行性能

(async () => { const browser = await puppeteer.launch(); const page = await browser.newPage(); await page.tracing.start({path: './files/trace.json'}); await page.goto('https://www.google.com'); await page.tracing.stop(); /* continue analysis from 'trace.json' */ browser.close();})();

case8: 文件的上傳和下載

在自動化測試中,經常會遇到對于文件的上傳和下載的需求,那么在 Puppeteer 中如何實現呢?

(async () => { const browser = await puppeteer.launch(); const page = await browser.newPage(); //通過 CDP 會話設置下載路徑 const cdp = await page.target().createCDPSession(); await cdp.send('Page.setDownloadBehavior', { behavior: 'allow', //允許所有下載請求 downloadPath: 'path/to/download' //設置下載路徑 }); //點擊按鈕觸發下載 await (await page.waitForSelector('#someButton')).click(); //等待文件出現,輪訓判斷文件是否出現 await waitForFile('path/to/download/filename'); //上傳時對應的 inputElement 必須是元素 let inputElement = await page.waitForXPath('//input[@type="file"]'); await inputElement.uploadFile('/path/to/file'); browser.close();})();

case9:跳轉新 tab 頁處理

在點擊一個按鈕跳轉到新的 Tab 頁時會新開一個頁面,這個時候我們如何獲取改頁面對應的 Page 實例呢?可以通過監聽 Browser 上的 targetcreated 事件來實現,表示有新的頁面創建:

let page = await browser.newPage();await page.goto(url);let btn = await page.waitForSelector('#btn');//在點擊按鈕之前,事先定義一個 Promise,用于返回新 tab 的 Page 對象const newPagePromise = new Promise(res => browser.once('targetcreated', target => res(target.page()) ));await btn.click();//點擊按鈕后,等待新tab對象let newPage = await newPagePromise;

case10: 模擬不同的設備

Puppeteer 提供了模擬不同設備的功能,其中 puppeteer.devices 對象上定義很多設備的配置信息,這些配置信息主要包含 viewport 和 userAgent,然后通過函數 page.emulate 實現不同設備的模擬

const puppeteer = require('puppeteer');const iPhone = puppeteer.devices['iPhone 6'];puppeteer.launch().then(async browser => { const page = await browser.newPage(); await page.emulate(iPhone); await page.goto('https://www.google.com'); await browser.close();});

Puppeteer vs Phantomjs

  • 完全真實的瀏覽器操作,支持所有 Chrome 特性
  • 可以提供不同版本的 Chrome 瀏覽器環境
  • Chrome 團隊維護,擁有更好的兼容性和前景
  • headless 參數動態配置,調試更為方便,通過 –remote-debugging-port=9222,可以進入調試界面調試
  • 支持最新的 JS 語法,比如 async/await 等
  • 完備的事件驅動機制,不需要太多的 sleep
  • Phantomjs 環境安裝復雜,API 調用不友好
  • 兩者的主要不同在于 Phantomjs 使用了一個較老版本的 WebKit 作為它的渲染引擎
  • 比 Phantomjs 有更快更好的性能,以下是其他人對于 Puppeteer 和 Phantomjs 性能對比結果:

Headless Chrome vs PhantomJS Benchmark

Puppeteer 在我們團隊的應用場景

性能和優化

  • 關于共享內存:
Chrome 默認使用 /dev/shm 共享內存,但是 docker 默認/dev/shm 只有64MB,顯然是不夠使用的,提供兩種方式來解決:- 啟動 docker 時添加參數 --shm-size=1gb 來增大 /dev/shm 共享內存,但是 swarm 目前不支持 shm-size 參數- 啟動 Chrome 添加參數 - disable-dev-shm-usage,禁止使用 /dev/shm 共享內存
  • 盡量使用同一個瀏覽器實例,這樣可以實現緩存共用
  • 通過請求攔截沒必要加載的資源
  • 像我們自己打開 Chrome 一樣,tab 頁多必然會卡,所以必須有效控制 tab 頁個數
  • 一個 Chrome 實例啟動時間長了難免會出現內存泄漏,頁面奔潰等現象,所以定時重啟 Chrome 實例是有必要的
  • 為了加快性能,關閉沒必要的配置,比如:-no-sandbox(沙箱功能),--disable-extensions(擴展程序)等
  • 盡量避免使用 page.waifFor(1000),讓程序自己決定效果會更好
  • 因為和 Chrome 實例連接時使用的 Websocket,會存在 Websocket sticky session 問題,這個需要特別注意

總結

以上是生活随笔為你收集整理的一个websocket 可以多个页面创建吗_实战分享|给我一个Puppeteer,没有爬不了的网站的全部內容,希望文章能夠幫你解決所遇到的問題。

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

欧美性色综合 | 一区二区中文字幕在线播放 | 国产精品精品国产婷婷这里av | 天天天色综合a | 在线电影 你懂得 | 日韩有色| 四虎成人精品在永久免费 | 欧美日产一区 | 亚洲欧洲精品一区二区精品久久久 | 日韩精品久久久免费观看夜色 | 久久影院精品 | 国产精品综合久久 | 久久人人精品 | 国产一区精品在线观看 | 免费精品人在线二线三线 | 婷婷久久五月天 | 精品成人久久 | 国产精品福利无圣光在线一区 | 99国产一区| 成人久久18免费网站麻豆 | 久久伦理视频 | 亚洲精品在线观看av | 国产亚洲综合精品 | 91日本在线播放 | 久操视频在线免费看 | 午夜av在线 | 亚洲日本在线一区 | 成人黄色一级视频 | 精品久久久久一区二区国产 | 国产一级电影免费观看 | 99久久99 | 99热都是精品 | 亚洲欧洲成人 | 超碰九九 | 久久成年人网站 | 美女在线免费视频 | 九色免费视频 | 久久久久久久久影视 | 久久久网 | 国产手机在线播放 | 国产精品第7页 | 日韩在线不卡视频 | 日韩精品在线看 | 国产美女视频黄a视频免费 久久综合九色欧美综合狠狠 | 亚洲激情在线 | 亚洲国产精品传媒在线观看 | 色视频在线观看免费 | 欧美久久久久久久 | 深爱激情站 | 中文字幕观看在线 | 1024手机看片国产 | 成人免费一区二区三区在线观看 | 欧美性色综合 | 亚洲另类视频在线 | 中文字幕一区二区三 | 日日操夜| 久久综合久色欧美综合狠狠 | 亚洲黄色在线观看 | 久久久久久看片 | 日日综合网 | 欧美亚洲免费在线一区 | 久久草草热国产精品直播 | 天天操天天艹 | 国产成人精品午夜在线播放 | 国产精品九九九 | 狠狠色网 | 日本精品一区二区三区在线观看 | 亚洲精品国产精品乱码在线观看 | 999久久久久久久久 69av视频在线观看 | 亚洲精品视频网 | 日韩精品中文字幕久久臀 | 久久久国产精品人人片99精片欧美一 | 婷婷六月中文字幕 | 成人黄性视频 | 97人人视频 | 日韩精品极品视频 | 欧美日韩高清在线 | 久久国产欧美日韩 | 国产 日韩 中文字幕 | 欧美国产日韩一区二区三区 | a久久久久 | 久久99国产精品久久99 | 日韩网站免费观看 | 丁香六月婷婷激情 | 正在播放亚洲精品 | 成av人电影 | 天堂av网站| 日韩精品一区二区在线观看视频 | 国产精品精品国产色婷婷 | 中文字幕在线视频一区二区 | 一区二区三区在线免费 | 999日韩 | 久久精品视频网 | 九九免费观看全部免费视频 | 九九精品在线观看 | 91久久国产综合精品女同国语 | 国产精品久久久久久久久久了 | 91新人在线观看 | 日本在线观看黄色 | 久久久久久久久久亚洲精品 | 成人网页在线免费观看 | 日本久久久久 | 亚洲专区在线播放 | 天天躁日日躁狠狠躁av麻豆 | 日日夜夜免费精品视频 | 欧美久久九九 | 久久久av免费 | 激情网站免费观看 | 精品欧美乱码久久久久久 | 色中文字幕在线观看 | 国产精品一区二区美女视频免费看 | 夜夜爽天天爽 | 天天爽天天摸 | 福利视频一二区 | 亚洲精品99久久久久久 | 亚洲精品播放 | 久久草草热国产精品直播 | 国产成人精品女人久久久 | 国产视频亚洲 | 亚洲一区二区三区在线看 | 国产视频久 | 三级av免费观看 | 国内精品久久久久久中文字幕 | 日本成人中文字幕在线观看 | 91麻豆精品国产午夜天堂 | 免费日韩 精品中文字幕视频在线 | v片在线看 | 中日韩在线视频 | 97av影院 | 成人av视屏 | 天天草夜夜 | 亚洲精品在线二区 | 狠狠躁日日躁夜夜躁av | 免费福利在线视频 | 日韩v欧美v日本v亚洲v国产v | 人人舔人人干 | 日本天天色| av电影一区二区 | 欧美一级片播放 | 欧美一区二区三区免费看 | 在线91观看| 欧美一级免费黄色片 | 韩国精品一区二区三区六区色诱 | 国产小视频你懂的 | 亚洲精品视频网址 | 日韩成人高清在线 | 日韩网站在线看片你懂的 | 亚洲一区二区三区四区在线视频 | 91麻豆精品国产91久久久久久久久 | 日韩有码中文字幕在线 | 亚洲 欧洲 国产 精品 | 丁香婷婷综合网 | 亚洲欧洲国产视频 | 精品xxx| 久久久美女 | 国产成人精品一区二区三区免费 | 中文字幕一区二区三区四区视频 | 日日干干夜夜 | 日本最新高清不卡中文字幕 | 色久网| 欧美日韩不卡一区二区三区 | 久久久精品国产一区二区 | 97超碰国产精品 | 色吊丝在线永久观看最新版本 | 五月天国产 | 日日麻批40分钟视频免费观看 | 亚洲欧美成人在线 | av免费黄色| mm1313亚洲精品国产 | 香蕉视频网站在线观看 | 亚洲在线免费视频 | 亚洲一区二区精品 | 亚洲激情影院 | 日韩免费一区二区三区 | 亚洲美女视频在线观看 | av综合 日韩 | 国产精品一区二区久久 | 亚洲第五色综合网 | 日韩在线视频一区二区三区 | 国产福利久久 | 中文字幕色综合网 | 99久久精品国 | 国产高清在线看 | 丁香六月婷婷开心婷婷网 | 6699私人影院 | www.超碰| 国产日本在线观看 | 91av小视频| 久久这里有 | 成人在线一区二区 | 99久久99久久免费精品蜜臀 | 成人免费电影 | 国产在线看一区 | 久久综合干| 中文字幕av在线不卡 | 久久精品国产一区二区电影 | 成人av电影网址 | av大全在线观看 | 久久国产精品免费一区 | 国产一区二区三区免费在线 | 欧美电影在线观看 | 狠狠做深爱婷婷综合一区 | 国产99自拍 | 国产欧美综合视频 | 国产中文字幕在线免费观看 | 在线观看视频福利 | 99久久国产免费,99久久国产免费大片 | 福利精品在线 | 中文字幕欧美日韩va免费视频 | 伊人伊成久久人综合网站 | 国产精品二区在线 | 国产91精品一区二区 | av一级在线| 91精品第一页 | 视频福利在线观看 | 中文字幕一二三区 | 91精品啪啪| 欧美日韩高清一区二区 | 欧美午夜精品久久久久 | 精品亚洲va在线va天堂资源站 | 国产在线a不卡 | 久久综合久久综合九色 | 男女啪啪网站 | av字幕在线| 四虎成人精品永久免费av | 91精品国产综合久久福利 | 69精品在线 | 狠狠干狠狠艹 | 免费h漫在线观看 | 黄色av电影一级片 | 成人在线免费av | 久亚洲 | 久久久国产日韩 | 碰碰影院 | 亚洲天堂精品 | 99视频导航| 久热电影 | 成人免费毛片aaaaaa片 | 99热网站| 在线影院 国内精品 | 国产精品一区二区无线 | 久久久受www免费人成 | 欧美激情视频一区 | 国产精品福利在线 | 91网址在线看 | 欧美日韩国产伦理 | 极品国产91在线网站 | 五月婷婷六月综合 | 久久精品久久精品久久 | 国产视频在线一区二区 | 午夜在线观看一区 | 国产91成人在在线播放 | 免费日韩高清 | 国产精品欧美久久久久三级 | 一区二区三区久久 | 免费成人av在线 | 久久综合亚洲鲁鲁五月久久 | 欧美日韩精品在线观看 | 免费观看久久 | 丝袜美女在线观看 | 999精品| 免费的成人av | 日韩成人欧美 | 天堂av在线网址 | 在线看小早川怜子av | 国产免费片 | 日韩免费电影一区二区 | 国内精品美女在线观看 | av在线直接看 | 亚洲精品在线免费播放 | 欧美成人h版电影 | 国产精品一区二区三区久久久 | 色综合久久久久综合体桃花网 | 天天爽夜夜爽精品视频婷婷 | 国产网站色 | 激情欧美日韩一区二区 | 97热久久免费频精品99 | 91视频在线网址 | 三级黄色片子 | 视频一区二区精品 | 天天爱天天 | 国产精品一区二区 91 | 免费男女羞羞的视频网站中文字幕 | 久草视频精品 | 国产精品一区二区美女视频免费看 | 亚洲欧洲精品一区二区 | 丁香婷婷色综合亚洲电影 | 中文字幕在线日本 | 国产丝袜美腿在线 | 91精品国产成人观看 | 久久久久亚洲精品中文字幕 | 婷婷久久国产 | 日本在线观看一区二区 | 欧美成人理伦片 | 久久久久久久久久久久久9999 | 亚洲精品乱码久久久久久 | 国产在线综合视频 | 久久免费精品视频 | 色婷婷免费视频 | 亚洲乱码在线 | 草樱av| 91禁看片| 国内精品99 | 免费黄色a网站 | 久久精品www人人爽人人 | 处女av在线 | 一级做a爱片性色毛片www | 天天射天天干天天爽 | 中文字幕高清免费日韩视频在线 | 天天爽网站 | 国内精品免费久久影院 | 国产精品麻豆视频 | 亚洲天天在线日亚洲洲精 | 久草在线视频看看 | 日韩视频在线播放 | 亚洲尺码电影av久久 | 97超碰资源 | 五月综合色婷婷 | 亚洲高清av| 色视频网站免费观看 | 精品视频 | 日韩在线观看视频在线 | а中文在线天堂 | 国产特级毛片aaaaaa毛片 | 99久久精品电影 | 中文字幕精品一区二区三区电影 | 丁香花中文字幕 | 狂野欧美激情性xxxx欧美 | 国产精品12 | 欧美孕妇与黑人孕交 | 99久久毛片 | 国产美腿白丝袜足在线av | 欧美日韩综合在线观看 | 国产在线观看污片 | 国产视频一区二区在线观看 | 亚洲视频www | 国产视频在线观看免费 | 国产精品久久久久久久久久三级 | 97超碰资源网 | 成人在线观看影院 | 中文字幕在线看视频国产中文版 | .国产精品成人自产拍在线观看6 | 久久无码精品一区二区三区 | 三级黄在线 | av日韩av| 欧美极品少妇xbxb性爽爽视频 | 一区二区三区在线免费观看视频 | 免费观看一区 | 成人av资源网站 | 天天看天天操 | 毛片视频网址 | 欧美日韩综合在线观看 | 国产精品手机在线播放 | 亚洲精品国产精品国自产 | 日韩精品久久久久 | 国内精品久久久久久久久久清纯 | 国产精品久久久久久久久久久久 | 色夜影院 | 亚洲综合色播 | 九月婷婷色 | 色婷婷天天干 | 99久久99视频 | 涩涩成人在线 | 久久久久久久久久久综合 | 一区二区视频在线免费观看 | 狠狠久久综合 | 五月导航 | 成人a级黄色片 | 国产精品久久久久久吹潮天美传媒 | a午夜电影 | 免费在线国产视频 | 亚洲人精品午夜 | 免费视频xnxx com | 午夜av片 | 97在线观看 | 91在线文字幕 | 午夜影院日本 | 91精品久久久久 | 狠狠色2019综合网 | 国产中文字幕一区 | 国产黄网站在线观看 | 日韩欧美精品在线观看视频 | 久久国产美女视频 | 国产色女人 | 亚洲精品玖玖玖av在线看 | 国产午夜三级一区二区三 | 久操97| 久久综合久久综合九色 | 在线有码中文字幕 | 在线激情av电影 | 91精品国产综合久久久久久久 | 在线 国产 日韩 | 色视频网页 | 国内精品久久久久影院优 | 精品理论片| 中文字幕亚洲综合久久五月天色无吗'' | 日本中文字幕在线视频 | 91福利视频免费观看 | 久久久久成人免费 | 成人网在线免费视频 | 日韩xxx视频 | 久人人 | www.狠狠干| 日韩成人精品一区二区三区 | 国产精久久久久久妇女av | 99热这里只有精品8 久久综合毛片 | 激情网色| 美女视频黄免费网站 | 久久国色夜色精品国产 | 国产永久免费观看 | 国产在线精品二区 | 婷婷网五月天 | 国产69熟| 狠狠综合网 | 免费亚洲精品视频 | 欧美日韩国产一区二区三区在线观看 | 亚洲精品久久久久久久不卡四虎 | 狠狠gao | 欧美a级片免费看 | 天天碰天天操视频 | 亚洲天堂网站 | 日批视频在线播放 | 在线视频日韩欧美 | 成人在线播放免费观看 | 亚洲精品国久久99热 | 久久在线视频精品 | 精品久久久免费视频 | 色婷婷在线视频 | 国内揄拍国产精品 | 九九九九九九精品 | 国产福利91精品张津瑜 | 视频一区二区在线观看 | 亚州日韩中文字幕 | 色噜噜日韩精品一区二区三区视频 | 天天射天天 | 99一级片 | 国产日本亚洲 | 日韩视频一区二区三区在线播放免费观看 | 亚欧日韩成人h片 | 午夜男人影院 | 中文字幕一区二区三区四区久久 | 精品特级毛片 | 亚洲最大av网站 | 久久综合九色综合久99 | 国产精品国产亚洲精品看不卡15 | 久久国产精品久久久久 | 欧美久久久影院 | 丁香婷婷社区 | 欧美另类xxxx| 久久久精品在线观看 | 国产高清99 | 成年人在线免费看视频 | 99在线视频播放 | 中文字幕一区二 | 中文字幕一区二区三区四区在线视频 | 国内精品视频一区二区三区八戒 | 日韩精品一区电影 | 免费看成人 | 一级欧美一级日韩 | 中文字幕黄色av | 婷婷九月激情 | 国产精品中文字幕在线 | 中文字幕亚洲欧美 | 久久亚洲欧美日韩精品专区 | 欧美精品在线观看一区 | 日本精品一 | 国产精品久久久久久久久久久免费看 | 日韩一级电影在线 | 色噜噜狠狠色综合中国 | 久热爱| 狠狠狠色丁香婷婷综合久久88 | 不卡电影免费在线播放一区 | 久久精品久久精品久久39 | 草久在线观看 | 久久久www成人免费精品张筱雨 | 青青河边草观看完整版高清 | 久久久精品国产免费观看一区二区 | 日韩高清在线一区二区三区 | 国产专区一 | 91视视频在线直接观看在线看网页在线看 | 日韩欧美一区二区在线观看 | 精品成人免费 | 亚洲成年人在线播放 | 麻豆久久 | 国产在线美女 | 欧美ⅹxxxxxx | 国产精品区二区三区日本 | 四虎8848免费高清在线观看 | 日韩一区二区免费视频 | 992tv在线观看| 成人资源网 | 特级西西444www大胆高清无视频 | 中文字幕2021 | 国产精品美女久久 | 999成人| 日本女人的性生活视频 | 精品女同一区二区三区在线观看 | 国产高清视频在线免费观看 | 81国产精品久久久久久久久久 | 亚洲自拍av在线 | 亚洲成色 | 在线观看中文字幕dvd播放 | 色偷偷男人的天堂av | 欧美黄网站 | 99看视频在线观看 | 中文字幕一区二区三区在线播放 | 国产丝袜一区二区三区 | 国产又粗又猛又黄又爽视频 | 丝袜制服天堂 | 亚洲免费一级 | 九九精品毛片 | 麻豆传媒视频在线免费观看 | 一区二区三区高清在线 | 日韩电影在线观看一区二区 | 丝袜美腿在线视频 | 日韩欧美视频 | 97小视频 | 国产精品视频免费在线观看 | 成人在线观看免费 | 中文字幕在线观看第一页 | 天天色官网 | 婷婷丁香九月 | 色综合久久久久久久 | 精品美女在线观看 | 色av男人的天堂免费在线 | 四虎在线影视 | 伊人五月天.com | 人人要人人澡人人爽人人dvd | 97人人澡人人爽人人模亚洲 | 中文字幕第 | 超碰av在线| 国产精品国产亚洲精品看不卡 | 91久久精 | a天堂最新版中文在线地址 久久99久久精品国产 | 一区二区男女 | 国产二区av| 欧美午夜剧场 | 97超碰总站| 亚洲欧美日韩一二三区 | 精品一二三区 | 97超碰国产精品 | 日韩在线观看影院 | 天天爽夜夜操 | 久久久久久久久久久久亚洲 | 亚洲视频久久久 | 波多野结衣精品 | 国产一级在线免费观看 | 2021国产精品| 看全黄大色黄大片 | 中文字幕在线播放一区二区 | 国产在线91精品 | 国产精品国产亚洲精品看不卡 | 久久不卡日韩美女 | 黄a网站 | 24小时日本在线www免费的 | 色婷婷a| 九9热这里真品2 | 麻豆你懂的 | 成人免费观看在线视频 | 91在线精品秘密一区二区 | 婷婷中文字幕在线观看 | 美女久久 | 91在线日韩| 干狠狠| 天天射射天天 | 天天操偷偷干 | 欧美色图狠狠干 | 精品一区三区 | 天天色中文 | 在线观看亚洲精品视频 | 一区二区不卡高清 | 亚洲欧美观看 | 在线观看日韩免费视频 | 久久精品99精品国产香蕉 | 香蕉一区 | 久久久亚洲麻豆日韩精品一区三区 | 国产亚洲精品久久久久5区 成人h电影在线观看 | 亚洲欧美成人综合 | 成人午夜电影在线播放 | 中文字幕在线播放日韩 | 亚洲天堂网在线视频观看 | 999热线在线观看 | 一区二区三区中文字幕在线观看 | 精品国产免费久久 | 国产精品岛国久久久久久久久红粉 | 免费在线激情视频 | 日韩有码在线播放 | 香蕉视频网站在线观看 | 99视频精品视频高清免费 | 久草男人天堂 | 一区二区视频在线观看免费 | 69久久夜色精品国产69 | 免费日韩一区 | 碰超在线 | av一区二区三区在线播放 | avwww在线| 欧美一级网站 | 久久久免费在线观看 | 日韩精品一区二区三区水蜜桃 | 欧美粗又大 | 国产少妇在线观看 | 成人久久久久久久久久 | 国产精品久久久久久久久久久不卡 | 亚洲日本一区二区在线 | 国产日韩欧美在线看 | 久久夜色精品国产亚洲aⅴ 91chinesexxx | 九色最新网址 | 国产色婷婷在线 | 国内精品久久久久久久久久久 | 久久精品电影网 | 日韩毛片精品 | 亚洲综合射 | 91最新在线视频 | 久久日韩精品 | 五月婷婷狠狠 | 国产精品大全 | 国产一级电影免费观看 | 99精品99| 久久精品国产一区二区电影 | 国产精品免费在线播放 | 一区二区免费不卡在线 | 手机av在线免费观看 | 激情久久小说 | 日日干夜夜干 | 国产一区在线播放 | 成人va天堂 | av网站在线观看播放 | 日韩啪视频| 一区二区 不卡 | 香蕉视频国产在线观看 | h网站免费在线观看 | 亚洲欧美va | 色wwwww| 99精品免费久久久久久久久日本 | 国色天香第二季 | av资源免费观看 | 日韩亚洲国产中文字幕 | 成年人视频在线 | 国产一级黄 | 亚洲精品在线电影 | 亚洲精品在线免费播放 | 亚洲精品乱码久久久久 | 超碰97网站 | 日韩亚洲欧美中文字幕 | 国产成人免费观看久久久 | 欧美日本一二三 | www.91av在线 | 不卡av电影在线 | 免费久久99精品国产婷婷六月 | 在线观看国产91 | 国产精品视频久久久 | 99在线精品视频在线观看 | 久久99免费| 国产91九色视频 | 成人a视频 | 久久免费视频在线观看6 | 国产91大片 | 一区二区三区四区五区在线视频 | 在线免费看黄网站 | 国产精品久久久久久久久搜平片 | 免费a网站| 精品久久久久久亚洲综合网站 | 福利二区视频 | 久久视频在线免费观看 | 久久免费资源 | 国产精品都在这里 | 日日草av | 超碰av在线播放 | 97视频免费播放 | 中文字幕a在线 | 国产va精品免费观看 | 欧美日韩国产一区二区三区在线观看 | 久久免费视频国产 | 日本韩国精品一区二区在线观看 | 国产精品高潮呻吟久久av无 | 国产成人一区二区三区免费看 | 国偷自产中文字幕亚洲手机在线 | 欧美一区二区三区在线观看 | 久久久久久久久久久久亚洲 | 91丨九色丨国产在线观看 | 精品久久久久久亚洲综合网站 | 午夜美女福利直播 | a成人v在线| 69国产精品视频免费观看 | 国产亚洲欧美日韩高清 | 日韩精品不卡 | 久久ww| 国产精品av免费 | 久久久久久网站 | 91日韩精品 | 四虎国产永久在线精品 | 99久久国产免费看 | 久久久男人的天堂 | 西西www4444大胆视频 | 在线国产激情视频 | 久久久久成人精品免费播放动漫 | 91污在线 | 91色国产在线 | 中文字幕在线影院 | 91色综合| h久久| 久久久私人影院 | 97国产超碰在线 | 久久综合久久八八 | 欧美视屏一区二区 | 日韩av偷拍 | 日韩,中文字幕 | 国产精久久久久久妇女av | 999电影免费在线观看2020 | 免费观看十分钟 | 91激情小视频 | 成人毛片久久 | 九九热在线观看视频 | 久久婷婷一区二区三区 | 激情开心网站 | 久久免费99精品久久久久久 | 日韩一区二区三区免费电影 | 亚洲精品国产区 | 麻豆影视在线观看 | 精品国产亚洲一区二区麻豆 | 免费在线观看av | 天天射天天做 | 亚洲色图激情文学 | 成人h在线播放 | 国产亚洲综合在线 | 一二三区在线 | 最近最新中文字幕 | 91av蜜桃| 国产在线观看黄 | 一二三精品视频 | 日本高清中文字幕有码在线 | 国产91影院 | 久久综合成人网 | 超碰伊人网 | 日韩欧美在线一区二区 | 麻豆久久久久久久 | 久久日本视频 | 亚洲精品色婷婷 | av网站在线观看播放 | 麻豆久久久 | www四虎影院 | 久久人人爽视频 | 久久综合九色欧美综合狠狠 | 国产电影一区二区三区四区 | 久久婷婷一区 | 亚洲 欧美 变态 国产 另类 | 欧美日韩网址 | 麻豆免费观看视频 | 国产亚洲成av片在线观看 | 欧美日韩3p| 天天综合久久综合 | 国产又粗又猛又爽又黄的视频免费 | 国产精品久久久久久久久蜜臀 | 色综合咪咪久久网 | 玖玖玖影院 | 免费黄色在线播放 | 成人毛片a | 日本巨乳在线 | 在线播放第一页 | 日韩欧美视频一区二区 | 精品天堂av| 日韩av不卡在线观看 | 亚洲欧美国内爽妇网 | 韩日色视频 | 日韩激情一二三区 | 18做爰免费视频网站 | 99免费观看视频 | 能在线看的av | 一区二区三区免费在线观看 | 日韩精品免费一线在线观看 | 日韩激情一二三区 | 人人舔人人爱 | 人人狠| 国内精品久久天天躁人人爽 | 在线观看成年人 | 欧美精品成人在线 | 在线免费观看黄色 | 久久久国产精品一区二区中文 | 欧美日在线 | 91九色蝌蚪视频 | 午夜视频在线观看网站 | 又黄又刺激视频 | 久久精品中文 | 国产在线看 | 美女免费视频一区 | 中文字幕九九 | 国产91综合一区在线观看 | 97视频在线观看视频免费视频 | 久久人人爽人人爽人人片 | 婷婷av网站 | 欧美精品亚洲二区 | 日本黄色免费电影网站 | 国产又粗又猛又爽又黄的视频先 | 激情网五月婷婷 | 在线观看视频福利 | 久久亚洲人 | 99久久婷婷国产 | 国产精品麻豆99久久久久久 | 不卡国产在线 | 97超碰在线久草超碰在线观看 | 99热在线国产精品 | 日韩视频区 | 国产在线观看午夜 | 国产黄色一级片在线 | 亚洲综合色站 | 韩国av一区二区三区在线观看 | 韩国av电影在线观看 | 欧美一级久久久 | 国产成人精品免费在线观看 | 黄色不卡av | 久久国产精品一区二区 | 欧美日韩精品综合 | 国产高清亚洲 | 精品一区二区影视 | 国产剧情在线一区 | 国产精品99久久久久久小说 | 久久精品免视看 | 狠狠色丁香久久婷婷综合丁香 | 国产91影视 | 国产原创在线观看 | 美女免费视频观看网站 | 中文字幕观看在线 | 四虎国产精品成人免费影视 | 日韩 在线 | 欧美日韩三区二区 | 玖草影院 | 欧美射射射 | 免费黄色在线 | 久草在线精品观看 | 69久久久久久久 | 婷婷伊人网 | 蜜臀久久99精品久久久无需会员 | 91精品视频在线看 | 国产精品美女毛片真酒店 | 中文字幕第一页在线vr | 高清av在线 | 国产在线中文 | 日韩av影视在线观看 | 在线91播放 | 一区二区电影在线观看 | 亚洲激情p | 亚洲首页 | 久久久久久蜜av免费网站 | 在线观看av网站 | 国产精品一区二区三区免费视频 | 中文字幕免费观看全部电影 | 日韩中文字幕免费视频 | 深爱综合网 | 狠狠干.com | 在线观看久久久久久 | 国产字幕av| 天天操天天射天天舔 | 五月婷婷中文字幕 | 91色蜜桃| 999男人的天堂 | 国产精品国产三级国产aⅴ无密码 | 成人动漫精品一区二区 | 久草综合视频 | 久草免费色站 | 青青河边草观看完整版高清 | 国产精品video爽爽爽爽 | 九色porny真实丨国产18 | 国产99久久精品 | 国产精品日韩高清 | 成人三级网址 | 夜夜骑日日操 | 国产99视频在线观看 | 涩涩爱夜夜爱 | 成人教育av | 久久人人爽人人爽人人片av软件 | 国产 日韩 在线 亚洲 字幕 中文 | 国产在线一线 | 欧美日本一区 | 五月婷婷黄色网 | 欧美日韩国产在线 | 97久久久免费福利网址 | 毛片基地黄久久久久久天堂 | 国产精品高潮在线观看 | 男女拍拍免费视频 | 亚洲综合色激情五月 | 国产99久久久欧美黑人 | 国产视 | 国产精品不卡av | 久久久国际精品 | 亚洲三级在线免费观看 | 一级α片免费看 | 欧美a级一区二区 | 中文字幕国产一区二区 | 欧美综合在线视频 | 国产美女精彩久久 | 中文字幕免费一区 | 中文字幕日韩一区二区三区不卡 | jizz999| 一区二区精品视频 | 亚洲精品视频在线观看免费视频 | 亚洲精品午夜久久久 | 国产一区av在线 | 国产成人福利在线观看 | 成人一区影院 | 国语黄色片 | 国产综合久久 | 亚洲精品国偷拍自产在线观看蜜桃 | 亚洲成成品网站 | 国产精品一区二区白浆 | 久久综合狠狠 | 一区二区视频免费在线观看 | 视频在线观看入口黄最新永久免费国产 | 精品一区二区三区四区在线 | 人人爽人人av| 欧洲成人av | 欧美日韩国产精品一区二区三区 | 特级毛片在线观看 | 亚洲高清激情 | 国产精品国产亚洲精品看不卡 | 亚洲aⅴ一区二区三区 | 又湿又紧又大又爽a视频国产 | 国内精品国产三级国产aⅴ久 | 亚洲综合视频在线播放 | 超碰99在线 | 又色又爽又激情的59视频 | 欧美日韩视频在线播放 | 99产精品成人啪免费网站 | 狠狠干狠狠艹 | 夜夜操天天操 | 国产免费观看高清完整版 | 91精品1区 | 国产黄a三级三级 | 久久欧美在线电影 | 天堂av免费在线 | 九九热精品视频在线观看 | 九九在线视频 | 国产综合福利在线 | 亚洲一区二区黄色 | 久久综合久久综合这里只有精品 | 天天操网站 | 日韩 在线观看 | 国产香蕉视频在线观看 | 狠狠狠干| 欧美激情精品 | 日韩欧美成人网 | 精品在线视频观看 | 久久天天躁夜夜躁狠狠85麻豆 | 久久久久久久亚洲精品 | 美女网站视频一区 | 欧美淫aaa免费观看 日韩激情免费视频 | 国产99久久九九精品免费 | 丁香九月激情综合 | 99热最新精品 | 六月丁香激情综合 | 夜夜视频 | 国产在线观看a | 日韩欧美在线观看一区二区 | 一区二区三区视频 | 日日夜夜婷婷 | 久久国产麻豆 | 国产精品久久久久久久av电影 | 成人97视频一区二区 | 激情图片区 | 不卡日韩av | 国产精品一区二区中文字幕 | 五月激情电影 | 成人一级片在线观看 | 99久久精品国产毛片 | 国产在线观看免费观看 | 伊人久久五月天 | 天天操天天操天天操 | 国产不卡在线视频 | 久久这里 | 91福利视频免费 | 欧美aaa级片| 亚洲最大色 | 蜜桃视频在线视频 | 天天躁天天操 | 久久久久久久久久电影 | 69精品视频 | 天天躁天天操 | 91插插插免费视频 | 亚洲蜜桃av | 国语自产偷拍精品视频偷 | 国产视频在线免费 | 天天射天天操天天色 | 国产精品久久久久久久久毛片 | 午夜.dj高清免费观看视频 | 国产精品女人久久久 | 日韩免费av片 | 亚洲高清国产视频 | 丁香六月国产 | 欧美一区二视频在线免费观看 | 国产精品三级视频 | 国产99久久久国产精品免费看 | av成人免费 | www.久草视频 | 激情视频免费在线 | 国产一区二区三精品久久久无广告 | 白丝av免费观看 | 四虎www com | 精品99在线观看 | 成人黄色大片网站 |