午夜视频免费看_日韩三级电影网站_国产精品久久一级_亚洲一级在线播放_人妻体内射精一区二区三区_91夜夜揉人人捏人人添红杏_91福利在线导航_国产又粗又猛又黄又爽无遮挡_欧美日韩一区在线播放_中文字幕一区二区三区四区不卡 _日日夜夜精品视频免费观看_欧美韩日一区二区三区

主頁 > 知識庫 > PHP開發之用微信遠程遙控服務器

PHP開發之用微信遠程遙控服務器

熱門標簽:離石地圖標注 長沙crm外呼系統業務 專業電話機器人批發商 深圳外呼系統收費 江蘇外呼電銷機器人報價 電話機器人危險嗎 南寧高頻外呼回撥系統哪家好 400電話辦理福州市 400電話申請方法收費

 摘要

微信公眾好的開發很火,小程序更火。于是也湊個熱鬧,嘗試了一把。

大致的功能還是有的,不過是不全,很多地方我沒有進行處理。不過對于純文本方式的交流,已經沒有問題啦。

環境搭建

下面大致的講講微信公眾號的原理吧。可能我理解的有些不到位,如果有些許不當,歡迎批評指教。

客戶端發送給微信平臺請求,微信平臺將請求轉發給私服,交給程序處理之后,獲取到私服的處理結果,然后反饋給客戶端。

當然,這其中起到核心作用的自然是“微信公眾平臺”啦。相當于提供了一個舞臺,一個能讓各位能人異士展現出各自的特色的平臺。其實,不僅微信如此,阿里同樣是這樣,如此各大電商才能一展手腳不是。

開啟配置

這第一步,就是先申請一個微信開發者賬號,個人的話選擇訂閱號就足夠了。網上相關的資料很多,也很詳細,我就不多說了。咱們直奔主題好了。

首先登陸開發者賬號成功后,開啟服務器端的設置即可,如下圖

開啟完成,根據自己服務器的情況進行一下設置即可。

  • URL就是你的私服用于處理請求數據的地址
  • TOKEN就是一個令牌,隨便設置。不過記住待會自己的代碼上會用到。
  • 至于密鑰嘛,沒什么較大的作用,暫且可以先不用管。

按需設置

設置完,就可以啟用了。這就好比家里的電線全部裝修好了,現在要使用,按下開關一樣。如下圖

啟用服務器配置

服務器環境

關于服務器這塊,官網上講解的也是很詳細的啦。

https://mp.weixin.qq.com/wiki

我們還可以下載官方的demo來模擬。

官方樣本

代碼也很簡單。基本上學過了PHP基本語法的都能夠看得懂。

?php
/**
 * wechat php test
 */
//define your token
define("TOKEN", "weixin");
$wechatObj = new wechatCallbackapiTest();
$wechatObj->valid();
class wechatCallbackapiTest
{
 public function valid()
 {
 $echoStr = $_GET["echostr"];
 //valid signature , option
 if($this->checkSignature()){
 echo $echoStr;
 exit;
 }
 }
 public function responseMsg()
 {
 //get post data, May be due to the different environments
 $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
 //extract post data
 if (!empty($postStr)){
 /* libxml_disable_entity_loader is to prevent XML eXternal Entity Injection,
  the best way is to check the validity of xml by yourself */
 libxml_disable_entity_loader(true);
 $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
 $fromUsername = $postObj->FromUserName;
 $toUsername = $postObj->ToUserName;
 $keyword = trim($postObj->Content);
 $time = time();
 $textTpl = "xml>
  ToUserName>![CDATA[%s]]>/ToUserName>
  FromUserName>![CDATA[%s]]>/FromUserName>
  CreateTime>%s/CreateTime>
  MsgType>![CDATA[%s]]>/MsgType>
  Content>![CDATA[%s]]>/Content>
  FuncFlag>0/FuncFlag>
  /xml>"; 
 if(!empty( $keyword ))
 {
  $msgType = "text";
  $contentStr = "Welcome to wechat world!";
  $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
  echo $resultStr;
 }else{
  echo "Input something...";
 }
 }else {
 echo "";
 exit;
 }
 }
 private function checkSignature()
 {
 // you must define TOKEN by yourself
 if (!defined("TOKEN")) {
 throw new Exception('TOKEN is not defined!');
 }
 $signature = $_GET["signature"];
 $timestamp = $_GET["timestamp"];
 $nonce = $_GET["nonce"];
 $token = TOKEN;
 $tmpArr = array($token, $timestamp, $nonce);
 // use SORT_STRING rule
 sort($tmpArr, SORT_STRING);
 $tmpStr = implode( $tmpArr );
 $tmpStr = sha1( $tmpStr );
 if( $tmpStr == $signature ){
 return true;
 }else{
 return false;
 }
 }
}
?>

