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

給你的公眾號添加一個智能機器人

開發 開發工具
我們代碼使用 Python 開發,所以需要配置好 Python 開發環境,安裝 Flash 庫。最后需要注冊一個圖靈機器人賬號,調用其 API 接口。

環境和工具

  • 公眾號一個
  • 云服務器一臺
  • Python 環境
  • Flask(Python 第三方庫)
  • 圖靈機器人賬號

以上就是我們實現公眾號后臺智能對話機器人需要的環境和工具,前兩個就不多說了。我們代碼使用 Python 開發,所以需要配置好 Python 開發環境,安裝 Flash 庫。最后需要注冊一個圖靈機器人賬號,調用其 API 接口。

[[342172]]

歡迎到我的公眾號 碼小白TM 里調戲機器人,去看看這個機器人智不智能!

Web 服務器搭建

我們想要接收公眾號后臺發送的消息,就需要搭建一個 Web 服務器了。我們在云服務器上安裝好 Python 和 Flask 后,就可以進行 Web 服務器的搭建了。

我們首先搭建一個非常簡單的 Web 服務器,就是在網頁顯示出 HelloWorld!,來跑通我們的代碼。我們來看一下主程序代碼。

main.py

  1. from flask import Flask 
  2. app = Flask(__name__)@app.route("/"
  3. def index(): 
  4.     return "Hello World!" 
  5. if __name__ == "__main__"
  6.     app.run(host='0.0.0.0'

代碼非常簡單,我們直接運行代碼,啟動 Web 服務器:

  1. python main.py 

運行成功后,我們可以在云服務器機器瀏覽器上訪問 127.0.0.1,如果我們能看到 Hello World! 就說明我們服務器啟動成功了。我們也可以在外網機器瀏覽器上訪問你云服務器的外網 IP,來檢測 Web 服務器是否成功啟動。

公眾號后臺配置和驗證

然后我們去公眾號后臺開發->基本配置頁找到服務器配置,可以看到我們需要一個服務器的 URL 地址、Token 令牌、消息加解密密鑰。

 

給你的公眾號添加一個智能機器人
公眾號后臺配置

服務器的 URL 地址就是:http://服務器外網IP/wechat,/ 前面是你的云服務外網 IP 地址,后邊是我們在代碼里定義的路由入口(可以自己定義),后邊我們會在代碼中看到。Token 令牌是我們自己定義的,后邊代碼中也會用到。消息加解密密鑰可以通過自動生成,消息加解密方式我們選擇明文模式即可。

你第一次配置的時候下邊會有保存按鈕,這個時候我們先不要點擊,因為我們需要在 Web 服務器端對消息字段進行解析處理,然后回傳結果進行驗證。

我們到微信公眾號開發文檔里看一下消息驗證流程。

 

給你的公眾號添加一個智能機器人
驗證流程

根據上圖流程我們進行我們的代碼編寫。

main.py

  1. from flask import Flask 
  2. from flask import request 
  3. import hashlibapp = Flask(__name__)@app.route("/"
  4. def index():    return "Hello World!" 
  5. # 公眾號后臺消息路由入口@app.route("/wechat", methods=["GET""POST"]) 
  6. def wechat(): # 驗證使用的是GET方法    if request.method == "GET"
  7.         signature = request.args.get('signature'
  8.         timestamp = request.args.get('timestamp'
  9.         nonce = request.args.get('nonce'
  10.         echostr = request.args.get('echostr'
  11.         token = "公眾號后臺填寫的token" 
  12.   # 進行排序        dataList = [token, timestamp, nonce]        dataList.sort()        result = "".join(dataList) 
  13.   #哈希加密算法得到hashcode        sha1 = hashlib.sha1()        sha1.update(result.encode("utf-8")) 
  14.         hashcode = sha1.hexdigest()        if hashcode == signature: 
  15.             return echostr 
  16.         else
  17.             return "" 
  18. if __name__ == "__main__"
  19.     app.run(host='0.0.0.0', port=80) #公眾號后臺只開放了80端口 

這里需要注意 http 的端口號固定使用80,不可填寫其他。這里坑了我很久,因為我的服務器上還有我自己的博客,80端口被博客占用了,為了把80端口讓出來,我重新搭了我的博客,修改了端口,導致現在訪問我的博客后邊必須加上修改后的端口。這里如果有同學有更高的方法,還請勞煩告知一下!

好了,現在我們的驗證流程完成,運行我們的 Web 服務器。然后到公眾號后臺配置處點擊保存,如果提示驗證通過,那么恭喜你完成了驗證。

如果提示驗證失敗,我們自己根據報錯提示來查看是哪里的問題。

實現“你問我答”和“圖”上往來

我們驗證成功了,下面就要開始處理粉絲在公眾號發過來的消息了。我們先來實現一個簡單的“你問我答”, 粉絲給公眾號一條文本消息,公眾號立馬回復一條相同文本消息給粉絲;還有圖上往來,接受粉絲發送的圖片消息,并立馬回復相同的圖片給粉絲。

我們通過公眾號文檔知道,普通用戶向公眾號發消息是用的 POST 方法,消息分為文本消息、圖片消息、語音消息、視頻消息等很多種。這里我們只對文本消息和圖片消息進行處理和回復(后續你也可以針對其他消息進行處理和回復)。

消息的格式為XML數據包,下面看一下文本消息的實例:

  1. <xml> 
  2.   <ToUserName><![CDATA[toUser]]></ToUserName> 
  3.   <FromUserName><![CDATA[fromUser]]></FromUserName> 
  4.   <CreateTime>1348831860</CreateTime> 
  5.   <MsgType><![CDATA[text]]></MsgType> 
  6.   <Content><![CDATA[this is a test]]></Content> 
  7.   <MsgId>1234567890123456</MsgId> 
  8. </xml> 
  • ToUserName 開發者微信號
  • FromUserName 發送方帳號(一個OpenID)
  • CreateTime 消息創建時間 (整型)
  • MsgType 消息類型,文本為text,圖片為image
  • Content 文本消息內容
  • MsgId 消息id,64位整型

被動回復文本消息,就是我們回復給用戶的文本消息類型為:

  1. <xml> 
  2.  <ToUserName><![CDATA[粉絲號]]></ToUserName> 
  3.  <FromUserName><![CDATA[公眾號]]></FromUserName> 
  4.  <CreateTime>1460541339</CreateTime> 
  5.  <MsgType><![CDATA[text]]></MsgType> 
  6.  <Content><![CDATA[test]]></Content> 
  7. </xml> 

Content 回復的消息內容

回復的圖片消息類型:

  1. <xml> 
  2.   <ToUserName><![CDATA[toUser]]></ToUserName> 
  3.   <FromUserName><![CDATA[fromUser]]></FromUserName> 
  4.   <CreateTime>12345678</CreateTime> 
  5.   <MsgType><![CDATA[image]]></MsgType> 
  6.   <Image> 
  7.     <MediaId><![CDATA[media_id]]></MediaId> 
  8.   </Image> 
  9. </xml> 

MediaId 通過素材管理中的接口上傳多媒體文件,得到的id。

接收和回復消息的格式我們知道了,下面我們來看一下整個流程。

 

給你的公眾號添加一個智能機器人

 

給你的公眾號添加一個智能機器人

我們根據流程來修改一下我們的代碼。我們增加兩個文件來處理接收的消息,和回復的消息 receive.py,reply.py。

receive.py

  1. import xml.etree.ElementTree as ET 
  2. def parse_xml(web_data):    if len(web_data) == 0: 
  3.         return None 
  4.     xmlData = ET.fromstring(web_data)    msg_type = xmlData.find('MsgType').text 
  5.     if msg_type == 'text'
  6.         return TextMsg(xmlData) 
  7.     elif msg_type == 'image'
  8.         return ImageMsg(xmlData) 
  9. class Msg(object): 
  10.     def __init__(self, xmlData): 
  11.         self.ToUserName = xmlData.find('ToUserName').text 
  12.         self.FromUserName = xmlData.find('FromUserName').text 
  13.         self.CreateTime = xmlData.find('CreateTime').text 
  14.         self.MsgType = xmlData.find('MsgType').text 
  15.         self.MsgId = xmlData.find('MsgId').text 
  16. class TextMsg(Msg):    def __init__(self, xmlData): 
  17.         Msg.__init__(self, xmlData)        self.Content = xmlData.find('Content').text 
  18. class ImageMsg(Msg):    def __init__(self, xmlData): 
  19.         Msg.__init__(self, xmlData)        self.PicUrl = xmlData.find('PicUrl').text 
  20.         self.MediaId = xmlData.find('MediaId').text 

reply.py

  1. import time 
  2. class Msg(object):    def __init__(self):        pass    def send(self):        return "success"class TextMsg(Msg):    def __init__(self, toUserName, fromUserName, content):        self.__dict = dict()        self.__dict['ToUserName'] = toUserName        self.__dict['FromUserName'] = fromUserName        self.__dict['CreateTime'] = int(time.time())        self.__dict['Content'] = content    def send(self):        XmlForm = """            <xml> 
  3.                 <ToUserName><![CDATA[{ToUserName}]]></ToUserName> 
  4.                 <FromUserName><![CDATA[{FromUserName}]]></FromUserName> 
  5.                 <CreateTime>{CreateTime}</CreateTime> 
  6.                 <MsgType><![CDATA[text]]></MsgType> 
  7.                 <Content><![CDATA[{Content}]]></Content> 
  8.             </xml> 
  9.             """        return XmlForm.format(**self.__dict)class ImageMsg(Msg):    def __init__(self, toUserName, fromUserName, mediaId):        self.__dict = dict()        self.__dict['ToUserName'] = toUserName        self.__dict['FromUserName'] = fromUserName        self.__dict['CreateTime'] = int(time.time())        self.__dict['MediaId'] = mediaId    def send(self):        XmlForm = """            <xml> 
  10.                 <ToUserName><![CDATA[{ToUserName}]]></ToUserName> 
  11.                 <FromUserName><![CDATA[{FromUserName}]]></FromUserName> 
  12.                 <CreateTime>{CreateTime}</CreateTime> 
  13.                 <MsgType><![CDATA[image]]></MsgType> 
  14.                 <Image> 
  15.                 <MediaId><![CDATA[{MediaId}]]></MediaId> 
  16.                 </Image> 
  17.             </xml> 
  18.             """        return XmlForm.format(**self.__dict) 

main.py

  1. from flask import Flask 
  2. from flask import request 
  3. import hashlibimport receiveimport replyapp = Flask(__name__)@app.route("/"
  4. def index():    return "Hello World!" 
  5. # 公眾號后臺消息路由入口@app.route("/wechat", methods=["GET""POST"]) 
  6. def wechat(): # 驗證使用的GET方法    if request.method == "GET"
  7.         signature = request.args.get('signature'
  8.         timestamp = request.args.get('timestamp'
  9.         nonce = request.args.get('nonce'
  10.         echostr = request.args.get('echostr'
  11.         token = "公眾號后臺填寫的token" 
  12.   # 進行排序        dataList = [token, timestamp, nonce]        dataList.sort()        result = "".join(dataList) 
  13.   #哈希加密算法得到hashcode        sha1 = hashlib.sha1()        sha1.update(result.encode("utf-8")) 
  14.         hashcode = sha1.hexdigest()        if hashcode == signature: 
  15.             return echostr 
  16.         else
  17.             return "" 
  18.  else
  19.         recMsg = receive.parse_xml(request.data) 
  20.         if isinstance(recMsg, receive.Msg): 
  21.             toUser = recMsg.FromUserName            fromUser = recMsg.ToUserName            if recMsg.MsgType == 'text'
  22.                 content = recMsg.Content                replyMsg = reply.TextMsg(toUser, fromUser, content)                return replyMsg.send() 
  23.             elif recMsg.MsgType == 'image'
  24.                 mediaId = recMsg.MediaId                replyMsg = reply.ImageMsg(toUser, fromUser, mediaId)                return replyMsg.send() 
  25.             else
  26.                 return reply.Msg().send() 
  27.         else
  28.             return reply.Msg().send() 
  29. if __name__ == "__main__"
  30.     app.run(host='0.0.0.0', port=80) #公眾號后臺只開放了80端口 

然后我們啟動 Web 服務器,去公眾號后臺發消息發圖片測試,如果成功的話立馬就會回復你相同的文字和圖片。

微信提供了一個在線測試的平臺,可以很方便的進行開發中的各種測試。

接入圖靈機器人

首先我們去圖靈機器人官網注冊一個賬號。然后在后臺創建一個機器人。

然后我們根據圖靈機器人接入文檔的使用說明:

  • 編碼方式:調用調用圖靈API的各個環節的編碼方式均為 UTF-8
  • 接口地址:http://openapi.tuling123.com/openapi/api/v2
  • 請求方式: HTTP POST
  • 請求參數:參數格式為 json

請求參數示例:

  1.  "reqType":0, 
  2.     "perception": { 
  3.         "inputText": { 
  4.             "text""附近的酒店" 
  5.         },        "inputImage": { 
  6.             "url""imageUrl" 
  7.         },        "selfInfo": { 
  8.             "location": { 
  9.                 "city""北京"
  10.                 "province""北京"
  11.                 "street""信息路" 
  12.             }        }    },    "userInfo": { 
  13.         "apiKey"""
  14.         "userId""" 
  15.     }} 

輸出參數示例:

  1.     "intent": { 
  2.         "code": 10005, 
  3.         "intentName"""
  4.         "actionName"""
  5.         "parameters": { 
  6.             "nearby_place""酒店" 
  7.         }    },    "results": [ 
  8.         {          "groupType": 1, 
  9.             "resultType""url"
  10.             "values": { 
  11.                 "url""http://m.elong.com/hotel/0101/nlist/#indate=2016-12-10&outdate=2016-12-11&keywords=%E4%BF%A1%E6%81%AF%E8%B7%AF" 
  12.             }        },        {          "groupType": 1, 
  13.             "resultType""text"
  14.             "values": { 
  15.                 "text""親,已幫你找到相關酒店信息" 
  16.             }        }    ]} 

其中 apiKey 是可以在我們創建的機器人的參數中找到,userId 是用戶唯一標識。

好了,下面來編寫我們的代碼。我們增加一個 tuling.py 文件來接入圖靈接口。

tuling.py

  1. import json 
  2. import urllibapiKey = '從你創建的機器人獲得' 
  3. tulingUrl = "http://openapi.tuling123.com/openapi/api/v2" 
  4. # content 是接收的消息,userId 是用戶唯一標識def tulingReply(content, userId):    requestData = {        "reqType": 0, 
  5.         "perception": { 
  6.             "inputText": { 
  7.                 "text": content 
  8.             },            "selfInfo": { 
  9.                 "location": { 
  10.                     "city""北京" 
  11.                 }            }        },        "userInfo": { 
  12.             "apiKey": apiKey, 
  13.             "userId": userId 
  14.         }    }     requestData = json.dumps(requestData).encode('utf8'
  15.     http_post = urllib.request.Request(        tulingUrl,        data=requestData, 
  16.         headers={'content-type''application/json'}) 
  17.      response = urllib.request.urlopen(http_post)    response_str = response.read().decode('utf8'
  18.     response_dic = json.loads(response_str)    results_code = response_dic['intent']['code'
  19.   # 免費版每天有固定次數,如果超過之后會返回4003錯誤碼 
  20.     if results_code == 4003: 
  21.         results_text = "4003:%s" % response_dic['results'][0]['values']['text'
  22.     else
  23.         results_text = response_dic['results'][0]['values']['text'
  24.     return results_text 

修改 main.py

  1. from flask import Flask 
  2. from flask import request 
  3. import hashlibimport reimport tulingimport receiveimport replyapp = Flask(__name__)@app.route("/"
  4. def index():    return "Hello World!" 
  5. # 公眾號后臺消息路由入口@app.route("/wechat", methods=["GET""POST"]) 
  6. def wechat(): # 驗證使用的GET方法    if request.method == "GET"
  7.         signature = request.args.get('signature'
  8.         timestamp = request.args.get('timestamp'
  9.         nonce = request.args.get('nonce'
  10.         echostr = request.args.get('echostr'
  11.         token = "公眾號后臺填寫的token" 
  12.   # 進行排序        dataList = [token, timestamp, nonce]        dataList.sort()        result = "".join(dataList) 
  13.   #哈希加密算法得到hashcode        sha1 = hashlib.sha1()        sha1.update(result.encode("utf-8")) 
  14.         hashcode = sha1.hexdigest()        if hashcode == signature: 
  15.             return echostr 
  16.         else
  17.             return "" 
  18.  else
  19.         recMsg = receive.parse_xml(request.data) 
  20.         if isinstance(recMsg, receive.Msg): 
  21.             toUser = recMsg.FromUserName            fromUser = recMsg.ToUserName            if recMsg.MsgType == 'text'
  22.                 content = recMsg.Content    # userId 長度小于等于32位 
  23.                 if len(toUser) > 31: 
  24.                     userid = str(toUser[0:30]) 
  25.                 else
  26.                     userid = str(toUser)                userid = re.sub(r'[^A-Za-z0-9]+''', userid) 
  27.                 tulingReplay = tuling.tulingReply(content, userid)                replyMsg = reply.TextMsg(toUser, fromUser, tulingReplay)                return replyMsg.send() 
  28.             elif recMsg.MsgType == 'image'
  29.                 mediaId = recMsg.MediaId                replyMsg = reply.ImageMsg(toUser, fromUser, mediaId)                return replyMsg.send() 
  30.             else
  31.                 return reply.Msg().send() 
  32.         else
  33.             return reply.Msg().send() 
  34. if __name__ == "__main__"
  35.     app.run(host='0.0.0.0', port=80) #公眾號后臺只開放了80端口 

耶,我們的機器人完成了,馬上迫不及待的去試試。

 

給你的公眾號添加一個智能機器人

可以愉快的和你的機器人對話了。

后面發現了第一關注公眾號后的歡迎語沒有了,因為你自己的服務器接管了公眾號的消息,所以原來后臺設置的歡迎語就失效了。在公眾號文檔中看到關注/取消關注屬于事件。其消息的格式如下。

  1. <xml> 
  2.   <ToUserName><![CDATA[toUser]]></ToUserName> 
  3.   <FromUserName><![CDATA[FromUser]]></FromUserName> 
  4.   <CreateTime>123456789</CreateTime> 
  5.   <MsgType><![CDATA[event]]></MsgType> 
  6.   <Event><![CDATA[subscribe]]></Event> 
  7. </xml> 

我們只需要判斷一下 MsgType 是 event,然后 Event 是 subscribe,然后回復我們的歡迎語就可以了,很簡單,這個我們就不詳細展開了。

責任編輯:未麗燕 來源: 今日頭條
相關推薦

2021-01-05 14:39:30

人工智能機器人購物

2015-12-10 21:49:32

IM機器人

2018-11-13 09:19:48

機器人人工智能系統

2021-01-28 19:34:49

人工智能AI機器人

2023-07-27 14:38:58

人工智能機器人開發

2022-07-28 11:26:41

人工智能機器人

2024-05-07 07:00:00

智能機器人工業機器人人工智能

2019-04-19 14:40:15

代碼Python機器人

2022-07-28 22:00:47

核酸采樣機器人機器人

2020-02-18 10:26:58

機器人人工智能系統

2015-05-22 11:40:00

希捷

2021-02-15 15:17:15

人工智能機器人技術

2018-03-28 09:28:16

CITE機器人智能系統館

2021-11-30 10:56:43

ChatterBot機器人人工智能

2021-04-01 10:51:44

機器人人工智能編程

2021-05-24 15:29:24

人工智能機器人聊天

2012-06-21 14:20:16

CSS3

2018-12-29 14:50:06

人工智能機器人編程語言

2023-05-24 10:30:48

機器人人工智能

2023-10-05 13:04:27

騰訊機器人RoboticX
點贊
收藏

51CTO技術棧公眾號

精品成人私密视频| 亚洲午夜免费电影| 成人免费福利视频| 九九九免费视频| 都市激情久久| 欧美午夜在线一二页| 国产欧美久久久久| 欧美拍拍视频| 精品一区二区在线视频| 久久久亚洲福利精品午夜| 国产精成人品免费观看| 精品国产欧美| 在线观看av一区| bt天堂新版中文在线地址| 九色在线播放| 成人网页在线观看| 国产精品亚洲自拍| 成人毛片18女人毛片| 一区二区三区国产精华| 亚洲乱码国产乱码精品精| 国产精品久久久久久久av福利| 欲香欲色天天天综合和网| 亚洲三级在线免费观看| 日韩激情视频| 日本精品久久久久| 国产一区二区导航在线播放| 国产精品96久久久久久| 精品视频久久久久| 91精品国产乱码久久久久久| 亚洲最大中文字幕| 国产激情视频网站| 1204国产成人精品视频| 制服丝袜成人动漫| a在线观看免费视频| 少妇淫片在线影院| 亚洲国产中文字幕| 欧美一二三不卡| 黄色在线论坛| 国产精品每日更新| 日韩精品无码一区二区三区| 日本免费一区二区三区最新| av亚洲精华国产精华精| 国产富婆一区二区三区| 国产高清免费在线观看| 国产一区二区三区高清播放| 国产精品第七十二页| 好吊色在线视频| 99精品国产在热久久下载| 久久久精品欧美| 911国产在线| 欧美激情777| 这里只有精品久久| 免费看一级黄色| 波多野结衣在线观看一区二区三区| 日韩精品极品在线观看| 无遮挡aaaaa大片免费看| 日韩伦理一区二区三区| 精品一区电影国产| 日韩中文字幕有码| 成人a'v在线播放| 神马久久桃色视频| 亚洲女人久久久| 亚洲高清影视| 欧美激情第三页| 国产在线精品观看| 国产欧美日韩亚洲一区二区三区| 91成人福利在线| 日本a级c片免费看三区| 草草在线视频| 亚洲激情校园春色| 黄色一级片国产| 丁香花在线电影小说观看| 夜夜嗨av一区二区三区网页| 国产一区二区四区| 香蕉伊大人中文在线观看| 色综合天天综合在线视频| 亚洲精品中文字幕无码蜜桃| 91精品国产66| 欧美一二三区在线观看| 完美搭档在线观看| 国产一区二区在线| 日韩在线视频播放| 久久久久久久久97| 奶水喷射视频一区| 国产欧美日韩免费看aⅴ视频| 国产日本精品视频| 成人aaaa免费全部观看| 日本成人三级电影网站| 麻豆免费在线视频| 亚洲超碰97人人做人人爱| 久久精品午夜福利| 国产区一区二| 日韩高清中文字幕| 人与动物性xxxx| 日韩视频不卡| 国产在线视频2019最新视频| 免费看黄色一级视频| 国产午夜精品一区二区| 996这里只有精品| 亚洲伦理影院| 欧美草草影院在线视频| 国产成人一区二区在线观看| 国产精品二区影院| 国产精品视频1区| 国产综合视频在线| 国产精品毛片大码女人| 国产3p露脸普通话对白| 日韩毛片免费看| 亚洲老头同性xxxxx| 欧洲猛交xxxx乱大交3| 久久狠狠婷婷| 粉嫩精品一区二区三区在线观看| 啊v在线视频| 天天综合天天综合色| 不卡中文字幕在线观看| 婷婷国产精品| 欧美日韩国产成人在线观看| 伊人成年综合网| www.av精品| 法国空姐在线观看免费| 日本精品在线一区| 亚洲国产成人在线视频| 精品国产精品国产精品| 免费看欧美美女黄的网站| 久久精品女人的天堂av| 女子免费在线观看视频www| 欧美日韩aaaaa| 一区二区三区久久久久| 国产免费成人| 国产综合色一区二区三区| 青草影视电视剧免费播放在线观看| 精品视频在线免费看| 久久午夜夜伦鲁鲁片| 午夜性色一区二区三区免费视频| 国产一区私人高清影院| 你懂的在线观看| 狠狠色狠狠色综合日日五| 日韩成人av影院| 午夜精品亚洲| caoporen国产精品| 色网在线观看| 日韩女同互慰一区二区| 中文字幕在线观看2018| 九九**精品视频免费播放| 色姑娘综合av| 福利视频亚洲| www国产91| 中文字幕一区二区在线视频| 亚洲国产精品久久久久| 国产成人久久久| 色哟哟在线观看| 亚洲成av人片一区二区| 不许穿内裤随时挨c调教h苏绵| 亚洲一区二区三区| 91免费看蜜桃| 国产黄色大片在线观看| 精品999久久久| 日本一区二区三区免费视频| 成人涩涩免费视频| 国产中文字幕二区| 天美av一区二区三区久久| 欧美在线性视频| 欧美色综合一区二区三区| 日本韩国精品在线| 一区二区黄色片| 免费国产亚洲视频| 五月天av影院| 99久久免费精品国产72精品九九| 欧美肥臀大乳一区二区免费视频| 亚洲第一成人av| 精品福利免费观看| www.av天天| 麻豆精品一区二区综合av| 裸体裸乳免费看| 盗摄系列偷拍视频精品tp| 136fldh精品导航福利| 精品无人乱码| 4438x成人网最大色成网站| 免费一级a毛片夜夜看 | 国产精品久久久久久久午夜| 日韩欧美小视频| 精品久久久久久久人人人人传媒 | 精品国产乱码久久久久久久久| 日本三级网站在线观看| 久久久99精品免费观看| 五月天丁香花婷婷| 在线高清一区| 亚洲成人av动漫| 51亚洲精品| 国产精品成人一区二区三区吃奶| 成年视频在线观看| 亚洲黄色有码视频| 91精品国产色综合久久不8| 亚洲丰满少妇videoshd| 欧美福利第一页| 国产999精品久久久久久绿帽| 黄色免费观看视频网站| 国产精品99久久精品| 国产一区二区精品免费| 国产人妖一区| 97香蕉超级碰碰久久免费软件| av男人的天堂在线| 亚洲国产91精品在线观看| 在线观看亚洲国产| 五月综合激情日本mⅴ| 99成人在线观看| 久久―日本道色综合久久| 热久久久久久久久| 久久精品一区| 男人添女荫道口图片| 天天做综合网| 日韩免费电影一区二区三区| 高清精品xnxxcom| 91久久久国产精品| 日韩网站中文字幕| 98精品国产高清在线xxxx天堂| 黄色免费网站在线| 尤物九九久久国产精品的特点| 亚洲黄色精品视频| 在线成人午夜影院| 不卡av电影在线| 精品国产电影一区| 麻豆亚洲av熟女国产一区二| 亚洲欧洲av色图| 老熟妇一区二区| 久久天堂av综合合色蜜桃网| 黄色av网址在线观看| 国产精品66部| 樱花草www在线| 美国十次了思思久久精品导航| 成年人在线看片| 国产日本精品| 国产原创中文在线观看 | 久久国产加勒比精品无码| 大片免费播放在线视频| 亚洲欧美国产视频| 日韩精品视频无播放器在线看 | 一级毛片视频在线| 国产亚洲激情在线| 国产在线一二三| 亚洲一区av在线播放| 欧美xxx.com| 亚洲美女视频网| 欧美婷婷久久五月精品三区| 亚洲另类欧美自拍| 成人激情电影在线看| 亚洲新中文字幕| 9色在线视频| 精品国产欧美一区二区五十路| 婷婷视频在线| 久久精品视频亚洲| 污视频在线免费观看网站| 欧美乱妇40p| 超碰在线97国产| 91sa在线看| 秋霞国产精品| 91精品国产综合久久香蕉922| 亚洲热av色在线播放| 亚洲自拍高清视频网站| 91精品入口| 久久66热这里只有精品| 欧美人妖在线| 亚洲日本一区二区三区在线不卡| 99精品综合| 国内少妇毛片视频| 国产一级一区二区| 五月婷婷丁香综合网| 韩国精品免费视频| 欧美双性人妖o0| 国产欧美日韩综合精品一区二区| 四虎国产成人精品免费一女五男| 亚洲三级在线免费| 日产亚洲一区二区三区| 91官网在线免费观看| 一区二区 亚洲| 精品成人a区在线观看| 日韩成人黄色| 日韩三级影视基地| 7777kkk亚洲综合欧美网站| 日韩av不卡电影| 国产一区二区三区免费在线| 国产精选一区二区| 成人同人动漫免费观看| av在线免费观看国产| 久久精品人人做人人爽电影蜜月| 三级黄色片播放| 91在线精品一区二区三区| 欧美色图17p| 五月天婷婷综合| 一级黄色a视频| 亚洲精品美女在线观看| 日本不卡在线| 91禁国产网站| 国产麻豆一区二区三区| 欧美日韩一区二区视频在线| 中文不卡在线| 99久久激情视频| 国产成人亚洲综合色影视| 国产jjizz一区二区三区视频| 亚洲一区二区三区美女| 中文字幕在线网址| 日韩精品在线视频观看| 粗大黑人巨茎大战欧美成人| 日韩美女免费观看| 都市激情久久| 久久视频免费在线| 日韩**一区毛片| 一级国产黄色片| 一区二区三区在线视频免费 | 日韩电影毛片| 99在线影院| 99久久精品费精品国产风间由美| 久久美女福利视频| 成人免费看黄yyy456| 欧美肥妇bbwbbw| 在线精品视频小说1| 天天舔天天干天天操| 欧美另类xxx| 四虎国产精品免费久久| 秋霞久久久久久一区二区| 亚洲天堂成人| 国产91在线免费观看| 亚洲欧洲99久久| 在线观看中文字幕网站| 国产亚洲精品激情久久| 免费h视频在线观看| 国产精品日韩一区二区| 欧美激情1区| 女人高潮一级片| 国产精品乱码一区二区三区软件| 国产suv精品一区二区33| 亚洲精品www久久久| yellow字幕网在线| 国产高清精品一区| 亚洲福利国产| 日韩av无码一区二区三区不卡| 亚洲精品日韩一| 超碰在线观看av| 欧美黑人极品猛少妇色xxxxx| 国产免费区一区二区三视频免费| 日本黄色播放器| 韩国三级电影一区二区| 欧美国产日韩在线观看成人| 欧美人体做爰大胆视频| 欧美人xxx| 91久久精品国产| 欧美激情 亚洲a∨综合| 久久久久亚洲av无码网站| 一二三四区精品视频| 懂色av成人一区二区三区| 久久久久久久av| 国语一区二区三区| 逼特逼视频在线| 国产日韩欧美精品在线| 少妇又紧又色又爽又刺激视频| 深夜福利日韩在线看| 国产精品久久久久久av公交车| 91看片淫黄大片91| 丁香桃色午夜亚洲一区二区三区 | 欧美日韩亚州综合| 免费大片在线观看www| 亚洲a中文字幕| 激情欧美国产欧美| 在线免费观看a级片| 一本色道**综合亚洲精品蜜桃冫 | 国产精品国产三级国产普通话蜜臀| 在线观看视频中文字幕| 欧美久久精品一级黑人c片 | 欧美xxxxxx| 亚洲高清视频一区| 国产精品一卡二| 色婷婷av国产精品| 日韩在线视频免费观看高清中文| 欧美午夜网站| 日韩中文字幕在线视频观看| 国产调教视频一区| 国产偷人妻精品一区二区在线| 高清在线视频日韩欧美| 精品国产一区二区三区久久久樱花| 日韩av卡一卡二| 亚洲午夜激情网站| 国产视频网址在线| 91九色露脸| 久久婷婷激情| 波多野结衣家庭教师| 日韩成人中文字幕| 人人精品久久| 久久久999免费视频| 国产精品久久一卡二卡| 欧美特级特黄aaaaaa在线看| 国产精品av电影| 伊人成人在线| 亚洲国产精品一区二区久久hs| 精品电影一区二区| 亚洲人体在线| 国产成人久久777777| 亚洲乱码中文字幕| yw在线观看| 精品久久久久久亚洲| 国精产品一区一区三区mba桃花|