婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 詳解如何用Python模擬登錄淘寶

詳解如何用Python模擬登錄淘寶

熱門標簽:湛江智能外呼系統廠家 ai電銷機器人源碼 ai電話機器人哪里好 長沙高頻外呼系統原理是什么 宿遷星美防封電銷卡 西藏房產智能外呼系統要多少錢 地圖標注審核表 百度地圖標注沒有了 外呼并發線路

看了下網上有很多關于模擬登錄淘寶,但是基本都是使用scrapy、pyppeteer、selenium等庫來模擬登錄,但是目前我們還沒有講到這些庫,只講了requests庫,那我們今天就來使用requests庫模擬登錄淘寶!

講模擬登錄淘寶之前,我們來回顧一下之前用requests庫模擬登錄豆瓣和新浪微博的過程:這一類模擬登錄是比較簡單的登錄,只需要在請求登錄時將用戶名和密碼上傳驗證通過就成功了,也就是說一步到位!

而淘寶登錄就比較復雜,為什么說復雜呢?因為淘寶登錄涉及參數多且請求不止一次!我們就先來講講淘寶登錄的流程,先把流程原理搞懂,再去敲代碼,這樣大家就容易理解!

一、淘寶登錄流程

淘寶ua參數:ua(User-Agent)故名用戶代理,淘寶的ua參數加入了瀏覽器、ip、電腦、時間等信息,然后加密生成,在很多地方使用,不僅僅是登錄!

上圖是比較詳細的流程圖,從代碼層面考慮將模擬登錄淘寶分為以下四個步驟:

輸入用戶名后,瀏覽器會向淘寶(taobao.com)發起一個post的請求,判斷是否出現滑塊驗證!
用戶輸入密碼后,瀏覽器向淘寶(taobao.com)又發起一個post請求,驗證用戶名密碼是否正確,如果正確則返回一個token。
瀏覽器拿著token去阿里巴巴(alibaba.com)交換st碼!
瀏覽器獲取st碼之后,拿著st碼獲取cookies,登錄成功
這里也許有同學會提出疑問:為什么淘寶(taobao.com)驗證通過之后還要拿著 token去阿里巴巴(alibaba.com)交換st碼呢? 這個我們放后面講!

二、模擬登錄實現

上面我們只講了大概的登錄流程,這里豬哥會先詳細講解下每一步的操作,然后再貼出實現代碼!

1.判斷是否需要驗證碼

目前我們在登錄淘寶的時候,大多數情況下是不會出現滑塊驗證碼,豬哥嘗試了很多次的登錄退出也只是在中間出現過一次,那究竟是什么在控制是否需要滑塊驗證碼的呢?

從上圖可以看出,當豬哥輸入用戶名(必須是手機號)后,瀏覽器就會發起一個post請求,來驗證是否需要出現滑塊驗證碼,如果返回true,滑塊驗證碼則出現!否則不出現,一般是不會出現!

圖中我們可以看到這次post請求上傳了兩個參數:username、ua!

前面豬哥說過ua為瀏覽器、ip、設備信息等多信息加密參數,所以豬哥猜想淘寶的驗證碼是否出現不僅僅從賬號角度,還有ip、設備等角度!

舉個例子:某臺設備可能出現登錄過大量的賬號,這時候淘寶就可以從ua參數中獲取設備號,然后對該設備進行限制!

2.驗證用戶名密碼

這里一步也就是上面時序圖圖中的第5步:請求登錄,這里會將用戶名、ua參數、加密密碼等30十幾個參數post到淘寶(taobao.com)去驗證。我們來用代碼實現一下,大家別被這么多參數嚇到,都是從瀏覽器復制過來的!

可以看到申請st碼鏈接后面帶了一個token,具體token是干什么用的后面我們再分析!

3.申請st碼

上面我們已經申請到了淘寶(taobao.com)的token,這一步就是用token來換取st碼。

到這里很多人可能會有疑問:為什么淘寶登錄需要這么麻煩呢?直接在 taobao.com 登錄不就可以嗎?為什么要先在taobao驗證用戶名密碼,通過之后再去 alibaba.com 換取st碼登錄呢?