核心思路,無非檢驗一下簽名,處理一下請求,反饋一下結果罷了。

這里我不得不想說的就是,我覺得騰訊其實可以將那些個模板什么的去掉,直接暴露出黑盒模式,這樣的話安全性會更高一點。很多時候,權限放的越開,效果可能越差。

核心類

接下來就是我自己的處理邏輯了,參照官方文檔。微信公眾好上有6大接收接口,三大回復接口。依據MsgType即可判定。

接口詳情

驗證

private function checkSignature() {
 // you must define TOKEN by yourself
 if (! defined ( "TOKEN" )) {
 throw new Exception ( 'TOKEN is not defined!' );
 }
 $signature = $_GET ["signature"];
 $timestamp = $_GET ["timestamp"];
 $nonce = $_GET ["nonce"];
 $token = TOKEN;
 $tmpArr = array (
 $token,
 $timestamp,
 $nonce 
 );
 // use SORT_STRING rule
 sort ( $tmpArr, SORT_STRING );
 $tmpStr = implode ( $tmpArr );
 $tmpStr = sha1 ( $tmpStr );
 if ($tmpStr == $signature) {
 return true;
 } else {
 return false;
 }
 }

驗證方法核心就是依據咱們之前網頁上設置的TOKEN來工作的,所以代碼上會用得到。

回復

回復的代碼需要依據客戶端發送的數據的類型來區分對待,類型這塊微信平臺會將數據打包好封裝起來,我們住需要調用內部的MsgType進行處理即可。

拓展

拓展部分,是我自己異想天開往上加的。

添加機器人

調用一個機器人接口,來代替自己發送回復,技能讓用戶得到一個良好的用戶體驗,還能愉悅大眾,何樂而不為?

我這邊測試了兩個接口,一個是curl模式,一個是file_get_contents模式,都挺好用的啦。

?php
/**
 * 圖靈 機器人接口
 * 
 * 使用curl來進行瀏覽器模擬并抓取數據
 */
function turing($requestStr) {
 // 圖靈機器人接口
 $url = "http://www.tuling123.com/openapi/api";
 // 用于POST請求的數據
 $data = array(
 'key'=>"哈哈,這個key還是得你自己去申請的啦",
 'info'=>$requestStr,
 );
 // 構造curl下載器
 $ch = curl_init();
 curl_setopt($ch, CURLOPT_URL, $url);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
 curl_setopt($ch, CURLOPT_POST, 1);
 curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
 $responseStr = curl_exec($ch);
 curl_close($ch);
 return $responseStr;
}
/**
 * 調用另外的接口
 * @param unknown $req
 * @return mixed
 */
function test($req){
 $url = "http://api.qingyunke.com/api.php?key=freeappid=0msg=".$req;
 $result = file_get_contents($url);
 $result = json_decode($result, true);
 return $result['content'];
}
$req = 'hello';
$res = test($req);
echo $res;

命令模式

手機相對于電腦一個很大的優點就是便攜,我們雖然不能隨時隨地攜帶電腦,但是卻能使用手機來代替。很多時候對服務器的管理需要的命令很簡單,但是遠程登錄的時候也不方便。這個時候就用微信來幫忙傳話也是不錯的啦。

我平時喜歡使用Python寫一些腳本,什么獲取本地IP,聊天,查看內存,網速啥的,可謂是應有盡有。這下也終于能有用武之地了。利用微信的關鍵字匹配,就可以簡單的讓微信公眾號當一個小小傳話員啦。

這里給個思路,具體實現起來也比較簡單,當做是文本來處理即可。

