Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 91原创视频在线,亚洲国产精品成熟老女人,国产成人精品免费视频大

          整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          PHP使用CURL詳解

          PHP使用CURL詳解

          url是PHP的一個擴展,利用該擴展可以實現服務器之間的數據或文件傳輸。也就是說curl就是一個工具,用來做服務器之間數據、文件傳輸的工具。

          用來采集網絡中的html網頁文件、其他服務器提供接口數據等


          開啟curl擴展

          (1) 在php.ini里面開啟curl這個擴展

          (2) 將PHP的安裝路徑保存到環境變量的系統變量中(環境變量之間的分隔符是英文的分號)

          (3) 重啟apache服務器

          (4) 重啟計算機

          curl的一些常用配置項

          (1) 通過CURLOPT_RETURNTRANSFER配置項設置,是直接顯示結果(echo)還是將結果返回(return)


          (2) 針對https協議的請求,需要驗證客戶端的安全證書,通常都會跳過安全證書的驗證

          (3) CURLOPT_HEADER是否返回header頭信息


          封裝的一個curl方法1:


          
          <?php
          /*
           * 使用curl擴展發出http的get或post請求
           */
          class HttpRequest
          {
              //url,請求的服務器地址
              private $url='';
              
              //is_return,是否返回結果而不是直接顯示
              private $is_return=1;
              
              public function __set($p,$v)
          {
                  if(property_exists($this, $p)){
                      $this->$p=$v;
                  }
              }
              // 發出http請求的方法
              //參數:提交的數據,默認是空的
              public function send($data=array())
          {
                  //1. 如果傳遞數據了,說明向服務器提交數據(post),如果沒有傳遞數據,認為從服務器讀取資源(get)
                  $ch=curl_init();
                  
                  //2. 不管是get、post,跳過證書的驗證
                  curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
                  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
                  
                  //3. 設置請求的服務器地址
                  curl_setopt($ch, CURLOPT_URL, $this->url);
                  
                  //4. 判斷是get還是post
                  if(!empty($data)){
                      curl_setopt($ch, CURLOPT_POST, true);
                      curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
                  }
                  //5. 是否返回數據
                  if($this->is_return===1){
                      //說明返回
                      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
                      $result=curl_exec($ch);
                      curl_close($ch);
                      return $result;
                  }else{
                      //直接輸出
                      curl_exec($ch);
                      curl_close($ch);
                  }
              }
          }


          封裝的一個curl方法2:


          
          //curl采集器
          public function http_curl($url,$type='get',$res='json',$arr=''){
           //1.初始化curl
          $ch=curl_init();
           //2.設置curl的參數
           curl_setopt($ch,CURLOPT_URL,$url);
           curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
            if($type=='post'){
              curl_setopt($ch,CURLOPT_POST,1);
               curl_setopt($ch,CURLOPT_POSTFIELDS,$arr);
             }
           //3.采集
           $output=curl_exec($ch);
           //4.關閉
           curl_close($ch);
           //如果返回的值,是json格式,則轉換成數組
           if($res=='json'){
             if(curl_errno($ch)){
               //請求失敗,返回錯誤信息
               return curl_error($ch);
             }else{
               //請求成功
             return json_decode($output,true);
           }
           }
           }//http_curl end


          curl模擬文件上傳

          說明:PHP5.6之前的版本上傳文件使用:@

          Php5.6之后的版本使用new CURLFile()

          這樣其他服務器接收到數據之后,就可以移動了



          curl模擬cookie登錄

          (1) 我們訪問服務器時,服務器會先在服務器端創建一個session文件,保存用戶的信息,便于在多個頁面共享數據,然后服務器會以setcookie的形式告訴客戶端在自己身上創建cookie,保存session文件的名,以前使用瀏覽器訪問服務器的時候,瀏覽器會在自己身上創建cookie文件,現在使用我們的服務器訪問:cookie保存到哪里?

          CURLOPT_COOKIEJAR配置項設置,cookie保存到哪里


          (2) 以后再訪問服務器的時候,隨身攜帶cookie(里面就是存儲的session文件的名字),那么怎么找到這個cookie呢?

          CURLOPT_COOKIEFILE 配置項設置,每次請求時攜帶哪個cookie文件


          PHP使用CURL詳解

          CURL是一個非常強大的開源庫,支持很多協議,包括HTTP、FTP、TELNET等,我們使用它來發送HTTP請求。它給我 們帶來的好處是可以通過靈活的選項設置不同的HTTP協議參數,并且支持HTTPS。CURL可以根據URL前綴是“HTTP” 還是“HTTPS”自動選擇是否加密發送內容。

          使用CURL發送請求的基本流程

          使用CURL的PHP擴展完成一個HTTP請求的發送一般有以下幾個步驟:

          • 初始化連接句柄;
          • 設置CURL選項;
          • 執行并獲取結果;
          • 釋放VURL連接句柄。


          下面的程序片段是使用CURL發送HTTP的典型過程


          
          // 1. 初始化
           $ch=curl_init();
           // 2. 設置選項,包括URL
           curl_setopt($ch,CURLOPT_URL,"http://www.devdo.net");
           curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
           curl_setopt($ch,CURLOPT_HEADER,0);
           // 3. 執行并獲取HTML文檔內容
           $output=curl_exec($ch);
           if($output===FALSE ){
           echo "CURL Error:".curl_error($ch);
           }
           // 4. 釋放curl句柄
           curl_close($ch);

          上述代碼中使用到了四個函數


          ①curl_init() 和 curl_close() 分別是初始化CURL連接和關閉CURL連接,都比較簡單。

          ②curl_exec() 執行CURL請求,如果沒有錯誤發生,該函數的返回是對應URL返回的數據,以字符串表示滿意;如果發生錯誤,該函數返回 FALSE。需要注意的是,判斷輸出是否為FALSE用的是全等號,這是為了區分返回空串和出錯的情況。

          ③CURL函數庫里最重要的函數是curl_setopt(),它可以通過設定CURL函數庫定義的選項來定制HTTP請求。上述代碼片段中使用了三個重要的選項:

          • CURLOPT_URL 指定請求的URL;
          • CURLOPT_RETURNTRANSFER 設置為1表示稍后執行的curl_exec函數的返回是URL的返回字符串,而不是把返回字符串定向到標準輸出并返回TRUE;
          • CURLLOPT_HEADER設置為0表示不返回HTTP頭部信息。

          CURL的選項還有很多,可以到PHP的官方網站上查看CURL支持的所有選項列表。


          獲取CURL請求的輸出信息

          在curl_exec()函數執行之后,可以使用curl_getinfo()函數獲取CURL請求輸出的相關信息,示例代碼如下:


          curl_exec($ch);
          $info=curl_getinfo($sh);
          echo ' 獲取 '.$info['url'].'耗時'.$info['total_time'].'秒';

          上述代碼中curl_getinfo返回的是一個關聯數組,包含以下數據:

          • url:網絡地址。
          • content_type:內容編碼。
          • http_code:HTTP狀態碼。
          • header_size:header的大小。
          • request_size:請求的大小。
          • filetime:文件創建的時間。
          • ssl_verify_result:SSL驗證結果。
          • redirect_count:跳轉計數。
          • total_time:總耗時。
          • namelookup_time:DNS查詢耗時。
          • connect_time:等待連接耗時。
          • pretransfer_time:傳輸前準備耗時。
          • size_uplpad:上傳數據的大小。
          • size_download:下載數據的大小。
          • speed_download:下載速度。
          • speed_upload:上傳速度。
          • download_content_length:下載內容的長度。
          • upload_content_length:上傳內容的長度。
          • starttransfer_time:開始傳輸的時間表。
          • redirect_time:重定向耗時。


          curl_getinfo()函數還有一個可選擇參數$opt,通過這個參數可以設置一些常量,對應到上述這個字段,如果設置了第二個參數,那么返回的只有指定的信息。例如設置$opt為CURLINFO_TOTAL_TIME,則curl_getinfo()函數只返回total_time,即總傳輸消耗的時間,在只需要關注某些傳輸信息時,設置$opt參數很有意義。

          使用CURL發送GET請求

          如何使用CURL來發送GET請求,發送GET請求的關鍵是拼裝格式正確的URL。請求地址和GET數據由一個“?”分割,然后GET變量的名稱和值用“=”分隔,各個GET名稱和值由“&”連接。PHP為我們提供了一個函數專門用來拼裝GET請求和數據部分——http_build_query,該函數接受一個關聯數組,返回由該關聯數據描述的GET請求字符串。使用這個函數,結合CURL發送HTTP請求的一般流程,我們封閉了一個發送GET請求的函數——doCurlGetRequest,具體代碼如下:


          
          **
           *@desc 封閉curl的調用接口,get的請求方式。
          */
          function doCurlGetRequest($url,$data,$timeout=5){
           if($curl=="" || $timeout <=0){
           return false;
           }
           $url=$url.'?'.http_bulid_query($data);
           $con=curl_init((string)$url);
           curl_setopt($con, CURLOPT_HEADER, false);
           curl_setopt($con, CURLOPT_RETURNTRANSFER,true);
           curl_setopt($con, CURLOPT_TIMEOUT, (int)$timeout);
           
           return curl_exec($con);
          }

          這個函數把使用http_build_query 拼裝好的帶GET參數的URL傳給curl_init函數,然后使用CURL發送HTTP請求。

          使用CURL發送POST請求

          可以使用CURL提供的選項CURLOPT_POSTFIELDS,設置該選項為POST字符串數據就可以把請求放在正文中。同樣我們實現了一個發送POST請求的函數——doCurlPostRequest,代碼如下:


          
          /**
          ** @desc 封裝 curl 的調用接口,post的請求方式
          **/
          function doCurlPostRequest($url,$requestString,$timeout=5){
           if($url=='' || $requestString=='' || $timeout <=0){
           return false;
           }
           $con=curl_init((string)$url);
           curl_setopt($con, CURLOPT_HEADER, false);
           curl_setopt($con, CURLOPT_POSTFIELDS, $requestString);
           curl_setopt($con, CURLOPT_POST,true);
           curl_setopt($con, CURLOPT_RETURNTRANSFER,true);
           curl_setopt($con, CURLOPT_TIMEOUT,(int)$timeout);
           return curl_exec($con);
          }

          上面代碼中除了設置CURLOPT_POSTFIELDS外,我們還設置了CURL_POST為true,標識這個請求是一個POST請求。在POST請求中也是可以傳輸GET數據的,只需要在URL中拼裝GET請求數據即可。

          領取方式:點贊關注小編后私信【資料】獲取資料領取方式!

          在使用 Apache JMeter 進行性能測試時,處理中文字符可能會遇到亂碼問題。這不僅影響測試結果的正確性,還會導致測試報告難以理解。本文將詳細介紹如何解決 JMeter 返回內容中的中文亂碼問題,從配置文件設置到編碼轉換,幫助測試工程師順利進行性能測試。

          常見的中文亂碼問題

          在 JMeter 中進行性能測試時,常見的中文亂碼問題通常出現在以下幾個方面:

          1. 請求參數的中文亂碼:發送的請求中包含中文參數時,服務器接收到的參數是亂碼。
          2. 響應數據的中文亂碼:服務器返回的響應數據中包含中文字符時,JMeter 顯示為亂碼。
          3. CSV 數據文件的中文亂碼:使用 CSV 數據文件進行參數化測試時,文件中的中文內容在 JMeter 中顯示為亂碼。

          解決方法

          1. 設置 JMeter 的編碼

          修改 JMeter 配置文件

          JMeter 的默認編碼是 ISO-8859-1,可以通過修改 jmeter.properties 配置文件來設置默認編碼為 UTF-8

          • 打開 JMeter 安裝目錄下的 bin 文件夾。
          • 找到并編輯 jmeter.properties 文件。
          • 找到以下配置項,并將其取消注釋(去掉前面的 #)并設置為 UTF-8
          bashsampleresult.default.encoding=UTF-8
          
          • 保存文件并重新啟動 JMeter。

          設置 HTTP 請求的編碼

          在每個 HTTP 請求中,可以通過設置參數來指定請求和響應的編碼。

          • 選擇一個 HTTP 請求采樣器。
          • 在 “參數” 部分,添加一個新的參數 Content-Encoding,值設置為 UTF-8。
          • 同樣,在 “響應數據” 部分,確保 “響應數據的文本編碼” 設置為 UTF-8。
          1. 配置請求參數的編碼

          當發送包含中文字符的請求參數時,需要確保參數的編碼設置正確。

          示例代碼

          yamlTest Plan
          └── Thread Group
              └── HTTP Request
                  ├── Server Name or IP: example.com
                  ├── Path: /api/test
                  ├── Parameters:
                  │   ├── name: 參數值
                  └── Content-Encoding: UTF-8
          
          1. 處理響應數據的編碼

          如果服務器返回的響應數據中包含中文字符,需要確保 JMeter 能夠正確解碼這些數據。

          使用后置處理器

          可以使用 BeanShell 后置處理器或 JSR223 后置處理器來處理響應數據的編碼。

          示例代碼(使用 JSR223 后置處理器)

          1. 在 HTTP 請求采樣器下添加一個 JSR223 后置處理器。
          2. 選擇語言為 groovy。
          3. 添加以下代碼,將響應數據的編碼轉換為 UTF-8
          bashprev.setDataEncoding("UTF-8")
          
          1. 處理 CSV 數據文件的編碼

          當使用 CSV 數據文件進行參數化測試時,確保文件的編碼格式為 UTF-8,并在 JMeter 中正確配置。

          保存 CSV 文件為 UTF-8 編碼

          在編輯 CSV 文件時,使用支持 UTF-8 編碼的文本編輯器(如 Notepad++、Sublime Text)保存文件。

          配置 CSV Data Set Config

          • 添加一個 CSV Data Set Config 元件。
          • 選擇 CSV 文件路徑。
          • 確保 “文件編碼” 字段設置為 UTF-8。
          1. 配置瀏覽器模擬的編碼

          在進行某些測試時,可能需要模擬特定瀏覽器的行為。通過設置 HTTP Header,可以模擬瀏覽器發送的請求編碼。

          示例代碼(使用 HTTP Header Manager)

          • 在 HTTP 請求采樣器下添加一個 HTTP Header Manager。
          • 添加以下頭信息:
          yamlHeader Name: Content-Type
          Header Value: application/x-www-form-urlencoded; charset=UTF-8
          

          實踐操作示例

          以下是一個完整的實踐操作示例,展示了如何在 JMeter 中解決返回內容的中文亂碼問題。

          環境搭建

          假設我們有一個測試環境,包含以下接口:

          • URL: http://example.com/api/test
          • 請求方法: POST
          • 請求參數: name,值為中文字符(如 “測試”)
          • 響應: JSON 格式,包含中文字段

          配置步驟

          1. 添加線程組:在測試計劃中添加一個線程組。
          2. 添加 HTTP 請求采樣器:配置請求的 URL、方法和參數,并設置 Content-EncodingUTF-8
          3. 添加 HTTP Header Manager:添加 Content-Type 頭信息,值設置為 application/x-www-form-urlencoded; charset=UTF-8。
          4. 添加 JSR223 后置處理器:設置響應數據的編碼為 UTF-8。

          JMeter 配置示例

          yamlTest Plan
          └── Thread Group
              └── HTTP Request
                  ├── Server Name or IP: example.com
                  ├── Path: /api/test
                  ├── Method: POST
                  ├── Parameters:
                  │   ├── name: 測試
                  ├── Content-Encoding: UTF-8
                  └── HTTP Header Manager
                      ├── Header Name: Content-Type
                      └── Header Value: application/x-www-form-urlencoded; charset=UTF-8
                  └── JSR223 PostProcessor
                      ├── Language: groovy
                      └── Script: prev.setDataEncoding("UTF-8")
          

          總結

          通過本文的學習,我們已經掌握了在 JMeter 中解決返回內容中文亂碼問題的各種方法。這些方法不僅能提高測試結果的準確性,還能提升測試報告的可讀性。

          題一、批處理調試控制臺顯示中文亂碼

          問題二、右鍵菜單項里的open with sublime text的Icon圖標缺失

          右鍵菜單項里的open with sublime text的Icon圖標缺失

          最近閑的,學習一下批處理命令,想起來sublime text輕量級便捷開啟迅速,于是重新安裝了最新版本的sublime text4-4169,卸載sublime text3,重新配置text 4。記錄一下使用過程的小坑。

          下載、安裝、配置、使用

          適用范圍:用于Windows 下Sublime Text4 4169版本的安裝和激活

          官網下載地址:https://www.sublimetext.com

          64位版本地址:

          https://download.sublimetext.com/sublime_text_build_4169_x64_setup.exe

          32位版本地址:

          https://download.sublimetext.com/sublime_text_build_4169_x32_setup.exe

          安裝:

          默認安裝,一直 下一步next 下一步 既可以。安裝后部分電腦有可能出現右鍵菜單項里的open with sublime text的Icon圖標缺失,可以在注冊表位置

          計算機\HKEY_CLASSES_ROOT\*\shell\Open with Sublime Text

          下面修改并添加 數值名稱:Icon,數值數據:C:\Program Files\Sublime Text\sublime_text.exe

          修改注冊表如圖,

          最終結果圖

          正常顯示圖


          激活:

          方法一:替換“C:\Program Files\Sublime Text”下文件sublime_text.exe。附下載替換文件下載地址:此處無法鏈接

          方法二:修改文件exe文件的值

          使用sublime text 打開安裝目錄下的sublime_text.exe文件。(自己打開自己,有點一意思吧,修改后另存為。。。)

          Ctrl + F 搜到到

          80 7805 000f

          94c1

          更改為

          c6 4005 0148

          85c9

          注意:80 7805 000f和94c1是在兩行,搜索可以直接替換

          簡單配置 1、軟件安裝中文語言包

          1、點擊菜單欄Tools—>Install Package Control 跳出彈框點擊 確定按鈕

          2、點擊菜單欄 Preferences – Package Control

          3、彈框中輸入 install package,選中 Package Control: Install Package 然后等待彈窗(可能需要耐心等待一段時間)

          4、等出現如下彈窗后, 在彈窗的搜索框中輸入 ChineseLocalizations , 點擊出現的選項

          5、等待一段時間,如果出現了如下畫面則漢化步驟全部完成

          6、后續若需要更改,可點擊菜單欄 幫助-–>Language 選擇進行更改。

          第一個細節:如果在使用Sublime Text過程中,如果不小心按下Esc鍵就會進入command mode(Vim模式),之后就出現不能輸入任何東西,關閉當前編輯文件重新打開可以解決。但是很影響連貫性,所以可以通過以下方法解決:

          Sublime Text使用過程中進入Vim模式,可以關閉vim模式:

          進入settings,加入:

          // 關閉Vim模式,防止Sublime Text使用過程中進入Vim模式

          "ignored_packages":

          [

          "Vintage"

          ],

          如果不想禁用Vim模式,又無意進入Vim模式可以進行以下操作退出Vim模式:

          按a鍵 或者i鍵 或者o鍵三個按鍵中任何一個就可以回到insert mode,也就是編輯模式

          當然還可以:在軟件菜單里找到設置,會彈出Json格式的文件,也就是Sublime Text的配置文件。

          對,是配置文件,不是圖形化界面。也是Sublime任性,設置頁堅決不用GUI顯示,只用配置文件。

          很簡單,找到User 配置(Preferences.sublime-settings)這個文件,然后將ignored_packages數組中的Vintage數值刪除即可,然后就變為Vim和Sublime模式通用了。如果再屏蔽vim模式,只要再將Vintage加回去該數組即可。

          下面是簡單應用場景:

          Sublime Text 4 運行批處理文件 .bat格式

          Sublime Text 4 編輯好 windows 批處理文件后,如果希望直接在 sublime 內部運行,并且看到運行結果,可以使用 sublime 提供的編譯系統(Build System)完成。

          首先,新建一個編譯系統

          Tools -> Build System -> New Build System..

          這時 Sublime 會幫你新創建一個叫 untitled.sublime-build 的文件,里面原來的內容是這樣:

          {

          "shell_cmd": "make"

          }

          替換為下面內容:

          {

          "cmd": ["cmd.exe", "/c", "${file}"]

          }

          或者簡單點也行:

          {"cmd": ["$file"]}

          保存文件,在彈出的路徑選擇框中,不需要選擇其他路徑,直接按默認路徑保存,一般來說是下面這樣的路徑:

          C:\Users[用戶名]\AppData\Roaming\Sublime Text 4\Packages\User

          保存的文件名則按照你希望的菜單里出現的樣子,比如名字叫做 DosRunBatch.sublime-build, 保存后,Build System 菜單里就會出現你剛剛創建的 DosRunBatch名字,選擇后,就能按鍵盤快捷鍵 Ctrl + B 直接運行 windows 批處理文件,效果如下:

          使用過程避坑:

          圖一:控制臺不能顯示中文或是部分中文顯示亂碼,具體表示:

          1. 使用ANSI編碼保存的bat文件在sublime text編輯界面會亂碼,控制臺顯示中文亂碼。
          1. 使用UTF8I編碼保存的bat文件在sublime text編輯界面正常,但控制臺顯示請按任意鍵繼續. . .字樣會亂碼。而文件中的中文echo回顯沒有問題,如圖:

          原因和解決辦法:

          1. Bat文件格式原始編碼為ANSI。在cmd窗口運行時候可以看到顯示是正常的。

          想要sublime text顯示正常的臨時解決辦法是:

          編譯系統文件增加一行代碼"encoding":"cp936".

          {

          "cmd": ["cmd.exe", "/c", "${file}"],

          "encoding":"cp936",

          }

          2、Bat文件格式原始編碼為UTF8。在cmd窗口運行時候就是中文亂碼,而在sublime text調試確是正常的()僅僅是cmd下(請按任意鍵繼續. . .)幾個字符亂碼。但是在cmd窗口調試echo回顯中文直接亂碼,如前面的圖片

          想要cmd窗口運行調試顯示正常的臨時解決辦法是:

          在批處理首行加上:chcp 65001,結果如圖:

          上面有點繞,總結就是原始文件保存格式為ANSI和UTF8會有區別。

          Cmd運行下ANSI編碼格式bat文件正常,UTF8編碼格式bat文件-亂碼

          Sublime text調試控制臺顯示ANSI編碼格式bat文件亂碼,UTF8編碼格式bat文件正常。

          解決辦法:

          一、Cmd運行下

          ANSI編碼格式bat文件正常無需處理。

          UTF8編碼格式bat文件-亂碼處理:bat文件首行添加chcp 65001。

          二、sublime text控制臺調試下

          ANSI編碼格式bat文件控制臺亂碼處理:

          編譯系統文件增加一行代碼"encoding":"cp936".

          {

          "cmd": ["cmd.exe", "/c", "${file}"],

          "encoding":"cp936",

          }

          UTF8編碼格式bat文件正常無需處理

          {

          "cmd": ["cmd.exe", "/c", "${file}"],

          // "encoding":"cp936", UTF8編碼格式bat文件的編譯系統切換為無encoding

          }

          附記sublime text4配置python:

          sublime text配置python的編譯系統和調試過程中中文顯示亂碼

          Build system構建系統的示例:同前面描述一樣構建系統是 JSON 文件 并具有擴展名python3.sublime-build

          {

          "cmd": ["e:/vevn/env/Scripts/python.exe","-u","$file"],

          "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",

          "selector": "source.python",

          "env":{"PYTHONIOENCODING": "utf8"}

          }

          示例的解釋:

          {

          "cmd": ["此處為python安裝程序的全路徑", "-u", "$file"],

          "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",

          "selector": "source.python",

          "env":{"PYTHONIOENCODING": "utf8"}此處解決顯示中文亂碼問題

          }

          以上親測有效---針對本機和本版本:


          主站蜘蛛池模板: 精品一区二区三区中文字幕| 波多野结衣一区视频在线| 毛片一区二区三区| 日韩在线一区二区三区视频| 亚洲成AV人片一区二区| 在线视频一区二区三区四区| 蜜桃臀无码内射一区二区三区| 亚洲AV日韩精品一区二区三区| 美女视频免费看一区二区| 亚洲sm另类一区二区三区| 亚洲天堂一区二区三区四区| 色老头在线一区二区三区| 一区二区在线观看视频| 国产成人久久精品一区二区三区| 久久国产香蕉一区精品| 国产精品一区二区久久精品无码| 精品理论片一区二区三区| 相泽南亚洲一区二区在线播放 | 亚无码乱人伦一区二区| 久久久老熟女一区二区三区| 亚洲福利视频一区二区三区| 3d动漫精品一区视频在线观看| 国产激情з∠视频一区二区| 亚洲天堂一区二区| 3d动漫精品啪啪一区二区免费| 国产日韩一区二区三区| 日本一区二三区好的精华液| 天美传媒一区二区三区| 蜜桃视频一区二区三区| 成人免费av一区二区三区| 国产成人无码AV一区二区| 日本一区二区不卡视频| 人妻无码一区二区三区AV| 91精品乱码一区二区三区| 精品无码国产AV一区二区三区 | 好爽毛片一区二区三区四 | 亚洲AV无码一区二区三区牲色| 亚洲av成人一区二区三区观看在线 | 成人国产精品一区二区网站| 大屁股熟女一区二区三区| 国产伦精品一区二区三区|