整合營(yíng)銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          0基礎(chǔ)的python爬蟲

          先,我們來了解下什么是爬蟲!

          打開一個(gè)網(wǎng)頁(yè),里面有網(wǎng)頁(yè)內(nèi)容,想象一下,有個(gè)工具,可以把網(wǎng)頁(yè)上的內(nèi)容獲取下來,存到你想要的地方,這個(gè)工具就是我們今天的主角:爬蟲。這樣是不是更清晰了呢?

          網(wǎng)頁(yè)的過程中,我們可能會(huì)看到許多好看的圖片,我們會(huì)看到幾張的圖片以及百度搜索框,這個(gè)過程其實(shí)就是用戶輸入網(wǎng)址之后,經(jīng)過DNS服務(wù)器,找到服務(wù)器主機(jī),向服務(wù)器發(fā)出一個(gè)請(qǐng)求,服務(wù)器經(jīng)過解析之后,發(fā)送給用戶的瀏覽器 HTML、JS、CSS 等文件,瀏覽器解析出來,用戶便可以看到形形色色的圖片了。

          因此,用戶看到的網(wǎng)頁(yè)實(shí)質(zhì)是由 HTML 代碼構(gòu)成的,爬蟲爬來的便是這些內(nèi)容,通過分析和過濾這些 HTML 代碼,實(shí)現(xiàn)對(duì)圖片、文字等資源的獲取。

          學(xué)習(xí)爬蟲的必備知識(shí):

          1.HTML

          這個(gè)能夠幫助你了解網(wǎng)頁(yè)的結(jié)構(gòu),內(nèi)容等。可以參考W3School的教程

          2.Python

          沒有基礎(chǔ)的小伙伴推薦看視頻 Python0基礎(chǔ)視頻鏈接

          3.0TCP/IP協(xié)議,HTTP協(xié)議

          這些知識(shí)能夠讓你了解在網(wǎng)絡(luò)請(qǐng)求和網(wǎng)絡(luò)傳輸上的基本原理,了解就行,能夠幫助今后寫爬蟲的時(shí)候理解爬蟲的邏輯。

          開始之前需要準(zhǔn)備的東西: Python、scrapy、一個(gè)IDE或者隨便什么文本編輯工具。

          隨便建一個(gè)工作目錄,然后用命令行建立一個(gè)工程,工程名為miao,可以替換為你喜歡的名字。

          1scrapy startproject miao

          隨后你會(huì)得到如下的一個(gè)由scrapy創(chuàng)建的目錄結(jié)構(gòu)

          在spiders文件夾中創(chuàng)建一個(gè)python文件,比如miao.py,來作為爬蟲的腳本。

          內(nèi)容如下:

          12345678910111213141516import scrapyclassNgaSpider(scrapy.Spider):name="NgaSpider"host="http://bbs.ngacn.cc/"# start_urls是我們準(zhǔn)備爬的初始頁(yè)start_urls=["http://bbs.ngacn.cc/thread.php?fid=406",]# 這個(gè)是解析函數(shù),如果不特別指明的話,scrapy抓回來的頁(yè)面會(huì)由這個(gè)函數(shù)進(jìn)行解析。# 對(duì)頁(yè)面的處理和分析工作都在此進(jìn)行,這個(gè)示例里我們只是簡(jiǎn)單地把頁(yè)面內(nèi)容打印出來。def parse(self,response):print response.body

          2.跑一個(gè)試試?

          如果用命令行的話就這樣:

          12cd miaoscrapy crawl NgaSpider

          你可以看到爬蟲君已經(jīng)把你壇星際區(qū)第一頁(yè)打印出來了,當(dāng)然由于沒有任何處理,所以混雜著html標(biāo)簽和js腳本都一并打印出來了。

          有想跟我一起學(xué)習(xí)的嗎?可以關(guān)注我喲!

          載說明:原創(chuàng)不易,未經(jīng)授權(quán),謝絕任何形式的轉(zhuǎn)載

          在JavaScript開發(fā)的世界中,安全性是保護(hù)應(yīng)用程序免受潛在威脅和漏洞的至關(guān)重要。幸運(yùn)的是,開源社區(qū)貢獻(xiàn)了各種強(qiáng)大的安全庫(kù),可以加強(qiáng)JavaScript項(xiàng)目的安全性。在本文中,我們將探討7個(gè)必要的JavaScript安全庫(kù),這些庫(kù)都可以在GitHub上找到。

          1. DOMPurify

          這是GitHub上星標(biāo)最多的庫(kù)之一,擁有超過11k顆星星。這是一個(gè)強(qiáng)大的庫(kù),提供安全可靠的HTML過濾。它通過過濾不可信HTML和保護(hù)應(yīng)用程序免受惡意用戶輸入來幫助防止跨站腳本攻擊(XSS攻擊)。

          使用DOMPurify非常簡(jiǎn)單,可以通過以下步驟來實(shí)現(xiàn):

          1. 安裝DOMPurify庫(kù)

          可以通過npm來安裝DOMPurify庫(kù),命令如下:

          npm install dompurify

          2. 導(dǎo)入DOMPurify庫(kù)

          在需要使用DOMPurify的文件中,導(dǎo)入DOMPurify庫(kù),代碼如下:

          import DOMPurify from 'dompurify';

          3. 使用DOMPurify過濾HTML

          使用DOMPurify庫(kù)過濾HTML非常簡(jiǎn)單,可以直接調(diào)用DOMPurify.sanitize()方法,將需要過濾的HTML字符串作為參數(shù)傳入即可。代碼示例如下:

          const dirtyHtml = '<script>alert("XSS Attack!");</script>';
          const cleanHtml = DOMPurify.sanitize(dirtyHtml);
          console.log(cleanHtml); // 輸出:<span>alert("XSS Attack!");</span>

          以上代碼會(huì)將`dirtyHtml`中的XSS攻擊代碼過濾掉,只保留安全的HTML標(biāo)簽和內(nèi)容。

          除此之外,DOMPurify還提供了一些高級(jí)用法,比如配置選項(xiàng)、自定義策略等。具體可以參考DOMPurify的官方文檔。

          https://github.com/cure53/DOMPurify

          2. Helmet

          這是一個(gè)針對(duì)Node.js應(yīng)用程序的重要安全庫(kù)。它通過設(shè)置各種HTTP頭,如內(nèi)容安全策略(CSP),來防止常見的Web漏洞,從而保護(hù)您的應(yīng)用程序安全。它在GitHub上擁有超過9.5k顆星星。

          helmet 是一個(gè)用于保護(hù) Express.js 應(yīng)用程序的庫(kù),它幫助您通過設(shè)置 HTTP 頭部來增加應(yīng)用程序的安全性。它可以防止一些常見的 Web 安全漏洞,如跨站腳本攻擊(XSS)、點(diǎn)擊劫持、內(nèi)容嗅探等。以下是 helmet 庫(kù)的用法和代碼示例:

          1、首先,您需要在您的 Express.js 項(xiàng)目中安裝 helmet 庫(kù),可以使用以下命令:

          npm install helmet

          2、在您的 Express.js 應(yīng)用程序中,導(dǎo)入 helmet 并將其應(yīng)用于您的應(yīng)用程序:

          const express = require('express');
          const helmet = require('helmet');
          
          const app = express();
          
          // 使用 helmet 中間件來增加安全性的 HTTP 頭部
          app.use(helmet());
          
          // ...其他中間件和路由的設(shè)置...
          
          // 啟動(dòng)服務(wù)器
          const port = process.env.PORT || 3000;
          app.listen(port, () => {
            console.log(`Server is running on port ${port}`);
          });
          

          通過在應(yīng)用程序中使用 helmet,它會(huì)自動(dòng)設(shè)置一系列的 HTTP 頭部,從而增強(qiáng)您的應(yīng)用程序的安全性。以下是一些示例的設(shè)置:

          防止跨站腳本攻擊(XSS):

          helmet 會(huì)設(shè)置 X-XSS-Protection 頭部,幫助防止瀏覽器執(zhí)行惡意注入的腳本。

          禁止嗅探 MIME 類型:

          helmet 會(huì)設(shè)置 X-Content-Type-Options 頭部,防止瀏覽器嗅探 MIME 類型。

          禁止點(diǎn)擊劫持:

          helmet 會(huì)設(shè)置 X-Frame-Options 頭部,防止頁(yè)面被嵌套在 iframe 中,從而減少點(diǎn)擊劫持風(fēng)險(xiǎn)。

          設(shè)置安全的傳輸策略:

          helmet 會(huì)設(shè)置 Strict-Transport-Security 頭部,強(qiáng)制使用 HTTPS 來保護(hù)敏感數(shù)據(jù)的傳輸。

          這些只是 helmet 可以為您自動(dòng)設(shè)置的一些安全性增強(qiáng)措施。通過使用 helmet,您可以輕松地提高您的 Express.js 應(yīng)用程序的安全性,而無需手動(dòng)編寫大量的安全性相關(guān)代碼。

          總的來說,helmet 是一個(gè)非常有用的庫(kù),可以幫助您確保您的 Express.js 應(yīng)用程序在安全性方面具有良好的基礎(chǔ)保護(hù)。記住,安全性是開發(fā)過程中至關(guān)重要的一部分,始終要保持警惕。

          https://github.com/helmetjs/helmet

          3. Bcrypt


          這是一個(gè)用于在 Node.js 應(yīng)用程序中進(jìn)行安全密碼哈希的庫(kù)。它使用了bcrypt算法,該算法旨在保護(hù)用戶密碼免受未經(jīng)授權(quán)的訪問。它在 GitHub 上有超過7千顆星。

          以下是 bcrypt 庫(kù)的用法和相關(guān)的代碼示例:

          1、首先,您需要在您的 Node.js 項(xiàng)目中安裝 bcrypt 庫(kù),可以使用以下命令:

          npm install bcrypt

          2、在您的 Node.js 應(yīng)用程序中,導(dǎo)入 bcrypt 并使用它來進(jìn)行密碼哈希:

          const bcrypt = require('bcrypt');
          const saltRounds = 10; // 這是生成 salt 的輪數(shù),可以根據(jù)需求進(jìn)行調(diào)整
          
          // 要哈希的原始密碼
          const plainPassword = 'mySecurePassword';
          
          // 生成 salt,并使用 salt 對(duì)密碼進(jìn)行哈希
          bcrypt.genSalt(saltRounds, (err, salt) => {
            if (err) throw err;
            bcrypt.hash(plainPassword, salt, (err, hash) => {
              if (err) throw err;
          
              // 此處的 hash 就是哈希后的密碼,可以保存到數(shù)據(jù)庫(kù)中
              console.log('Hashed Password:', hash);
          
              // 可以在這里進(jìn)行密碼校驗(yàn)
              bcrypt.compare(plainPassword, hash, (err, result) => {
                if (err) throw err;
          
                if (result) {
                  console.log('Password is correct.');
                } else {
                  console.log('Password is incorrect.');
                }
              });
            });
          });
          

          在這個(gè)示例中,首先我們使用 bcrypt.genSalt() 函數(shù)生成一個(gè) salt,然后使用 bcrypt.hash() 函數(shù)將原始密碼和 salt 進(jìn)行哈希,生成最終的哈希密碼。您可以將這個(gè)哈希密碼保存到數(shù)據(jù)庫(kù)中。

          當(dāng)用戶登錄時(shí),您可以使用 bcrypt.compare() 函數(shù)來比較用戶輸入的密碼和數(shù)據(jù)庫(kù)中的哈希密碼,以進(jìn)行密碼驗(yàn)證。

          總的來說,node.bcrypt.js 是一個(gè)非常有用的庫(kù),用于在 Node.js 應(yīng)用程序中進(jìn)行密碼哈希,以增加密碼的安全性。通過使用 bcrypt,您可以確保用戶密碼在存儲(chǔ)和驗(yàn)證時(shí)都得到了適當(dāng)?shù)谋Wo(hù),從而減少潛在的安全風(fēng)險(xiǎn)。記住,密碼安全性是非常重要的,始終要采取適當(dāng)?shù)拇胧﹣肀Wo(hù)用戶的敏感信息。

          https://github.com/kelektiv/node.bcrypt.js

          4、jsrsSsign

          這個(gè)庫(kù)實(shí)現(xiàn)了多種密碼學(xué)標(biāo)準(zhǔn)和算法,如RSA、HMAC和X.509證書。它在處理數(shù)字簽名和與證書相關(guān)的任務(wù)時(shí)非常有用,特別適用于Web應(yīng)用程序。在GitHub上獲得了超過3千顆星。

          在當(dāng)今數(shù)字時(shí)代,數(shù)據(jù)安全性至關(guān)重要。為了確保用戶數(shù)據(jù)的保密性、完整性和可靠性,開發(fā)人員需要采取各種措施來應(yīng)對(duì)安全挑戰(zhàn)。在這個(gè)背景下,jsrsasign(RSA-Sign JavaScript Library)應(yīng)運(yùn)而生,作為一款強(qiáng)大的 TypeScript/JavaScript 庫(kù),支持 RSA/RSAPSS/ECDSA/DSA 簽名/驗(yàn)證、ASN.1、PKCS#1/5/8 私鑰/公鑰、X.509 證書、CRL、OCSP、CMS SignedData、TimeStamp、CAdES JSON Web Signature/Token/Key 等一系列密碼學(xué)功能,全面助力開發(fā)人員保護(hù)應(yīng)用免受各種潛在的安全威脅。

          您可以通過 Node NPM 或 Bower 進(jìn)行安裝,或者從多個(gè) CDN 站點(diǎn)加載庫(kù)。以下是一個(gè)簡(jiǎn)單的入門示例,展示了如何加載加密的 PKCS#5 私鑰并進(jìn)行簽名操作:

          // 導(dǎo)入 jsrsasign
          var jsrsasign = require('jsrsasign');
          var jsrsasignUtil = require('jsrsasign-util');
          
          // 讀取加密的私鑰文件
          var pem = jsrsasignUtil.readFile('z1.prv.p5e.pem');
          var prvKey = jsrsasign.KEYUTIL.getKey(pem, 'passwd');
          
          // 使用私鑰對(duì)字符串 'aaa' 進(jìn)行簽名
          var sig = new jsrsasign.Signature({ alg: 'SHA1withRSA' });
          sig.init(prvKey);
          sig.updateString('aaa');
          var sigVal = sig.sign();
          
          console.log('Signature:', sigVal);

          jsrsasign 提供了強(qiáng)大且靈活的密碼學(xué)功能,助力開發(fā)人員在應(yīng)用程序中實(shí)現(xiàn)數(shù)據(jù)的安全性和認(rèn)證。其多功能性、易用性以及長(zhǎng)期維護(hù)的特點(diǎn),使其成為保護(hù)敏感信息和預(yù)防安全威脅的強(qiáng)有力工具。通過了解和掌握這個(gè)庫(kù),開發(fā)人員可以在應(yīng)對(duì)各種安全挑戰(zhàn)時(shí)信心倍增。

          https://github.com/kjur/jsrsasign

          5. QS

          這個(gè)庫(kù)將幫助您在 JavaScript 中解析和序列化查詢字符串。它通過正確處理查詢參數(shù)并避免常見的解析漏洞,有助于防止HTTP參數(shù)污染(HPP)攻擊。在GitHub上已獲得超過7.5k顆星。以下是 qs 庫(kù)的用法和相關(guān)的代碼示例:

          首先,在您的項(xiàng)目中安裝 qs 庫(kù),可以使用以下命令:

          npm install qs

          在您的 JavaScript 代碼中,您可以導(dǎo)入 qs 并開始使用它來解析和序列化查詢字符串:

          const qs = require('qs');
          
          // 解析查詢字符串
          const queryString = 'name=John&age=30&city=New%20York';
          const parsed = qs.parse(queryString);
          
          console.log('Parsed Query:', parsed);
          
          // 將對(duì)象序列化為查詢字符串
          const obj = {
            name: 'Alice',
            age: 25,
            city: 'Los Angeles'
          };
          
          const serialized = qs.stringify(obj);
          
          console.log('Serialized Query:', serialized);
          

          在這個(gè)示例中,我們首先使用 qs.parse() 來解析查詢字符串,將其轉(zhuǎn)換為對(duì)象。然后,我們使用 qs.stringify() 將一個(gè)對(duì)象序列化為查詢字符串。

          qs 還提供了其他一些選項(xiàng)和功能,例如嵌套對(duì)象的處理、數(shù)組的處理、日期格式化等。您可以查閱 qs 庫(kù)的文檔以獲取更多詳細(xì)信息和用法示例:https://github.com/ljharb/qs

          總的來說,qs 是一個(gè)非常方便的庫(kù),可以幫助您在 JavaScript 中處理查詢字符串,以及在 URL 中進(jìn)行參數(shù)的解析和序列化。無論是在客戶端還是服務(wù)器端的應(yīng)用程序中,qs 都能提供便捷的查詢字符串處理功能。

          https://github.com/ljharb/qs

          6. Express rate limit

          這是 Express.js 應(yīng)用程序中的一個(gè)重要中間件。它通過在 API 端點(diǎn)上設(shè)置請(qǐng)求速率限制,有助于減輕拒絕服務(wù)(DoS)和暴力破解攻擊。在 GitHub 上已獲得超過 2.5k 顆星。以下是 node-rate-limiter-flexible 庫(kù)的用法和相關(guān)的代碼示例:

          1. 首先,在您的項(xiàng)目中安裝 node-rate-limiter-flexible 庫(kù),可以使用以下命令:
          npm i --save rate-limiter-flexible
          1. 在您的 Node.js 應(yīng)用程序中,導(dǎo)入 node-rate-limiter-flexible 并使用它來設(shè)置請(qǐng)求速率限制:
          const { RateLimiterMemory } = require('rate-limiter-flexible');
          
          // 創(chuàng)建一個(gè)請(qǐng)求速率限制器
          const rateLimiter = new RateLimiterMemory({
            points: 5, // 每秒允許的請(qǐng)求次數(shù)
            duration: 1 // 以秒為單位的時(shí)間窗口
          });
          
          // 在 Express.js 應(yīng)用程序中使用請(qǐng)求速率限制器中間件
          app.use((req, res, next) => {
            rateLimiter.consume(req.ip) // 使用客戶端 IP 地址進(jìn)行限制
              .then(() => {
                next();
              })
              .catch((err) => {
                res.status(429).send('Too Many Requests');
              });
          });
          
          // ...其他中間件和路由的設(shè)置...
          
          // 啟動(dòng)服務(wù)器
          const port = process.env.PORT || 3000;
          app.listen(port, () => {
            console.log(`Server is running on port ${port}`);
          });
          

          在這個(gè)示例中,我們使用 RateLimiterMemory 創(chuàng)建了一個(gè)請(qǐng)求速率限制器。通過設(shè)置 points 和 duration 參數(shù),我們可以定義每秒允許的請(qǐng)求次數(shù)和時(shí)間窗口。然后,我們?cè)?Express.js 應(yīng)用程序中使用中間件來應(yīng)用請(qǐng)求速率限制器,使用客戶端的 IP 地址來進(jìn)行限制。如果客戶端超過限制,它將收到一個(gè) 429 Too Many Requests 響應(yīng)。

          node-rate-limiter-flexible 還提供了其他的限制策略、存儲(chǔ)適配器和配置選項(xiàng),您可以根據(jù)需求進(jìn)行調(diào)整。詳細(xì)的文檔可以在庫(kù)的 GitHub 頁(yè)面中找到:https://github.com/animir/node-rate-limiter-flexible

          總的來說,node-rate-limiter-flexible 是一個(gè)非常有用的庫(kù),可以幫助您在 Node.js 應(yīng)用程序中實(shí)現(xiàn)靈活的請(qǐng)求速率限制,從而提高應(yīng)用程序的安全性和穩(wěn)定性。

          https://github.com/animir/node-rate-limiter-flexible

          7. jsSHA

          這是一個(gè)功能強(qiáng)大的 TypeScript/JavaScript 庫(kù),用于使用多種密碼學(xué)算法對(duì)數(shù)據(jù)進(jìn)行哈希處理。它允許您為敏感數(shù)據(jù)生成安全的哈希,確保數(shù)據(jù)的完整性和真實(shí)性。在 GitHub 上獲得了超過2k顆星。以下是 jsSHA 庫(kù)的用法和相關(guān)的代碼示例:

          1. 首先,在您的項(xiàng)目中安裝 jsSHA 庫(kù),可以使用以下命令:
          npm install jssha
          1. 在您的 JavaScript 代碼中,您可以導(dǎo)入 jsSHA 并使用它來進(jìn)行數(shù)據(jù)哈希:
          javascriptCopy codeconst jsSHA = require('jssha');
          
          // 創(chuàng)建一個(gè) SHA-256 哈希對(duì)象
          const shaObj = new jsSHA('SHA-256', 'TEXT');
          
          // 要哈希的數(shù)據(jù)
          const data = 'Hello, world!';
          
          // 更新哈希對(duì)象的輸入
          shaObj.update(data);
          
          // 獲取最終的哈希值(十六進(jìn)制表示)
          const hash = shaObj.getHash('HEX');
          
          console.log('Hash:', hash);
          

          在這個(gè)示例中,我們首先創(chuàng)建了一個(gè) SHA-256 哈希對(duì)象,然后使用 update() 方法更新輸入數(shù)據(jù),最后使用 getHash() 方法獲取最終的哈希值。

          jsSHA 支持多種加密算法,您可以在創(chuàng)建哈希對(duì)象時(shí)指定所需的算法,例如 'SHA-1'、'SHA-256'、'SHA-512' 等。

          請(qǐng)注意,jsSHA 還提供了許多其他選項(xiàng)和功能,如 HMAC 計(jì)算、處理二進(jìn)制數(shù)據(jù)等。您可以查閱 jsSHA 庫(kù)的文檔以獲取更多詳細(xì)信息和用法示例:https://caligatio.github.io/jsSHA/

          總的來說,jsSHA 是一個(gè)方便的庫(kù),可用于在瀏覽器和 Node.js 中生成安全的數(shù)據(jù)哈希,以確保數(shù)據(jù)的完整性和認(rèn)證。

          https://github.com/Caligatio/jsSHA

          結(jié)束

          當(dāng)今數(shù)字時(shí)代,安全性在應(yīng)用程序開發(fā)中變得愈發(fā)重要。為了確保用戶數(shù)據(jù)的保密性、完整性和可靠性,開發(fā)人員需要采取各種措施來應(yīng)對(duì)安全挑戰(zhàn)。在本文中,我們介紹了七個(gè)與安全相關(guān)的 JavaScript 庫(kù),它們?yōu)殚_發(fā)人員提供了強(qiáng)大的工具來保護(hù)應(yīng)用程序免受各種潛在的安全威脅。

          在您的開發(fā)旅程中,這些庫(kù)將充當(dāng)強(qiáng)大的盾牌,保護(hù)您的應(yīng)用免受惡意行為的侵害。同時(shí),隨著技術(shù)的不斷進(jìn)步,我們也鼓勵(lì)您保持警惕,時(shí)刻關(guān)注最新的安全標(biāo)準(zhǔn)和最佳實(shí)踐,以確保您的應(yīng)用程序始終處于安全的狀態(tài)。如果您還有其他優(yōu)秀的 JavaScript 庫(kù)推薦,歡迎在評(píng)論中與我們分享。

          由于文章內(nèi)容篇幅有限,今天的內(nèi)容就分享到這里,文章結(jié)尾,我想提醒您,文章的創(chuàng)作不易,如果您喜歡我的分享,請(qǐng)別忘了點(diǎn)贊和轉(zhuǎn)發(fā),讓更多有需要的人看到。同時(shí),如果您想獲取更多前端技術(shù)的知識(shí),歡迎關(guān)注我,您的支持將是我分享最大的動(dòng)力。我會(huì)持續(xù)輸出更多內(nèi)容,敬請(qǐng)期待。

          們好哈,最近博主在學(xué)習(xí)Python,學(xué)習(xí)時(shí)期也遇到一些問題,獲得了一些經(jīng)歷,在此將自個(gè)的學(xué)習(xí)體系地整理下來,假如咱們有愛好學(xué)習(xí)爬蟲的話,能夠?qū)⑦@些文章作為參閱,也期待咱們總共同享學(xué)習(xí)經(jīng)歷。

          Python版本:2.7,Python 3請(qǐng)另尋別的博文。

          首要爬蟲是啥?

          網(wǎng)絡(luò)爬蟲(又被稱為頁(yè)面蜘蛛,網(wǎng)絡(luò)機(jī)器人,在FOAF社區(qū)中心,更常常的稱為頁(yè)面追逐者),是一種按照必定的規(guī)矩,主動(dòng)的抓取萬維網(wǎng)信息的程序或許腳本。

          想要一起學(xué)習(xí)python的可以加群399288541,,群里有大量學(xué)習(xí)資料,還有大神解答問題


          主站蜘蛛池模板: 国产亚洲综合一区二区三区| 看电影来5566一区.二区| 无码一区二区三区免费| 日日摸夜夜添一区| 国产SUV精品一区二区88L| 日韩内射美女人妻一区二区三区 | 亚洲AV网一区二区三区| 一区二区三区在线|日本| 亚洲天堂一区二区三区| 中文字幕在线播放一区| 日韩一区二区三区免费体验| 97精品国产一区二区三区 | 波多野结衣AV一区二区三区中文| 精品一区二区久久久久久久网站| 国产aⅴ一区二区| 国模极品一区二区三区| 亚洲一区在线视频| 亚洲AV无码第一区二区三区| 精品国产一区二区三区AV性色| 精品国产免费一区二区| 51视频国产精品一区二区| 国产成人精品一区二区三区免费 | 成人免费视频一区二区| 天堂一区二区三区精品| 欧洲无码一区二区三区在线观看| 黑人大战亚洲人精品一区| 无码精品久久一区二区三区 | 性色AV 一区二区三区| 国偷自产视频一区二区久| 精品视频一区二区观看| 亚洲无圣光一区二区| 无码精品一区二区三区免费视频| 亚洲成av人片一区二区三区| 国产一区二区四区在线观看 | 国产精品香蕉在线一区| 亚洲无删减国产精品一区| 红桃AV一区二区三区在线无码AV | 欧美成人aaa片一区国产精品| 人妻无码第一区二区三区| 久久精品国产亚洲一区二区| 国产午夜毛片一区二区三区|