完整代碼

下面貼出我服務器上的完整代碼,有些私密的地方我做了些更改,屆時按照自己的情況進行修改即可。

?php
/**
 * wechat php test
 */
// define your token
define ( "TOKEN", "您的TOKEN" );
$wechatObj = new wechatCallbackapiTest ();
// $wechatObj->valid();
// 調用回復信息方法
$wechatObj->responseMsg ();
// 微信消息處理核心類
class wechatCallbackapiTest {
 public function valid() {
 $echoStr = $_GET ["echostr"];
 // valid signature , option
 if ($this->checkSignature ()) {
 echo $echoStr;
 exit ();
 } else {
 echo "驗證失敗!";
 }
 }
 public function responseMsg() {
 // get post data, May be due to the different environments
 // 類似$_POST但是可以接受XML數據,屬于增強型
 $postStr = $GLOBALS ["HTTP_RAW_POST_DATA"];
 // extract post data
 if (! empty ( $postStr )) {
 /*
 * libxml_disable_entity_loader is to prevent XML eXternal Entity Injection,
 * the best way is to check the validity of xml by yourself
 */
 // 不解析外部數據,防止xxml漏洞
 libxml_disable_entity_loader ( true );
 $postObj = simplexml_load_string ( $postStr, 'SimpleXMLElement', LIBXML_NOCDATA );
 $fromUsername = $postObj->FromUserName;
 $toUsername = $postObj->ToUserName;
 $keyword = trim ( $postObj->Content );
 $time = time ();
 /*
 * 微信客戶端發送信息的時候會附帶一些參數,詳見官方文檔。所以要根據不同的類型,來分別做相關的處理。
 * 于是MsgType 就充當這樣的一個區分的標記
 */
 $msgType = $postObj->MsgType;
 /*
 * 當有用戶關注后者退訂的時候,會觸發相應的事件。所以再來個event事件的監聽更為友好。
 * $event = $postObj->Event.
 * 具體的參數信息,官網上很詳細。
 */
 $event = $postObj->Event;
 switch ($msgType) {
 // 文本消息 處理部分
 case "text" :
  if (! empty ( $keyword )) {
  // 在此處進行對關鍵字的匹配就可以實現:針對不同關鍵字組裝的相應數據
  if($keyword=='音樂' || $keyword == "music") {
  $msgType = 'music';
  $musictitle = "The Mountain";
  $musicdescription = "夏日舒心清涼歌曲";
  $musicurl = "http://101.200.58.242/wx/themaintain.mp3";
  $hqmusicurl = "http://101.200.58.242/wx/themaintain.mp3";
  musicMessageHandle($fromUsername, $toUsername, $time, $msgType, $musictitle, $musicdescription, $musicurl, $hqmusicurl);
  }elseif($keyword == '1'){
  $msgType = 'text';
  $contentStr = "人生得意須盡歡,莫使金樽空對月!";
  textMessageHandle($fromUsername, $toUsername, $time, $msgType, $contentStr);
  }elseif($keyword == '命令模式'){
  $msgType = 'text';
  $contentStr = "進入命令模式,開始對服務器進行管理!\n接下來將依據您輸入的命令對服務器進行管理!";
  textMessageHandle($fromUsername, $toUsername, $time, $msgType, $contentStr);
  }else {
  // 直接調用 機器人接口,與用戶進行交流
  $msgType = "text";
  $contentStr = turing($keyword)!=""?turing($keyword):"這里是微信 純文本測試數據!";
  textMessageHandle ( $fromUsername, $toUsername, $time, $msgType, $contentStr );
  }
  } else {
  echo "您得輸入點數據,我才能回復不是!";
  }
  break;
 // 接收圖片信息
 case "image" :
  if (! empty ( $keyword )) {
//  $msgType = "image";
  $contentStr = "您發送的圖片看起來還真不錯!";
  textMessageHandle ( $fromUsername, $toUsername, $time, $msgType, $contentStr );
  } else {
  echo "服務器沒能收到您發送的圖片!";
  }
  break;
 // 接收語音信息
 case "voice" :
  if (! empty ( $keyword )) {
//  $msgType = "voice";
  $contentStr = "您發送的語音聽起來還真不錯!";
  textMessageHandle ( $fromUsername, $toUsername, $time, $msgType, $contentStr );
  } else {
  echo "服務器沒能收到您發送的語音!";
  }
  break;
 // 接收視頻信息
 case "video" :
  if (! empty ( $keyword )) {
//  $msgType = "video";
  $contentStr = "您發送的視頻看起來還真不錯!";
  textMessageHandle ( $fromUsername, $toUsername, $time, $msgType, $contentStr );
  } else {
  echo "服務器沒能收到您發送的視頻!";
  }
  break;
 // 接收視頻信息
 case "shortvideo" :
  if (! empty ( $keyword )) {
//  $msgType = "shortvideo";
  $contentStr = "您發送的小視頻看起來還真不錯!";
  textMessageHandle ( $fromUsername, $toUsername, $time, $msgType, $contentStr );
  } else {
  echo "服務器沒能收到您發送的小視頻!";
  }
  break;
 // 接收位置信息
 case "location" :
  if (! empty ( $keyword )) {
//  $msgType = "location";
  $contentStr = "您發送的位置已被接收!";
  textMessageHandle ( $fromUsername, $toUsername, $time, $msgType, $contentStr );
  } else {
  echo "服務器沒能收到您發送的位置!";
  }
  break;
 // 接收視頻信息
 case "link" :
  if (! empty ( $keyword )) {
//  $msgType = "link";
  $contentStr = "您發送的鏈接看起來還真不錯!";
  textMessageHandle ( $fromUsername, $toUsername, $time, $msgType, $contentStr );
  } else {
  echo "服務器沒能收到您發送的鏈接!";
  }
  break;
 // 對事件進行偵聽
 case "event":
  switch ($event) {
  case "subscribe":
  // 發送一些消息!
  $msgType = 'text';
  $contentStr = "終于等到你!";
  textMessageHandle($fromUsername, $toUsername, $time, $msgType, $contentStr);
  break;
  }
  break;
 default :
  break;
 }
 } else {
 echo "";
 exit ();
 }
 }
 private function checkSignature() {
 // you must define TOKEN by yourself
 if (! defined ( "TOKEN" )) {
 throw new Exception ( 'TOKEN is not defined!' );
 }
 $signature = $_GET ["signature"];
 $timestamp = $_GET ["timestamp"];
 $nonce = $_GET ["nonce"];
 $token = TOKEN;
 $tmpArr = array (
 $token,
 $timestamp,
 $nonce 
 );
 // use SORT_STRING rule
 sort ( $tmpArr, SORT_STRING );
 $tmpStr = implode ( $tmpArr );
 $tmpStr = sha1 ( $tmpStr );
 if ($tmpStr == $signature) {
 return true;
 } else {
 return false;
 }
 }
}
/**
 * 定義為心中想難關的六個接口的數據發送格式模板
 */