任何公司的框架都是慢慢演變的結果,我想最開始的淘寶登錄肯定沒這么復雜。但是隨著阿里巴巴的慢慢壯大,很多事業線都劃分開來,但是這些事業線之間又有關聯性,比如用戶登錄了淘寶賬號之后天貓就不需要再登錄了呢?(注意淘寶和天貓的頂級域名不同,所以不能共享cookis)為了解決這個問題,單點登錄就出現了。

單點登錄(Single Sign On),簡稱為 SSO,是目前比較流行的企業業務整合的解決方案之一。SSO的定義是在多個應用系統中,用戶只需要登錄一次就可以訪問所有相互信任的應用系統。 ——百度百科

很多大企業幾乎都有做單點登錄,那阿里的單點登錄系統肯定是由母公司阿里巴巴(alibaba.com)來做啦,所有子公司去調用母公司接口!

我們再回來分析淘寶登錄為何要如此復雜就很好理解了:用戶數據在淘寶這里,所以需要現在淘寶(taobao.com)驗證用戶名和密碼,驗證通過生成一個token,瀏覽器拿著token去和阿里巴巴(alibaba.com)申請單點登錄碼(st碼),阿里巴巴收到請求驗證token通過則返回st碼,所以用token換st碼的原因就在于單點登錄!

理解了設計原理之后,代碼實現起來就很清晰了!

4.使用st碼登錄

成功獲取st碼之后我們就可以來登錄了,這一步是通過st碼獲取登錄的cookies。

到這里我們就已經模擬登錄淘寶成功了!

5.獲取淘寶昵稱

其實上面我們就已經登錄淘寶成功并返回用戶主頁的鏈接,我們為了進一步驗證登錄成功,就請求一下淘寶用戶主頁,順便把淘寶昵稱提取出來吧!

三、總結

整體講完之后我們來稍微總結一下吧,主要從代碼結構和存在的問題兩個方面說下:

1.代碼結構

來放出一張代碼結構圖,讓大家直觀了解

這就是我們前面說過的模擬登錄淘寶的四個步驟,不過這里我們是用代碼實現了!

2.存在問題

在寫這篇教程之前也是先在網上了解,然后自己用瀏覽器和抓包工具(Charles)一步一步實踐,最重要的是你先要了解淘寶登錄的大概流程,不然你實際操作起來會一頭霧水,下面就要講講目前遇到的問題和存在的問題吧

首先第一個問題便是淘寶的滑塊解鎖,目前requests還沒有很好的破解辦法,后面介紹了一些爬蟲框架之后我們再來破解吧!
豬哥嘗試了很多次(50次以上)登錄退出都沒出現過滑塊驗證碼。
網上有人使用代理ip,這里豬哥也沒用,只要你不是超級超級超級頻繁且大量爬取數據,一般大廠都不太會去封ip,因為有誤傷率和影響用戶面太廣,也許一封就是整個小區。
在第二步驗證用戶名和密碼時,上傳了近30個參數,如果你把username、ua、加密密碼復制進去驗證還是不通過可嘗試把那30個參數換成你瀏覽器中的!
在第三步和第四步偶爾會出現一次錯誤,重試一下就可以!
看到這里是不是感覺淘寶模擬登錄就清晰明了很多了,感興趣的同學可以收藏轉發,周末有空自己嘗試一下。征服淘寶登錄,其他登錄也就相對簡單了!

下面是源碼

