黄a在线观看-黄a在线-黄a大片-黄色片在线看-黄色毛片免费-黄色大片网站

您的位置:首頁技術(shù)文章
文章詳情頁

讓chatgpt將html中的圖片轉(zhuǎn)為base64方法示例

瀏覽:165日期:2022-06-01 18:51:10
目錄
  • 前言
  • 思路
  • 實現(xiàn)過程
    • 遞歸讀取指定目錄下的所有 html 文件路徑 htmlPaths
    • 獲取每個 html 里面的圖片 src
      • 獲取 html 字符串的所有圖片 src
      • 忽略注釋的代碼
      • 本身是 base64,則忽略
      • 忽略 Thymeleaf 語法
      • 結(jié)合起來,封裝成一個函數(shù)
  • src 轉(zhuǎn) base64
    • 最后將新的 html 替換舊的 html
      • 性能優(yōu)化
        • 總的代碼
          • 總結(jié)

            前言

            故事要從我們公司的新官網(wǎng)說起,新官網(wǎng)是叫外包做的,前后端沒有分離,對,你沒聽錯,都到了 2023 年的今天,新項目依然是前后端混在一起,堆成一座屎山,然后通過模板渲染展示網(wǎng)頁。

            當(dāng)然,對于非研發(fā)的,技術(shù)棧咋樣都不重要,又不是不能用~

            各位看官,聽到上面的情況,是不是隱隱約約感覺到會有啥驚喜(驚嚇)

            哈,你來翻譯翻譯,什么叫驚喜?好,那我來翻譯翻譯,驚喜(bushi)就是自從新官網(wǎng)上線后,PV(頁面訪問量)下降了 50%。是的,你沒看錯,原因就是打開官網(wǎng)巨卡,一般需要 7~8s。

            就單單請求個 html,就需要耗費 7s+的時間。

            運營那邊被老板親切問候后,就跑過來找我們研發(fā)幫忙看問題,把情況說的特嚴重,唉,最終還不是得我們幫忙處理爛攤子

            那沒辦法,我們就開始分析一通,啪的一下,很快呀,就找到了加載賊慢的原因:

            • 剛才所說的服務(wù)端響應(yīng)慢,那這個交給后端去搞就好(這個是重中之重)
            • 官網(wǎng)的圖片請求是在是太多了,而我們知道 http 請求是有次數(shù)限制的(http1.1),太多的話其他只能處于阻塞狀態(tài)

            那第二點自然是需要前端去搞了,圖片太多,導(dǎo)致 http 請求太多,那好辦,把小圖片轉(zhuǎn) base64 不就好。 嗯,思路很簡單,如果是前后端分離的項目,我們一般無腦配置 webpack url-loader 的體積限制就好,或者配置 webpack5 的 asset,即在導(dǎo)出一個 data URI 和發(fā)送一個單獨的文件之間自動選擇:

            rules: [    {      test: /\.(png|jpe?g|svg|gif)$/,      //webpack4 start      use: [{  loader: "url-loader",  options: { limit: 10 * 1024 },},      ],      //webpack4 end      // webapack5 start      type:"asset/inline",      parser: {dataUrlCondition: {  maxSize: 10 * 1024, // 小于10k則轉(zhuǎn)為base64},      },      // webapack5 end    },  ],

            很簡單對吧,但當(dāng)你想快速 cv 以上配置的時候,發(fā)現(xiàn),前端代碼都是混在后端代碼里面,一堆 html 文件,html 里面又混雜著一堆的 Thymeleaf 語法(Thymeleaf 是一個跟 Velocity、FreeMarker 類似的模板引擎,它可以完全替代 JSP,JSP??都啥年代了)

            越看越不對勁,正所謂理想很豐滿,現(xiàn)實很骨感,唉,只能長嘆一聲。

            但沒辦法,領(lǐng)導(dǎo)可不管用啥方式,只要有個方法把 html 里面圖片小于某個指定值,如 10k,那就轉(zhuǎn) base64,讓這些小圖片不走 http 請求。

            思路

            那么,正常的路走不通(當(dāng)然也有可能有其他更快捷的方式,只是比較趕,暫時想不到更好、更簡單的方式實現(xiàn)),那就另辟蹊徑。

            全體流程如下:

            1. mvn clean // marven 清空輸出目錄

            2. mvn compile // marven編譯

            3. 將所有 html 的的小圖片都轉(zhuǎn) base64

            4. mvn package // marven 打包

            以上主要重點關(guān)注第3點,既然要將所有 html 的的小圖片都轉(zhuǎn) base64,那么自然而然可以通過寫個 node 腳本來實現(xiàn),大概可以分為以下幾個步驟:

            • 遞歸讀取指定目錄下的所有 html 文件路徑 htmlPaths,這里我們假設(shè)所有 html 都放在 backend/templates 里面
            • 遍歷每個路徑,讀取對應(yīng)的 html,然后通過正則匹配到每個 html 里面的所有 img 對應(yīng)的 src,存放到 imgSrcs 里面
            • 遍歷每個 img 的 src,讀取 imageBuffer,并轉(zhuǎn)為 base64
            • 再將得到的 base64 替換原先的 src
            • 最后將新的 html 替換舊的 html

            上面的步驟應(yīng)該比較清晰的,不過,等一下,最近 chatgpt 不是很火嗎,讓它來寫不就好~

            實現(xiàn)過程

            遞歸讀取指定目錄下的所有 html 文件路徑 htmlPaths

            首先判斷入口目錄的下的內(nèi)容,是文件的話就判斷是否以.html 結(jié)尾,是的話則放入 htmlFilePaths,是目錄的話則遞歸遍歷,那我們來問神奇的 chatgpt:

            嗯,很不錯,第一次幾乎完美,順利拿到所有的 html 路徑

            獲取每個 html 里面的圖片 src

            自然而然想到用正則匹配來做,所以我馬上問:

            一看結(jié)果就不是我想要的,當(dāng)然也是我描述的不清晰,導(dǎo)致 chatgpt 以為要獲取 html 文檔的圖片 src

            獲取 html 字符串的所有圖片 src

            應(yīng)該問要獲取 html 字符串的,所以我接著問:

            // 定義匹配圖片標(biāo)簽的正則表達式var imgRegex = /<img\s+[^>]*src=[""]([^""]*)[""][^>]*>/gi;// 要解析的HTML字符串var htmlString = "<img src="image1.jpg"> <img src="image2.jpg">";// 遍歷所有匹配到的圖片標(biāo)簽并獲取其src屬性var matches;while ((matches = imgRegex.exec(htmlString)) !== null) {  var src = matches[1];  console.log(src);}

            運行后,得到的結(jié)果:

            不錯不錯,再接再厲。

            忽略注釋的代碼

            但 html 代碼可能 img 被注釋了,如 <!-- <img src='xxx.jpg'> -->,那么我們實際上沒必要去轉(zhuǎn)換,故我們讓個讓其忽略注釋的:

            那我們來試試,將其中注釋代碼中插入 img,看看是否會解析:

            // 定義匹配圖片標(biāo)簽的正則表達式var imgRegex = /<img\s+[^>]*src=[""]([^""]*)[""][^>]*>/gi;// 定義匹配注釋的正則表達式var commentRegex = /<!--[\s\S]*?-->/g;// 要解析的HTML字符串var htmlString = "<!-- <img src="image3.jpg"> --> <img src="image1.jpg"> <img src="image2.jpg">";// 刪除所有注釋htmlString = htmlString.replace(commentRegex, "");// 遍歷所有匹配到的圖片標(biāo)簽并獲取其src屬性var matches;while ((matches = imgRegex.exec(htmlString)) !== null) {  var src = matches[1];  console.log(src);}

            可以看到被注釋掉的 image3 不會被匹配到

            本身是 base64,則忽略

            繼續(xù)繼續(xù),但圖片 src 可能一開始就是 base64 了,就沒必要轉(zhuǎn)了,而 base64 是 data:image 開頭的,所以我們再讓它加下條件:

            // 定義匹配圖片標(biāo)簽的正則表達式var imgRegex = /<img\s+[^>]*src=[""]((?!data:image)[^""]*)[""][^>]*>/gi;// 要解析的HTML字符串var htmlString = "<img src="image1.jpg"> <img src="data:image/png;base64,iVBORw0KG..."> <img src="image2.jpg"><!-- <img src="image3.jpg"> -->";// 遍歷所有匹配到的不以 data:image 開頭的圖片標(biāo)簽并獲取其src屬性var matches;while ((matches = imgRegex.exec(htmlString)) !== null) {  var src = matches[1];  console.log(src);}

            我們運行看下結(jié)果

            成功跳過了 base64 的,但是,好像沒有了忽略注釋代碼的條件,啊這。。

            所以我就讓他忽略注釋和 base64 的,但好像一直丟三落四,按下葫蘆浮起瓢,大家可以看看

            上面的注釋的被匹配到了

            注釋又又又被匹配到了,算了,我直接問如果忽略 base64,然后再組合忽略注釋的就好,組合后的代碼如下:

            const imgRegex = /<img\s+[^>]*src=[""]((?!data:image)[^""]*)[""][^>]*>/gi;// 定義匹配注釋的正則表達式const commentRegex = /<!--[\s\S]*?-->/g// 刪除所有注釋var htmlString = "<img src="image1.jpg"> <img src="data:image/png;base64,iVBORw0KG..."> <img src="image2.jpg"><!-- <img src="image3.jpg"> -->";htmlString = htmlString.replace(commentRegex, "")// 遍歷所有匹配到的圖片標(biāo)簽并獲取其src屬性const imgSrcs = []let matches;while ((matches = imgRegex.exec(htmlString)) !== null) {const src = matches[1];imgSrcs.push(src)}console.log(imgSrcs)

            忽略 Thymeleaf 語法

            還有個問題,img 的 src 可能是通過服務(wù)端渲染導(dǎo)入的,那么我們要忽略掉,大致語法為 <img th:src="${t.imgUrl1}" />,也就是以 th:開頭的

            // 定義匹配圖片標(biāo)簽的正則表達式var imgRegex = /<img\s+[^>]*src=[""]((?!data:image|@{)(?!\s*th:src)[^""]*)[""][^>]*>/gi;// 要解析的HTML字符串var htmlString = "<img src="image1.jpg"> <img src="@{some/url}"> <img src="data:image/png;base64,iVBORw0KG..."> <img src="image2.jpg" th:src="@{some/other/url}">";// 遍歷所有匹配到的不以 data:image、@{ 和包含 th:src 的圖片標(biāo)簽并獲取其src屬性var matches;while ((matches = imgRegex.exec(htmlString)) !== null) {  var src = matches[1];  console.log(src);}

            上面的@{可以忽略,實際上也是屬于 Thymeleaf 語法,屏蔽 th:src 即可

            結(jié)合起來,封裝成一個函數(shù)

            function getImgSrcInHtml(htmlString) {  /** 定義匹配圖片標(biāo)簽的正則表達式   * 1.src中不以data:image開頭,即不以base64開頭,沒必要再轉(zhuǎn)化了   * 2.不是th:src   * 3.忽略注釋的代碼   * */  const imgRegex = /<img\s+[^>th:]*src=[""]((?!data:image)[^""]*)[""][^>]*>/gi;  // 定義匹配注釋的正則表達式  const commentRegex = /<!--[\s\S]*?-->/g  // 刪除所有注釋  htmlString = htmlString.replace(commentRegex, "")  // 遍歷所有匹配到的圖片標(biāo)簽并獲取其src屬性  const imgSrcs = []  let matches;  while ((matches = imgRegex.exec(htmlString)) !== null) {    const src = matches[1];    imgSrcs.push(src)  }  return imgSrcs.filter(Boolean)}

            運行下,看下結(jié)果:

            src 轉(zhuǎn) base64

            自此,我們拿到所有 html 里面的 src 了,那么判斷下是否小于指定 size,是的話轉(zhuǎn) base64

            獲取文件大小可通過 fs 的 statSync 來拿到對應(yīng)文件的 size,如下

            /** 獲取文件大小 */function getFileSize(filePath) {  const stat = fs.statSync(filePath)  return stat.size}

            如果滿足條件則將圖片轉(zhuǎn) base64,而圖片本身是 Buffer,所以要轉(zhuǎn)一下:

            /** 圖片轉(zhuǎn)成base64 */function imageToBase64(filePath) {  // 讀取圖片文件  const imageBuffer = fs.readFileSync(filePath)  const extname = getExtname(filePath)  // 將圖片文件轉(zhuǎn)換為 base64 編碼字符串  const base64String = Buffer.from(imageBuffer).toString("base64")  return `data:image/${extname.slice(1)};base64,${base64String}`}

            通過加上前綴data:image/${extname.slice(1)};base64,,其中 extname 是文件后綴名,通過path.extname拿到:

            /** 獲取后綴名 */function getExtname(filePath) {  return path.extname(filePath)}

            每得到一個 base64,則替換原先的 src:

            htmlString = htmlString.replace(src, imgBase64)

            最后將新的 html 替換舊的 html

            html 下滿足條件的 src 全部替換好后,就可以將新的 html 替換老的了,實際上也就是重寫回去:

            writeFile(htmlPath, htmlString)

            性能優(yōu)化

            但我們發(fā)現(xiàn)整個過程中有兩處可以優(yōu)化代碼:

            • 如果 src 大于指定尺寸,那么下次遇到直接跳過,不再獲取尺寸大小
            • 一個圖片可能被多處引用到,那么轉(zhuǎn) base64 后,下次遇到就沒必要再轉(zhuǎn)了,直接復(fù)用即可

            針對第一點,我們可以通過聲明一個 Set,存放大于指定尺寸的 src:

            for (const src of imgSrcs) {      /** 之前已經(jīng)大于了,這次遇到就直接跳過即可 */      if (imgOverSizeSet.has(src)) continue      let absoluteSrc = src      // 如果不是相對路徑,那么轉(zhuǎn)換為絕對路徑      if (!src.startsWith(".")) absoluteSrc = path.join(STATIC_PATH, src)      // 不存在或者超出限制,則不替換      if (getFileSize(absoluteSrc) &gt;= FILE_LIMIE_SIZE) {imgNotExistOrOverSizeSet.add(src)continue      }}

            針對第二點,我們可以通過聲明一個 Map,key 為 src,value 為 base64:

            /** 存imgSrc -&gt; 圖片base64 */const imgSrc2Base64Map = new Map()

            每次判斷到對應(yīng)的 src 有值,則直接拿之前的 base64,不再轉(zhuǎn)化:

            let imgBase64 = imgSrc2Base64Map.get(src)if (!imgBase64) {  imgBase64 = imageToBase64(absoluteSrc)  imgSrc2Base64Map.set(src, imgBase64)}

            總的代碼

            const fs = require("fs")const path = require("path")function resolve(relativePath) {  return path.resolve(__dirname, relativePath)}/** 靜態(tài)資源路徑 */const STATIC_PATH = resolve("xxx")/** html模板路徑 */const TEMPLATE_PATH = resolve("yyy")/** 文件大小限制 10K */const FILE_LIMIE_SIZE = 1024 * 10/** 圖片轉(zhuǎn)成base64 */function imageToBase64(filePath) {  // 讀取圖片文件  const imageBuffer = fs.readFileSync(filePath)  const extname = getExtname(filePath)  // 將圖片文件轉(zhuǎn)換為 base64 編碼字符串  const base64String = Buffer.from(imageBuffer).toString("base64")  return `data:image/${extname.slice(1)};base64,${base64String}`}/** 獲取文件大小 */function getFileSize(filePath) {  const stat = fs.statSync(filePath)  return stat.size}/** 獲取后綴名 */function getExtname(filePath) {  return path.extname(filePath)}/** 獲取所有html路徑 */function getHtmlPaths(dir, filePaths = []) {  const files = fs.readdirSync(dir);  for (const file of files) {    const filePath = path.join(dir, file);    const fileStat = fs.statSync(filePath);    if (fileStat.isDirectory()) {      getHtmlPaths(filePath, filePaths);    } else if (fileStat.isFile() && getExtname(filePath) === ".html") {      filePaths.push(filePath);    }  }  return filePaths;}function readFile(filePath) {  return fs.readFileSync(filePath, "utf-8")}function writeFile(filePath, source) {  return fs.writeFileSync(filePath, source)}/** 獲取html中滿足規(guī)則的img src */function getImgSrcInHtml(htmlString) {  /** 定義匹配圖片標(biāo)簽的正則表達式   * 1.src中不以data:image開頭,即不以base64開頭,沒必要再轉(zhuǎn)化了   * 2.不是th:src   * 3.忽略注釋的代碼   * */  const imgRegex = /<img\s+[^>th:]*src=[""]((?!data:image)[^""]*)[""][^>]*>/gi;  // 定義匹配注釋的正則表達式  const commentRegex = /<!--[\s\S]*?-->/g  // 刪除所有注釋  htmlString = htmlString.replace(commentRegex, "")  // 遍歷所有匹配到的圖片標(biāo)簽并獲取其src屬性  const imgSrcs = []  let matches;  while ((matches = imgRegex.exec(htmlString)) !== null) {    const src = matches[1];    imgSrcs.push(src)  }  return imgSrcs.filter(Boolean)}/** 主程序 */function main() {  const htmlPaths = getHtmlPaths(TEMPLATE_PATH)  /** 存imgSrc -> 圖片base64 */  const imgSrc2Base64Map = new Map()  /** 存不存在,或者超過指定大小的img */  const imgNotExistOrOverSizeSet = new Set()  htmlPaths.forEach(htmlPath => {    let htmlString = readFile(htmlPath)    const imgSrcs = getImgSrcInHtml(htmlString)    if (!imgSrcs.length) return    for (const src of imgSrcs) {      if (imgNotExistOrOverSizeSet.has(src)) continue      let absoluteSrc = src      // console.log(imgSrcs)      // 如果不是相對路徑,那么轉(zhuǎn)換為絕對路徑      if (!src.startsWith(".")) absoluteSrc = path.join(STATIC_PATH, src)      const isExist = fs.existsSync(absoluteSrc)      if (!isExist) console.log("not isExist", src)      // 不存在或者超出限制,則不替換      if (!isExist || getFileSize(absoluteSrc) >= FILE_LIMIE_SIZE) {imgNotExistOrOverSizeSet.add(src)continue      }      let imgBase64 = imgSrc2Base64Map.get(src)      if (!imgBase64) {imgBase64 = imageToBase64(absoluteSrc)imgSrc2Base64Map.set(src, imgBase64)      }      htmlString = htmlString.replace(src, imgBase64)    }    // 替換好后,寫回    writeFile(htmlPath, htmlString)  })}main()

            總結(jié)

            因為太多的小圖片導(dǎo)致 http 請求阻塞,所以要把滿足條件的小圖片轉(zhuǎn)為 base64, 而前端的 html 混在在后端代碼里面,且里面混雜著 Thymeleaf 模板語法,想通過 webpack 打包的方式看起來好像不行(至少目前不知道咋辦),所以退而求其之自己寫個腳本來處理。

            大致思路就是:

            • 讀取所有 html,匹配到里面的所有 img 的 src
            • 匹配的過程中我們要忽略注釋的代碼、已經(jīng)是 base64 的圖片、Thymeleaf 模板語法的,涉及到挺多的正則語法,這部分我通過調(diào)戲 chatgpt 來實現(xiàn),雖然過程中不是十分完美
            • src 可能被重復(fù)用到,所以這里又可以優(yōu)化為:
              • 如果 src 大于指定尺寸,那么下次遇到直接跳過,不再獲取尺寸大小
              • 一個圖片可能被多處引用到,那么轉(zhuǎn) base64 后,下次遇到就沒必要再轉(zhuǎn)了,直接復(fù)用即可

            以上就是讓chatgpt將html中的圖片轉(zhuǎn)為base64方法示例的詳細內(nèi)容,更多關(guān)于chatgpt html圖片轉(zhuǎn)base64的資料請關(guān)注其它相關(guān)文章!

            標(biāo)簽: JavaScript
            主站蜘蛛池模板: 成人黄色激情网 | 中文字幕视频网 | 与子敌伦刺激对白播放 | 99久久免费看精品国产一区 | 久久五月综合 | 乱色熟女综合一区二区三区 | 国产真实交换配乱淫视频, 国产真实精品久久二三区 国产真实乱免费高清视频 国产制服丝袜一区 | 综合免费视频 | 国产精品粉嫩懂色av | 国产片久久久 | 暖暖视频日本在线观看 | 国产精品白浆一区二小说 | 精品人妻人人做人人爽 | 91久久久久久久久久久久久 | 久久精品国产亚洲一区二区 | 婷婷激情综合网 | 精品欧美小视频在线观看 | 色综合a怡红院怡红院 | 69影院在线观看 | 久久亚洲精精品中文字幕早川悠里 | 日日夜夜干| 六月天婷婷 | 国产伦精品一区二区三区视频黑人 | 日韩永久免费视频 | 真实国产乱子伦对白视频 | 国产人妻黑人一区二区三区 | 中文字幕色 | 在线免费成人 | 久久99精品久久久久久久久久久久 | 欧美大片视频在线观看 | 国产情侣真实露脸在线 | 国产精品黑色丝袜久久 | 女人扒开屁股桶爽30分钟 | 国产青草视频 | 91亚洲区| 日韩精品乱码av一区二区 | 免费观看污网站 | 久久久久久久久久久久久久免费看 | 国产床戏无遮挡免费观看网站 | 97免费超碰| 国产五月 | 超碰在线人人草 | 国产在线不卡一区 | 久久久久久久女国产乱让韩 | 国产精品99久久久久久久久久 | 国产一级片av| 亚洲综合色丁香婷婷六月图片 | 成年人黄色片网站 | 日本肉体xxxx裸体xxx免费 | 亚洲va韩国va欧美va | 麻豆一区二区三区四区 | 五月天婷婷色综合 | 日本xxxxl码在中国是几码 | 久久人人爽人人爽爽久久 | 日韩中文字幕视频在线观看 | 黑人一级淫片40厘米 | 日日噜夜夜噜 | 久久99亚洲精品久久99果 | 一级视频在线播放 | 国产精品久久久久久影视 | 亚洲 中文 欧美 日韩 在线观看 | 污视频网站在线 | 国产精品久久久久久久久久久不卡 | 五月天伊人网 | av永久免费观看 | 亚洲精品乱码久久久久久蜜桃不卡 | 欧美日韩国内 | 91黄色大片| 国产这里有精品 | 无码人妻av一区二区三区蜜臀 | 好男人在在线社区www在线影院 | 三级做爰在线观看视频 | 手机天堂网| 亚洲欧洲日产国产 最新 | 99精品视频在线免费观看 | 久久综合久久综合九色 | av黄色成人 | 主人~别揉了~尿了~小说 | 黄片毛片在线看 | 久久久久国产精 | 99色热| 免费看黄在线看 | 舒淇裸体午夜理伦 | 激烈的性高湖波多野结衣 | 日本www视频在线观看 | 老色鬼在线精品视频在线观看 | 国产精品女同一区二区久久夜 | 精品国产一区二区三区四区五区 | 在线观看中文字幕亚洲 | 男人的天堂日本 | 精品国产一区二区三区久久久蜜臀 | 国产精品一区二区三区四区 | 亚洲精品成人av在线观看爽翻天 | 欧美狂猛xxxxx乱大交3 | 9l视频自拍九色9l视频九色 | 在线观看中文av | 中国精品久久久 | 偷拍一区二区三区在线婷婷 | 在线亚洲一区二区 | 欧美大片在线 | 很嫩很紧直喷白浆h | 内射爽无广熟女亚洲 | 精品女同一区二区三区 | 特大巨黑吊xxxx高潮 | 欧美高清二区 | 嫩草av久久伊人妇女超级a | 亚洲精品成人网站在线观看 | 天天爱夜夜爽 | 无码专区一va亚洲v专区在线 | 国产精品久久久久久久龚玥菲 | 一二级毛片| 俄罗斯乱妇 | 国产乱子伦精品无码专区 | 国产精品久久久久久久龚玥菲 | 午夜极品视频 | 亚洲天堂视频网站 | www日日| 亚洲精品.www| 久久美女视频 | 亚洲成人免费视频 | 欧美久久网 | 欧美巨大另类极品videosbest | 大屁股肥熟女流白浆 | 狍与女人做爰毛片 | 欧美日韩国产免费 | 亚洲成av人片在线观看香蕉 | 少妇做爰免费视看片 | 亚洲一二三不卡 | 久草成人在线 | 国产精品久久久久久久久久 | 国产精品女同一区二区软件 | 欧美日韩激情在线一区二区三区 | 91文字幕巨乱亚洲香蕉 | 孕妇怀孕高潮潮喷视频孕妇 | 精品日韩欧美一区二区在线播放 | 又湿又紧又大又爽a视频国产 | 精品成人免费视频 | 日韩欧美日本 | videosex抽搐痉挛高潮 | 国产亚洲精品久久久久久久久动漫 | 久久精品黄 | 免费人成无码大片在线观看 | 国产男女猛烈无遮挡免费网站 | 少妇影院7788 | 亚洲国产精品久久久久秋霞1 | 潘金莲激情呻吟欲求不满视频 | 国产成人艳妇aa视频在线 | 人妻体体内射精一区二区 | 偷偷久久 | 毛葺葺老太做受视频 | 超碰69| 久久超碰97人人做人人爱 | 亚洲欧洲日韩av | 欧美日韩一卡2卡三卡4卡 乱码欧美孕交 | 久久泄欲网 | 牛鞭伸入女人下身的真视频 | 97青草超碰久久国内精品91 | 久久久欧美 | 国产女在线 | 99国产在线观看 | 好av在线 | 粉嫩一区 | 色一情一乱一伦一区二区三欧美 | 亚洲乱码国产乱码精品精 | 成片免费观看视频大全 | 狠狠色狠狠干 | 奇米影视奇米色 | 国产综合久久久久久鬼色 | 丰满少妇奶水一区二区三区 | 日本在线免费观看 | 精品美女一区 | 精品国产乱码久久久久久移动网络 | 狠狠躁天天躁夜夜添人人 | 草比网站 | 日韩中文欧美 | 亚洲色妞| 国产极品美女高潮无套小趴菜 | 无码一区二区三区视频 | 欧美大片高清免费观看 | 久久久精品视频免费 | 97人人模人人爽人人少妇 | 亚洲成av人片在线观看 | 中文字幕+乱码+中文乱码www | h视频在线免费看 | 成人久久大片91含羞草 | 高潮流白浆潮喷在线播放视频 | 精品无人区无码乱码毛片国产 | 黄色免费片 | 国产精品国产三级国产aⅴ9色 | 欧美三级成人理伦 | 性生生活又硬又黄又爽 | 国户精品久久久久久久久久久不卡 | 少妇高潮久久久久久一代女皇 | 国产天天综合 | 精品国产青草久久久久福利 | 日产欧产美韩系列久久99 | 亚洲1区2区精华液 | 狠狠色噜噜狠狠狠狠777米奇 | 国产成人久久av免费高清蜜臀 | 国产99对白在线播放 | 国产精品久久久久久欧美 | 亚洲精品欧美日韩 | 国产无套护士在线观看 | 国产成人久久精品激情 | 全部免费毛片在线播放 | 一级做a爱片性色毛片www | 日本一区二区不卡在线观看 | 噼里啪啦国语高清 | 国产精品久久久久久久免费软件 | 国产青草视频 | 欧美日韩在线观看精品 | 成人免费黄色av | 日韩播放 | 免费啪啪小视频 | 日本护士后进式高潮 | 野花国产精品入口 | 中文字幕一区二区三区免费视频 | 国产福利在线永久视频 | 国产成人精品必看 | 国产伦精品一区二区三区 | yy111122少妇光屁股影院 | 亚洲精品久久夜色撩人男男小说 | 免费入口在线观看 | www成人免费 | 91tv亚洲精品香蕉国产一区 | 好男人www社区在线视频夜恋 | 欧洲成人在线视频 | 成年人毛片| 午夜色网站 | 国产成人精品优优av | 日韩一区2区 | 青青草成人网 | 无码人妻精品一区二 | 国产综合视频一区二区三区 | 我爱我色成人网 | 亚洲色图另类小说 | 亚洲精品网站在线观看你懂的 | 人善交另类亚洲重口另类 | 中文字幕99页 | 九九热com| 亚洲男男无套gv大学生 | 成人黄色激情网 | 人妻仑乱少妇av级毛片 | 久久免费看a级毛毛片 | 天天操操操| 亚洲国产精久久久久久久 | 在线观看中文字幕一区 | 久久精品亚洲中文无东京热 | 免费的毛片视频 | 成人看片17ccom | 6080yyy午夜理论片中无码 | 久久久久9999 | 日韩欧美一区二区在线视频 | 国产精品一区在线播放 | 中文字幕在线网址88第一页 | 91视频播放| 又粗又黑又大的吊av | 国产美女精品aⅴ在线播放 国产美女精品人人做人人爽 | 日本黄色片一级 | 亚洲精品午夜视频 | 99精品热| 一个人免费在线观看视频 | 成人香蕉网 | 欧美日韩一区精品 | 欧美videos另类精品 | 中文字幕制服狠久久日韩二区 | 国产高清一级片 | 一区二区三区午夜 | 亚洲精品国产一区二区在线观看 | 美女张开腿黄网站免费下载 | 91欧美精品午夜性色福利在线 | 在办公室被c到呻吟的动态图 | 在线观看日批 | 成人黄色激情视频 | 99热在线只有精品 | 欧美日韩不卡一区二区 | 四虎永久免费 | 少妇搡bbbb搡bbb搡澳门 | 少妇无码一区二区二三区 | 日日操中文字幕 | 国产又粗又猛又大爽又黄老大爷 | 天天搞天天干 | 伊人网综合网 | 伊人久久大香线蕉综合四虎小说 | 国产三级三级三级精品8ⅰ区 | 国产无遮挡呻吟娇喘视频 | 无码丰满熟妇juliaann与黑人 | 欧美性猛交xxxx乱大交极品 | 日韩欧美国产成人精品免费 | 国产特级全黄一级97毛片 | 精品国产欧美一区二区三区成人 | 亚洲国产丝袜在线观看 | 美女隐私免费观看 | 97se狠狠狠综合亚洲狠狠 | 99久久99久久精品免费看蜜桃 | 91成人精品一区二区三区四区 | 伊人久久大香线蕉av一区 | 白白色2012年最新视频 | 9色在线 | 日本波多野结衣在线 | 国产精品福利在线播放 | 中文字幕在线观看视频地址二 | 免费精品一区二区三区第35 | 亚洲午夜视频在线 | 国产成人夜色高潮福利影视 | www.五月天com | 国模妙妙超大尺度啪啪人体 | 欧美激情一区二区三区 | 日本精品久久久久中文字幕 | 久久精品aⅴ无码中文字字幕蜜桃 | 色婷婷在线观看视频 | 亚洲人成网亚洲欧洲无码 | 亚洲欧洲在线观看 | 人妻少妇边接电话边娇喘 | 在线观看免费一区 | 日本在线高清视频 | 日韩乱码人妻无码系列中文字幕 | 日本成人精品 | 免费网站观看www在线观 | 手机看片日韩久久 | 97人人模人人爽人人喊小说 | 深夜福利网址 | 国产人妻精品区一区二区三区 | 成人综合久久 | 中文字幕av第一页 | 又色又爽又黄高潮的免费视频 | 亚洲精品视 | 午夜精品久久久久久久久久久久久 | 妖精视频黄色 | 国产一级特黄毛片在线毛片 | 在厨房被c到高潮a毛片奶水 | 狠狠做五月深爱婷婷 | 国内自拍视频在线播放 | 中文字幕av一区中文字幕天堂 | 一区二区精品 | 亚洲区欧美区综合区自拍区 | 欧美乱妇高清无乱码 | 成人h在线观看 | 国产亚洲精品aaaa片小说 | 老熟妻内射精品一区 | 丰满人妻翻云覆雨呻吟视频 | 丰满女人又爽又紧又丰满 | 色综合视频一区二区三区44 | 欧美变态口味重另类在线视频 | 国产日产精品一区二区三区四区的观看方式 | 一色屋精品久久久久久久久久 | 美女毛片在线看 | 露脸叫床粗话东北少妇 | 色呦呦在线播放 | 国产又色又爽又黄又免费软件 | 荡女淫春 在线观看69影院 | 美女穴穴 | 粉嫩少妇内射浓精videos | 一级特黄性色生活片 | 久久草在线免费 | 国产a级免费视频 | 乌克兰美女浓毛bbw 九九久久精品国产 | 在线观看日韩一区 | 无码av波多野结衣久久 | 国产日韩av一区二区 | 97国产情侣爱久久免费观看 | 夜夜嗨av禁果av粉嫩av懂色av | 亚洲短视频 | 国产福利一区在线观看 | 日韩欧美无 | 欧美一区三区 | 91不戴套国语对白在线观看 | 国产一区二区在线视频 | 伊人www22综合色 | 叶子楣裸乳照无奶罩视频 | 久久爱另类一区二区小说 | 特级黄录像视频 | 亚洲一级视频在线观看 | 欧美性开放视频 | 56av国产精品久久久久久久 | 午夜精品av | 久久精品一区二区三区不卡牛牛 | 奇米影视第4色 | 国产精品久久午夜夜伦鲁鲁 | 午夜看片网站 | 制服.丝袜.亚洲.中文.综合懂色 | 污污内射久久一区二区欧美日韩 | 91精品一线二线三线 | www.99在线观看 | 亚洲精品久久久久久久久久 | 欧美日韩黄 | 77久久 | 国产猛男猛女无套av | 国产主播一区二区三区 | 日韩一卡二卡在线 | 一级片视频免费 | 久久精品国产精品亚洲 | 青青草超碰在线 | 天天躁夜夜躁狠狠是什么心态 | 久久久久成人免费看a含羞草久色 | 亚洲午夜久久久精品一区二区三剧 | 27美女少妇洗澡偷拍 | 国产精品久久久久久久久久久久午衣片 | 国产精品av久久久久久小说 | 日本免费高清 | 国产主播大尺度精品福利免费 | 女人抽搐喷水高潮国产精品 | 极品美女白嫩呻吟湿淋淋照片 | 亚洲黄色免费 | 毛片h| 国产在线麻豆精品观看 | 亚洲精品乱码久久久久久蜜桃动漫 | 日本黄页视频 | 国产成人精品无码播放 | 免费天堂av| 成人精品视频一区二区三区尤物 | 成人性生交大片免费卡看 | 国产成人精品免费视频大全 | 日本欧美大码aⅴ在线播放 中文人妻无码一区二区三区在线 | 探花视频免费观看高清视频 | 18深夜在线观看免费视频 | 丝袜视频一区 | 亚洲精品午夜久久久久久久灵蛇爱 | 成人福利视频一区二区 | 中国女人高潮hd | 久久av无码精品人妻系列果冻传媒 | 182tv在线观看免费午夜免费线路 | 偷拍欧美亚洲 | 麻豆国产成人av高清在线 | 蜜桃无码一区二区三区 | 成年人激情网 | 中文视频在线 | 中文字幕在线免费播放 | 欧洲美女tickling免费网站 | 久久久久久臀欲欧美日韩 | 极品少妇嫩玉门av | 99热| 91区人人爽人人都喜欢人人都有 | 国产手机av | 首页 国产 欧美 日韩 丝袜 | 久久国产精品波多野结衣av | 91看毛片| 岳的好大精品一区二区三区 | 欧美做爰一区二区三区 | 午夜剧场免费在线观看 | 成人婷婷网色偷偷亚洲男人的天堂 | av片久久| 黑巨人与欧美精品一区 | 国产精品99久久久 | 国产精品久久久久久久成人午夜 | 久久午夜夜伦鲁鲁片免费无码影视 | 一本岛在免费一二三区 | 国产极品在线观看 | 两女女百合互慰av赤裸无遮挡 | 乱短篇艳辣500篇h文最新章节 | 自拍色图 | 色婷婷欧美在线播放内射 | 谁有免费的黄色网址 | 亚洲国产天堂一区二区三区 | 成 人 黄 色 片 在线播放 | 99久久婷婷国产综合精品青草免费 | 国产精品186在线观看在线播放 | www久久久com| 国偷自产一区二区三区在线观看 | 国产乱码精品一区二三区蜜臂 | 情趣用品a∨视频在线观看 情一色一乱一欲一区二区 情欲都市成熟美妇大肉臀 秋霞成人 | 亚洲国产精品无码一区二区三区 | 美女高潮黄又色高清视频免费 | 中文字幕在线观看第一页 | 亚洲一区二区三区四区不卡 | 在线播放亚洲第一字幕 | 成人做爰69片免费看网站野花 | 毛片免费播放 | 国产成人一区二区三区在线播放 | 国产又大又粗又爽的毛片 | 欧美三级视频网站 | 狠狠操亚洲 | 无套内谢丰满少妇中文字幕 | 九九热视频精品 | 日日摸日日碰夜夜爽av | 奇米影视888欧美在线观看 | 黄色性网站 | 999久久久无码国产精品 | 成人h动漫精品一区二区器材 | 日本中文字幕视频在线 | 国产ww久久久久久久久久 | 日本囗交一级视频 | 国产免费黄色小视频 | 瑟瑟综合网| 久久国产精品二国产精品 | 大香伊蕉在人线国产av | 男女黄色网 | 天天躁日日躁狠狠躁2018小说 | 国产精品va无码免费 | av黄在线| 99久久久无码国产精品秋霞网 | 中文字幕中文有码在线 | 国产成人精品综合在线观看 | 国产真实交换配乱淫视频, 国产真实精品久久二三区 国产真实乱免费高清视频 国产制服丝袜一区 | 亚洲精品久久酒店 | 日本少妇白嫩猛烈进入免费视频 | 成人福利视频 | av网站大全在线 | 国内少妇毛片视频 | 国产免费极品av吧在线观看 | 成品片a人免费进入 | 大波大胸video巨乳日本 | 亚洲夜夜爱 | 国产在线播放一区二区三区 | 午夜免费一区 | 精品国产乱码久久久久久口爆网站 | 日韩在线播放中文字幕 | 亚洲一级免费毛片 | 美女又黄又免费的视频 | 中文字幕在线播放 | 影音先锋男人av鲁色资源网 | 青青青国产精品一区二区 | 国产特级毛片潘金莲 | 国产乱码av | 午夜影院免费版 | 成人在线免费看视频 | 亚洲色偷偷色噜噜狠狠99网 | 日本少妇北岛玲xxxhd | 国产69精品久久99的软件特点 | 美女三级视频 | 日本一区二区久久 | 德国艳星videos极品hd | 成年人三级网站 | 69精品人人人人 | 国产91福利| 超碰在线国产97 | 日本在线不卡一区二区三区 | 91视频在线视频 | 香蕉视频一区二区 | 牛牛影视一区二区三区免费看 | 翘臀后进娇喘呻吟的少妇91 | 日产成品片a直接观看入 | 97欧美| 久久久精品一区二区三区 | 国产欧美精品在线 | 巨胸挤奶视频www网站 | 亚洲欧美日韩综合一区 | 国产一卡二卡三卡四卡 | 99久久综合狠狠综合久久 | 天天超碰| 巨胸爆乳美女露双奶头挤奶 | 麻豆av传媒蜜桃天美传媒 | 就是色| 精品国产成人av在线免 | 黄色网战入口 | 久久久久久国产精品免费免费 | 日本大乳高潮视频在线观看 | 福利片av| 黄色av大全 | 中文字幕永久在线观看 | 亚洲欧洲成人精品久久一码二码 | 亚洲高潮毛片无遮挡免费 | 免费av网页 | 亚洲精品白浆高清久久久久久 | 久久五月激情 | 久久久久久免费 | 久草视频免费 | 中文成人在线 | 91免费视频入口 | 国产欧美精品区一区二区三区 | 成人在线免费视频 | 18禁毛片无遮挡嫩草视频 | 精品无码av一区二区三区 | 国精品人妻无码一区二区三区性色 | 古川伊织在线播放 | 国产精品涩涩屋www在线观看 | 国产精品免费一区 | 啪啪的网站 | 台湾全黄色裸体视频播放 | a午夜| 秋霞成人午夜鲁丝一区二区三区 | 国产成人av性色在线影院 | 色五月丁香五月综合五月 | 美女免费看片 | 久久高清内射无套 | 日本天天黄网站 | 国产jizz | av综合久久 | 国产真实伦在线观看视频 | 久久久国产精品一区二区三区 | 亚洲特级毛片 | 尤物九九久久国产精品的特点 | 日本美女aⅴ免费视频 | 国产一级二级在线观看 | 多男一女一级淫片免费播放口 | 一本久道在线 | 亚洲天堂免费视频 | 亚洲婷婷丁香 | 国内精品久久久久久久久久清纯 | 少妇又色又紧又大爽又刺激 | 欧美人与性动交ccoo | 国产精品成人一区二区不卡 | 性欧美在线视频免费观看 | 韩国精品一区二区三区 | 亚洲成人免费av | wwwyoujizzcom在线| 午夜精品久久久久久久星辰影院 | 国产一区二区三区不卡在线观看 | 在线观看免费毛片 | 看黄色小视频 | 91性高潮久久久久久久 | 综合色小说 | 一级黄色在线 | 人妻熟女欲求不满在线 | 一级特黄色 | 动漫美女视频 | 亚洲第一女人av | 奇米影视第四色7777 | 少妇高潮尖叫黑人激情在线 | 久久不见久久见免费影院视频 | 亚洲v欧美| 少妇激情av一区二区 | 亚洲成人在线网 | 国产精品日韩av | 久久久www. |