function textMessageHandle($fromUsername, $toUsername, $time, $msgType, $contentStr) {
 $textTpl = "xml>
  ToUserName>![CDATA[%s]]>/ToUserName>
  FromUserName>![CDATA[%s]]>/FromUserName>
  CreateTime>%s/CreateTime>
  MsgType>![CDATA[%s]]>/MsgType>
  Content>![CDATA[%s]]>/Content>
  FuncFlag>0/FuncFlag>
 /xml>";
 $resultStr = sprintf ( $textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr );
 echo $resultStr;
}
function imageMessageHandle($fromUsername, $toUsername, $time, $msgType, $contentStr) {
 $imageTpl = "xml>
  ToUserName>![CDATA[%s]]>/ToUserName>
  FromUserName>![CDATA[%s]]>/FromUserName>
  CreateTime>%s/CreateTime>
  MsgType>![CDATA[%s]]>/MsgType>
  Content>![CDATA[%s]]>/Content>
  PicUrl>![CDATA[this is a url]]>/PicUrl>
  MediaId>![CDATA[media_id]]>/MediaId>
  MsgId>1234567890123456/MsgId>
  /xml>";
 $resultStr = sprintf ( $textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr );
 echo $resultStr;
}
function musicMessageHandle($fromUsername, $toUsername, $time, $msgType, $musictitle, $musicDescription, $musicurl, $hqmusicurl) {
 $musicTpl = "xml>
  ToUserName>![CDATA[%s]]>/ToUserName>
  FromUserName>![CDATA[%s]]>/FromUserName>
  CreateTime>%s/CreateTime>
  MsgType>![CDATA[%s]]>/MsgType>
  Music>
  Title>![CDATA[%s]]>/Title>
  Description>![CDATA[%s]]>/Description>
  MusicUrl>![CDATA[%s]]>/MusicUrl>
  HQMusicUrl>![CDATA[%s]]>/HQMusicUrl>
  /Music>
 /xml>";
 $resultStr = sprintf($musicTpl, $fromUsername, $toUsername, $time, $msgType, $musictitle, $musicDescription, $musicurl, $hqmusicurl);
 echo $resultStr;
}
/**
 * 圖靈 機器人接口
 * 
 * 使用curl來進行瀏覽器模擬并抓取數據
 */