# -*- coding:utf-8 -*-
import re
import os
import json
import requests
 
 
s = requests.Session()
# cookies序列化文件
COOKIES_FILE_PATH = 'taobao_login_cookies.txt'
 
 
class UsernameLogin:
 
    def __init__(self, username, ua, TPL_password2):
        """
        賬號登錄對象
        :param username: 用戶名
        :param ua: 淘寶的ua參數
        :param TPL_password2: 加密后的密碼
        """
        # 檢測是否需要驗證碼的URL
        self.user_check_url = 'https://login.taobao.com/member/request_nick_check.do?_input_charset=utf-8'
        # 驗證淘寶用戶名密碼URL
        self.verify_password_url = "https://login.taobao.com/member/login.jhtml"
        # 訪問st碼URL
        self.vst_url = 'https://login.taobao.com/member/vst.htm?st={}'
        # 淘寶個人 主頁
        self.my_taobao_url = 'https://i.taobao.com/my_taobao.htm'
 
        # 淘寶用戶名
        self.username = "手機號"
        # 淘寶關鍵參數,包含用戶瀏覽器等一些信息,很多地方會使用,從瀏覽器或抓包工具中復制,可重復使用
        self.ua = ""
        # 加密后的密碼,從瀏覽器或抓包工具中復制,可重復使用
        self.TPL_password2 = ""
 
        # 請求超時時間
        self.timeout = 3
 
    def _user_check(self):
        """
        檢測賬號是否需要驗證碼
        :return:
        """
        data = {
            'username': self.username,
            'ua': self.ua
        }
        try:
            response = s.post(self.user_check_url, data=data, timeout=self.timeout)
            response.raise_for_status()
        except Exception as e:
            print('檢測是否需要驗證碼請求失敗,原因:')
            raise e
        needcode = response.json()['needcode']
        print('是否需要滑塊驗證:{}'.format(needcode))
        return needcode
 
    def _verify_password(self):
        """
        驗證用戶名密碼,并獲取st碼申請URL
        :return: 驗證成功返回st碼申請地址
        """
        verify_password_headers = {
redirectURL=https%3A%2F%2Fi.taobao.com%2Fmy_taobao.htm%3Fspm%3Da2d00.7723416.754894437.1.61531fc917M0p9%26ad_id%3D%26am_id%3D%26cm_id%3D%26pm_id%3D1501036000a02c5c3739',
            # ':scheme': 'https',
            'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3',
            'accept-encoding': 'gzip, deflate, br',
            'accept-language': 'zh-CN,zh;q=0.9',
            'cache-control': 'max-age=0',
            'content-length': '2858',
            'content-type': 'application/x-www-form-urlencoded',
            'sec-fetch-mode': 'navigate',
            'sec-fetch-site': 'same-origin',
            'sec-fetch-user': '?1',
            'Cache-Control': 'max-age=0',
            'Origin': 'https://login.taobao.com',
            'Upgrade-Insecure-Requests': '1',
            'User-Agent': '5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36',
            'Content-Type': 'application/x-www-form-urlencoded',
            'Referer': 'https://login.taobao.com/member/login.jhtml?redirectURL=https%3A%2F%2Fi.taobao.com%2Fmy_taobao.htm%3Fspm%3Da2d00.7723416.754894437.1.61531fc917M0p9%26ad_id%3D%26am_id%3D%26cm_id%3D%26pm_id%3D1501036000a02c5c3739',
        }
        # 登錄toabao.com提交的數據,如果登錄失敗,可以從瀏覽器復制你的form data
        verify_password_data = {
            'TPL_username': self.username,
            'ncoToken': '1f1389fac2a670101d8a09de4c99795e8023b341',
            'slideCodeShow': 'false',
            'useMobile': 'false',
            'lang': 'zh_CN',
            'loginsite': 0,
            'newlogin': 0,
            'TPL_redirect_url': 'https://i.taobao.com/my_taobao.htm?spm=a2d00.7723416.754894437.1.61531fc917M0p9ad_id=am_id=cm_id=pm_id=1501036000a02c5c3739',
            'from': 'tb',
            'fc': 'default',
            'style': 'default',
            'keyLogin': 'false',
            'qrLogin': 'true',
            'newMini': 'false',
            'newMini2': 'false',
            'loginType': '3',
            'gvfdcname': '10',
            # 'gvfdcre': '68747470733A2F2F6C6F67696E2E74616F62616F2E636F6D2F6D656D6265722F6C6F676F75742E6A68746D6C3F73706D3D613231626F2E323031372E3735343839343433372E372E356166393131643970714B52693126663D746F70266F75743D7472756526726564697265637455524C3D68747470732533412532462532467777772E74616F62616F2E636F6D253246',
            'TPL_password_2': self.TPL_password2,
            'loginASR': '1',
            'loginASRSuc': '1',
            'oslanguage': 'zh-CN',
            'sr': '1920*1080',
            # 'osVer': 'macos|10.145',
            'naviVer': 'chrome|78.039047',
            'osACN': 'Mozilla',
            'osAV': '5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36',
            'osPF': 'Win32',
            'appkey': '00000000',
            'mobileLoginLink': 'https://login.taobao.com/member/login.jhtml?redirectURL=https://i.taobao.com/my_taobao.htm?spm=a2d00.7723416.754894437.1.61531fc917M0p9ad_id=am_id=cm_id=pm_id=1501036000a02c5c3739useMobile=true',
            'showAssistantLink': 'false',
            'um_token': 'T274D86E0BEB4F2F2F527C889BADD92868CE10177BeFF895DE627CFE2D52A',
            'ua': self.ua
        }
        try:
            response = s.post(self.verify_password_url, headers=verify_password_headers, data=verify_password_data,
                              timeout=self.timeout)
            response.raise_for_status()
            # 從返回的頁面中提取申請st碼地址
        except Exception as e:
            print('驗證用戶名和密碼請求失敗,原因:')
            raise e
        # 提取申請st碼url
        apply_st_url_match = re.search(r'script src="(.*?)">/script>', response.text)
        # 存在則返回
        if apply_st_url_match:
            print('驗證用戶名密碼成功,st碼申請地址:{}'.format(apply_st_url_match.group(1)))
            return apply_st_url_match.group(1)
        else:
            raise RuntimeError('用戶名密碼驗證失?。esponse:{}'.format(response.text))
    def _apply_st(self):
        """
        申請st碼
        :return: st碼
        """
        apply_st_url = self._verify_password()
        try:
            response = s.get(apply_st_url)
            # response.raise_for_status()
        except Exception as e:
            print('申請st碼請求失敗,原因:')
            raise e
        st_match = re.search(r'"data":{"st":"(.*?)"}', response.text)
        if st_match:
            print('獲取st碼成功,st碼:{}'.format(st_match.group(1)))
            return st_match.group(1)
        else:
            raise RuntimeError('獲取st碼失?。esponse:{}'.format(response.text))
            # raise RuntimeError('獲取st碼失??!')
    def login(self):
        """
        使用st碼登錄
        :return:
        """
        # 加載cookies文件
        if self._load_cookies():
            return True
        # 判斷是否需要滑塊驗證
        self._user_check()
        st = self._apply_st()
        headers = {
            'Host': 'login.taobao.com',
            'Connection': 'Keep-Alive',
            'User-Agent': '5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36'
        }
        try:
            response = s.get(self.vst_url.format(st), headers=headers)
            response.raise_for_status()
        except Exception as e:
            print('st碼登錄請求,原因:')
            raise e
        # 登錄成功,提取跳轉淘寶用戶主頁url
        my_taobao_match = re.search(r'top.location.href = "(.*?)"', response.text)
        if my_taobao_match:
            print('登錄淘寶成功,跳轉鏈接:{}'.format(my_taobao_match.group(1)))
            self._serialization_cookies()
            return True
        else:
            raise RuntimeError('登錄失??!response:{}'.format(response.text))
    def _load_cookies(self):
        # 1、判斷cookies序列化文件是否存在
        if not os.path.exists(COOKIES_FILE_PATH):
            return False
        # 2、加載cookies
        s.cookies = self._deserialization_cookies()
        # 3、判斷cookies是否過期
        try:
            self.get_taobao_nick_name()
        except Exception as e:
            os.remove(COOKIES_FILE_PATH)
            print('cookies過期,刪除cookies文件!')
            return False
        print('加載淘寶登錄cookies成功!!!')
        return True
    def _serialization_cookies(self):
        """
        序列化cookies
        :return:
        """
        cookies_dict = requests.utils.dict_from_cookiejar(s.cookies)
        with open(COOKIES_FILE_PATH, 'w+', encoding='utf-8') as file:
            json.dump(cookies_dict, file)
            print('保存cookies文件成功!')
    def _deserialization_cookies(self):
        """
        反序列化cookies
        :return:
        """
        with open(COOKIES_FILE_PATH, 'r+', encoding='utf-8') as file:
            cookies_dict = json.load(file)
            cookies = requests.utils.cookiejar_from_dict(cookies_dict)
            return cookies
    def get_taobao_nick_name(self):
        """
        獲取淘寶昵稱
        :return: 淘寶昵稱
        """
        headers = {
            'User-Agent': '5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36'
        }
        try:
            response = s.get(self.my_taobao_url, headers=headers)
            response.raise_for_status()
        except Exception as e:
            print('獲取淘寶主頁請求失??!原因:')
            raise e
        # 提取淘寶昵稱
        nick_name_match = re.search(r'input id="mtb-nickname" type="hidden" value="(.*?)"/>', response.text)
        if nick_name_match:
            print('登錄淘寶成功,你的用戶名是:{}'.format(nick_name_match.group(1)))
            return nick_name_match.group(1)
        else:
            raise RuntimeError('獲取淘寶昵稱失??!response:{}'.format(response.text))