function turing($requestStr) {
 /* // 圖靈機器人接口
 $url = "http://www.tuling123.com/openapi/api";
 // 用于POST請求的數據
 $data = array(
 "key"=>"您在圖靈機器人官網上申請的key",
 "info"=>$requestStr
 );
 // 構造curl下載器
 $ch = curl_init();
 curl_setopt($ch, CURLOPT_URL, $url);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
 curl_setopt($ch, CURLOPT_POST, 1);
 curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
 $requestStr = curl_exec($ch);
 curl_close($ch);
 return responseStr; */
 $url = "http://api.qingyunke.com/api.php?key=freeappid=0msg=".$requestStr;
 $result = file_get_contents($url);
 $result = json_decode($result, true);
 return $result['content'];
}
?>

總結

最后來回顧一下,本次試驗用到了哪些知識點。

  • PHP的面向對象方法編程簡單實現。
  • 接口處理的兩種方式
  • 微信公眾號后臺私服的接入,處理,反饋。
  • 前后端的交互,以及聊天機器人的應用。

其實,這些代碼跟我一開始的設想還是差別挺大的,原本是想實現一個“遙控器”,晚上想睡覺之前,用微信發一條命令“打開電熱毯”,半個小時后,電視看完了,去睡覺的時候發現被窩很暖和,是的,只要加上點硬件,這很容易實現啦再者冰箱了,電視了統統可以完成,那樣估計就診的是“智能家居”了吧。

您可能感興趣的文章:
  • 微信小程序上傳圖片到服務器實例代碼
  • 本地搭建微信小程序服務器的實現方法
  • 微信小程序圖片選擇、上傳到服務器、預覽(PHP)實現實例
  • 微信小程序訪問node.js接口服務器搭建教程
  • 微信小程序 消息推送php服務器驗證實例詳解
  • 微信公眾平臺開發-微信服務器IP接口實例(含源碼)
  • 微信小程序 解決請求服務器手機預覽請求不到數據的方法
  • 微信小程序 Windows2008 R2服務器配置TLS1.2方法
  • java微信開發API第一步 服務器接入
  • C#微信開發(服務器配置)

標簽:興安盟 株洲 濱州 太原 白酒營銷 南京 南昌 曲靖

巨人網絡通訊聲明:本文標題《PHP開發之用微信遠程遙控服務器》,本文關鍵詞  PHP,開發,之用,微信,遠程,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PHP開發之用微信遠程遙控服務器》相關的同類信息!
  • 本頁收集關于PHP開發之用微信遠程遙控服務器的相關信息資訊供網民參考!
  • 推薦文章
    欧美成人777| 日本高清免费观看| 国产无遮挡又黄又爽| 色噜噜噜噜噜噜| 奇米777欧美一区二区| 国产午夜精品视频| 久久96国产精品久久99软件| 国产a级片视频| 91最新在线免费观看| 欧美在线一区二区三区四区| 麻豆明星ai换脸视频| 亚洲女同ⅹxx女同tv| 亚洲最新免费视频| 久久精品电影| 日韩视频免费在线观看| www.污污视频| 狠狠综合久久av一区二区| 国产成人99久久亚洲综合精品| 欧美小视频在线| 久久久久久有精品国产| 精品无人区一区二区三区| 免费在线观看毛片网站| 日本亚洲最大的色成网站www| 久久综合久久美利坚合众国| 国产人妻777人伦精品hd| 黄瓜视频在线免费观看| 狠狠色2019综合网| 久久99精品久久久久久| 欧美中文字幕第一页| 欧美伦理片在线看| 亚洲免费观看在线观看| 免费看黄色一级大片| 一区二区在线观看免费 | 你懂的国产视频| 日韩欧美在线视频日韩欧美在线视频 | 国产黄色录像视频| 国产精品成人久久| 最新不卡av在线| 男女裸体影院高潮| 日本美女视频一区二区| 精品对白一区国产伦| 性高湖久久久久久久久aaaaa| 久久99亚洲精品| 不卡中文字幕在线| 国产又粗又猛又爽又黄的| 日韩精品中文字幕一区二区三区| 在线观看三级网站| www毛片com| 欧美国产日本视频| 亚洲福利在线观看| 99re视频在线| 日本一级片在线播放| 欧美国产日韩亚洲一区| 成人中心免费视频| 欧美一级二级三级| 久久久久久久国产视频| 老司机精品视频在线| 欧美一级高清大全免费观看| 成人高清dvd| 国产91丝袜在线观看| 亚洲国产精品综合| 成人av网址在线| 女人一区二区三区| 国产69精品久久777的优势| 91在线色戒在线| 91精品国产乱码在线观看| 色综合久久久久综合| 亚洲欧洲美洲综合色网| 国产精品亚洲精品| 国产wwwxx| 亚洲 欧美 激情 另类| 成年无码av片在线| 亚洲一区二区三区高清视频| 91精品国产综合久久国产大片| 黑人巨茎大战欧美白妇| 午夜性色福利影院| 色视频欧美一区二区三区| 一本一道久久a久久综合精品| 国产精品一级在线| 欧美一区二区三区精美影视 | 精品97人妻无码中文永久在线 | 国产成人涩涩涩视频在线观看| 亚洲精品中文字幕乱码无线| 在线观看色网站| 中文字幕亚洲一区二区三区| 欧美另类视频在线观看| 3751色影院一区二区三区| 亚洲中文字幕无码av永久| 蜜臀av午夜精品| 欧美精品一区二区三区蜜桃| 久久69精品久久久久久国产越南| 三上悠亚久久精品| 欧美视频完全免费看| 日本中文在线视频| 欧美大片欧美激情性色a∨久久| 国产婷婷在线视频| av电影成人| 久久精品主播| 91sao在线观看国产| 成人观看免费视频| 日韩欧美高清在线| 日本黄色动态图| 丰满少妇久久久久久久| 欧美一级高清免费播放| 亚洲中文字幕在线观看| 国产美女精品视频| 国产免费a视频| 国产91精品久久久久久久| 真实新婚偷拍xxxxx| 亚洲一区二区三区四区中文字幕| 亚洲熟妇无码av在线播放| 国产不卡在线播放| 国产美女无遮挡网站| 欧美成人a∨高清免费观看| 欧美日韩在线视频播放| 成人在线视频网站| 国产午夜亚洲精品理论片色戒 | 中文字幕日本精品| 51妺嘿嘿午夜福利| 91麻豆精品国产91久久久使用方法| 精品久久久久av影院| 欧美凹凸一区二区三区视频| 蜜臀av午夜精品| 四虎永久国产精品| 亚洲天堂成人在线观看| 亚洲天堂第一区| 成人免费毛片aaaaa**| 久久人人爽人人爽人人av| 久久精品偷拍视频| 国产不卡av在线| www.成人在线观看| 亚洲国产精品久久久久久女王| 在线观看91av| 天天操天天操天天干| 欧美少妇性生活视频| 亚洲欧美色图片| 久久av资源网| www国产无套内射com| 国产精品久久久久久久蜜臀| www插插插无码视频网站| 亚洲欧美激情一区二区| 粗暴91大变态调教| 色成人在线视频| 国产精品沙发午睡系列| 色综合天天性综合| 中文字幕视频网| av激情久久| 国产99一区视频免费| 久久手机视频| 中文字幕视频一区| 福利视频第一区| 韩国黄色一级大片| 亚洲一区二区免费视频| 亚洲911精品成人18网站| 日韩电影免费观看中文字幕| 黄色一级视频在线观看| 91精品国产欧美日韩| 老司机福利在线观看| 啊v视频在线一区二区三区| www.四虎在线| 欧美日韩国产在线看| 欧美精品色视频| 一二美女精品欧洲| 亚洲自拍偷拍另类| 欧美做暖暖视频| 亚洲最色的网站| av无码一区二区三区| 日韩亚洲一区二区| 日本一级片免费| 日韩中文字幕网址| 99热这里只有精品66| 伊人久久av导航| 亚洲毛片在线免费观看| 成人免费高清在线| 欧美福利视频一区二区| 日韩精品一区二区三区色偷偷| 欧美精品一区二| 最新在线中文字幕| 久久久久网址| 亚洲精品视频一区| 蜜桃视频日韩| 国产精品欧美一区喷水| 久久成人免费视频| 国产乱码精品一区二三区蜜臂 | 亚洲国产中文字幕在线视频综合| 亚洲成人福利在线观看| 久久天天躁狠狠躁老女人| 国产精品正在播放| 成人区一区二区| 欧美精品一区二区高清在线观看| 蜜桃av鲁一鲁一鲁一鲁俄罗斯的 | 国产欧美日韩卡一| 久久精品国产亚洲av高清色欲 | 中文字幕一区二区三区不卡| 加勒比精品视频| 日日骚久久av| 久久人人超碰| 99精品人妻少妇一区二区| 久久精品一本久久99精品| 亚洲图片欧美日韩| 欧美成在线观看| 亚洲精品久久久久久久久久久久久久| 成人免费自拍视频| 国产精品一区三区| av在线播放网址| 国产精品盗摄久久久| 国产精品美女一区二区在线观看| 在线黄色免费看| 欧美另类在线观看| 国产一区二区美女| 神马久久久久久久| 日韩av手机在线播放| 老司机午夜网站| 成人国产精品久久久久久亚洲| 欧美一区二区三区视频在线| 成人免费视频网站在线观看| 久久精品国产亚洲av高清色欲 | 亚洲精品av在线播放| 人妻精品无码一区二区| 欧美视频免费播放| 精品国产百合女同互慰| 人妻少妇一区二区三区| 浴室偷拍美女洗澡456在线| 国产精品不卡一区| 欧类av怡春院| 毛片精品免费在线观看| 亚州视频一区二区三区| 少妇高潮毛片色欲ava片| 欧美v日韩v国产v| 国产成人在线看| 99热这里只有精品在线播放| 日韩免费在线观看视频| 色哦色哦哦色天天综合| 国产a级免费视频| 久久久无码人妻精品无码| 欧美成年人视频网站| 97久久超碰国产精品| 老司机福利在线观看| 欧美日韩国产精品一卡| 日韩免费在线观看| 亚洲综合成人av| 老汉色影院首页| 欧美日韩www| 国产不卡精品视频| 国产 欧美 日韩 一区| 亚洲风情亚aⅴ在线发布| 日本高清视频www| 亚洲色图日韩精品| 国产高清不卡无码视频| 日韩国产精品亚洲а∨天堂免| 成人小视频免费观看| 欧美黑人性猛交xxx| 图片区小说区区亚洲五月| 亚洲一区二区三区成人在线视频精品| 欧美重口另类videos人妖| 日韩精品视频观看| 欧美一区二区三区四区高清| 国产精品你懂的在线欣赏| 国产精品中文欧美| 一区二区视频免费观看| 国产女同无遮挡互慰高潮91| 超碰97网站| 亚洲欧美日本另类| 亚洲狠狠爱一区二区三区| 国产露脸无套对白在线播放| 日本久久久久久久久久| 欧美激情视频一区| 亚洲综合免费观看高清完整版| 中文字幕在线观看视频网站| 国产乱女淫av麻豆国产| 夜夜爽99久久国产综合精品女不卡| 亚洲xxx自由成熟| 欧美日韩成人在线| 经典三级在线一区| 波多野结衣一本一道| 日本免费色视频| 一区二区三区回区在观看免费视频| 国产亚洲一本大道中文在线| 中文字幕视频观看| 久久精品无码中文字幕| 国产对白在线播放| 欧美第一黄网| αv一区二区三区| 久久精品五月婷婷| 91香蕉亚洲精品| 国产一区二区丝袜| 久久久欧美一区二区| 亚洲免费小视频| 伊人性伊人情综合网| 日韩中文字幕一区二区三区| sm捆绑调教视频| 国产91在线免费| 国产一区二区三区色淫影院| 久久人91精品久久久久久不卡| 日韩精品一区二区三区蜜臀| 亚洲av成人无码网天堂| 91网站免费入口| 一区二区三区在线视频看| 久久国产精品电影| 亚洲成人动漫精品| 国产精品白丝jk黑袜喷水| 可以免费看毛片的网站| 日本在线观看中文字幕| 国产aⅴ爽av久久久久| 三级在线免费观看| 久久久久天天天天| 亚洲永久在线观看| 精品在线观看一区二区| 国产精品久久波多野结衣| 欧洲精品亚洲精品| 午夜精品短视频| av影院在线播放| 国产经典久久久| 伊人久久大香线蕉午夜av| 久久99精品久久久久久久青青日本| 国产ts一区二区| 久久九九免费视频| 日韩精品在线网站| 疯狂欧美牲乱大交777| 国产精品久久久久久久蜜臀| 免费观看日韩av| 好吊色在线观看| 精品在线视频免费| 香蕉网在线播放| 欧美一级特黄aaa| 中文字幕日韩精品无码内射| 黄色www在线观看| 成人高清dvd| 免费的av在线| 97免费高清电视剧观看| 欧美专区第一页| 欧美激情第1页| 欧美激情视频一区| 91精品国产综合久久香蕉麻豆| 99国产欧美另类久久久精品| 成人18精品视频| 久久品道一品道久久精品| 成人动漫在线一区| 丁香一区二区三区| 国产亚洲一区二区三区在线观看 | 日本不卡一区视频| 久久久无码人妻精品无码| 免费在线观看的毛片| 精品人妻大屁股白浆无码| 欧美二区在线| 成人午夜高潮视频| 992tv成人免费视频| 午夜精品久久久久久久久久久久久 | www.日本久久久久com.| 日韩一区二区久久久| 欧美裸体bbwbbwbbw| 亚洲欧美另类久久久精品| 国产精品久久久一区麻豆最新章节| 久久人人97超碰com| 久久久久久久久伊人| 自拍偷在线精品自拍偷无码专区| 亚洲精品成人a在线观看| 精品高清美女精品国产区| 日韩一区在线看| 国产精品免费视频网站| 成人免费看视频| 国产乱人伦偷精品视频免下载| 久久精品国产99国产| 三级精品在线观看| 99久久婷婷国产一区二区三区| 免费在线观看国产精品| 中文字幕观看av| 国产一级做a爱免费视频| www.色日本| 久久久99久久| 欧美日韩免费不卡视频一区二区三区| 欧美日韩一区高清| 欧美日韩三级视频| 精品国产伦一区二区三区观看方式| 日韩在线观看视频免费| 国产一区二区三区高清在线观看| 欧美日韩精品在线视频| 欧美一区二区视频在线观看| 精品日韩一区二区三区| 北条麻妃99精品青青久久| 国产精品香蕉av| 国产肥臀一区二区福利视频| 五月天免费网站| 亚洲人成色777777老人头| 亚洲精品国产一区二区三区四区在线 | 亚洲va欧美va| 蜜桃视频免费观看一区| 91在线看国产| 亚洲成人精品一区| 精品国产成人在线| 亚洲天堂日韩电影| 国产成人亚洲综合| 99国产在线| 黄色免费高清视频| 欧美美女一级片| av黄色一级片| 欧美xxxooo| 国产剧情在线视频| 久久久精品性| 欧美国产日韩亚洲一区| 日韩黄色av网站| 亚洲综合视频1区| 国模一区二区三区私拍视频| www.激情网| 国产裸体视频网站| 久久精品女人毛片国产| 久久免费国产| 蜜桃视频免费观看一区| 久久男人中文字幕资源站| 91久久一区二区|