if __name__ == '__main__':
    # 淘寶用戶名
    username = '手機號'
    # 淘寶重要參數,從瀏覽器或抓包工具中復制,可重復使用
    ua = ''
    # 加密后的密碼,從瀏覽器或抓包工具中復制,可重復使用
    TPL_password2 = ''
    ul = UsernameLogin(username, ua, TPL_password2)
    ul.login()

到此這篇關于詳解如何用Python模擬登錄淘寶的文章就介紹到這了,更多相關Python模擬登錄淘寶內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • python網絡爬蟲精解之XPath的使用說明
  • python網絡爬蟲精解之pyquery的使用說明
  • python網絡爬蟲實戰
  • python網絡爬蟲之模擬登錄 自動獲取cookie值 驗證碼識別的具體實現

標簽:普洱 漯河 盤錦 海南 大同 寧夏 林芝 南平

巨人網絡通訊聲明:本文標題《詳解如何用Python模擬登錄淘寶》,本文關鍵詞  詳解,如,何用,Python,模擬,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《詳解如何用Python模擬登錄淘寶》相關的同類信息!
  • 本頁收集關于詳解如何用Python模擬登錄淘寶的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产美女主播视频一区| 欧美理论在线播放| 2022国产精品视频| 在线免费观看不卡av| 精品亚洲porn| 日韩国产在线观看一区| 国产婷婷色一区二区三区在线| 欧美日韩专区在线| 色av综合在线| 国产精品一区二区无线| 久久99精品久久久久久| 日韩黄色一级片| 亚洲另类色综合网站| 中文字幕在线一区免费| 久久网站最新地址| 久久久99久久精品欧美| 日本电影欧美片| 色婷婷久久久久swag精品| 韩国v欧美v日本v亚洲v| 九九久久精品视频| 久久成人久久爱| 日日夜夜精品视频天天综合网| 亚洲电影你懂得| 亚洲品质自拍视频| 亚洲欧美在线视频观看| 亚洲精品久久久蜜桃| 亚洲欧美日韩国产一区二区三区| 国产三级久久久| 国产精品久久久爽爽爽麻豆色哟哟| 国产精品日日摸夜夜摸av| 亚洲欧洲国产日韩| 亚洲图片欧美色图| 奇米在线7777在线精品| 久久aⅴ国产欧美74aaa| 国产丶欧美丶日本不卡视频| 国产一区二区三区美女| 精品国产乱码久久久久久老虎| 久久久久久综合| 日韩中文字幕91| 国产精品原创巨作av| av在线不卡网| 国产尤物一区二区| 亚洲成人免费在线观看| 男女男精品网站| 精品少妇一区二区| 久久男人中文字幕资源站| 欧美日韩一级大片网址| 中文字幕在线观看不卡视频| 国产精品一区二区免费不卡| 精品污污网站免费看| 日本成人在线网站| 精品国产青草久久久久福利| 国产精品一区二区黑丝| 亚洲日本一区二区三区| 欧美亚洲一区二区三区四区| 久久精品国产网站| 亚洲天堂av老司机| 精品国产乱码久久久久久牛牛| 成人综合在线观看| 极品少妇xxxx偷拍精品少妇| 亚洲色图.com| 国产精品美女久久久久aⅴ| 成人一区二区视频| 国产精品成人一区二区艾草| 正在播放一区二区| 99视频一区二区三区| 精品一区二区三区免费毛片爱| 日韩黄色免费电影| 亚洲国产精品黑人久久久| 欧美色区777第一页| 国产东北露脸精品视频| 麻豆精品在线播放| 三级久久三级久久| 青青草视频一区| 亚洲一区精品在线| 亚洲色图欧洲色图| 亚洲欧美中日韩| 欧美日韩美少妇| 久久99久久99精品免视看婷婷| 国产精品素人视频| 日韩免费电影网站| 精品国产三级电影在线观看| 日韩视频免费直播| 日韩亚洲欧美一区二区三区| 欧美精品乱码久久久久久按摩 | 久久午夜免费电影| 欧美电影免费观看高清完整版在线 | 亚洲欧洲综合另类| 伊人性伊人情综合网| 日韩和欧美的一区| 国产精品亚洲第一| 91麻豆成人久久精品二区三区| 99免费精品视频| 欧美日韩一区二区三区四区 | 亚洲天天做日日做天天谢日日欢| 中文字幕亚洲成人| 日产精品久久久久久久性色| 一区二区三区高清| 欧美成人性战久久| 欧美激情一区二区三区在线| 亚洲视频免费观看| 国模一区二区三区白浆| 99久久777色| 欧美不卡一区二区三区| 国产精品日韩成人| 免费成人在线观看| 色综合网色综合| 中文字幕免费一区| 天堂在线亚洲视频| 99久久婷婷国产综合精品电影| www亚洲一区| 亚洲h在线观看| 性做久久久久久久免费看| 高清成人免费视频| 国产日韩欧美综合一区| 久久99精品国产.久久久久| 欧美日韩一区三区四区| 成人免费在线视频| 91视频你懂的| 亚洲免费视频成人| 欧美色网站导航| 午夜天堂影视香蕉久久| 欧美三级欧美一级| 国内精品久久久久影院色| 日本亚洲视频在线| 激情成人综合网| 亚洲视频一二区| 欧美日韩一区二区三区四区| 亚洲欧美一区二区三区极速播放| caoporm超碰国产精品| 亚洲同性同志一二三专区| 91小视频免费看| 免费在线看成人av| 亚洲一区二区三区在线看| 91精品国产黑色紧身裤美女| 色婷婷久久99综合精品jk白丝| 国产精品欧美一区喷水| 在线日韩国产精品| 久久www免费人成看片高清| 中文字幕高清一区| 日韩欧美成人激情| 成人精品国产免费网站| 亚洲综合久久久久| 久久亚洲精精品中文字幕早川悠里| 国产一区二区三区久久悠悠色av| 亚洲丝袜美腿综合| 国产婷婷精品av在线| 国产高清精品久久久久| 香蕉乱码成人久久天堂爱免费| 欧美国产一区二区在线观看| 欧美精品免费视频| 91丨porny丨中文| 国产欧美日韩视频一区二区| 91精彩视频在线观看| 日本伊人色综合网| 国产成人在线观看| 波多野结衣视频一区| 日韩欧美电影一区| www.av精品| 国产精品资源站在线| 亚洲国产aⅴ天堂久久| 欧洲国内综合视频| 午夜精品久久久久久久| 国产日产欧美一区二区视频| 久久久天堂av| 亚洲精品国产一区二区精华液| 亚洲电影视频在线| 处破女av一区二区| 欧美白人最猛性xxxxx69交| 综合久久给合久久狠狠狠97色 | 中文字幕一区二区三区四区不卡| www.视频一区| 在线看日本不卡| 国产精品网站在线观看| 久久影院午夜论| 欧美aaaaaa午夜精品| 国产高清一区日本| 91精品麻豆日日躁夜夜躁| 亚洲乱码精品一二三四区日韩在线| 久久国产麻豆精品| 日韩欧美精品在线视频| 午夜av电影一区| 色综合久久99| 亚洲人被黑人高潮完整版| 成人小视频在线| 中文字幕一区不卡| 91碰在线视频| 亚洲在线视频一区| 欧美日韩色一区| 老色鬼精品视频在线观看播放| 欧美喷潮久久久xxxxx| 亚洲成人av一区| 日韩免费电影一区| 成人少妇影院yyyy| 亚洲精品一二三| 91精品国产综合久久婷婷香蕉| 日本欧美大码aⅴ在线播放| 欧美电影免费观看高清完整版在线| 国产乱子轮精品视频| 一个色在线综合|