日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

cowboy源码分析

發布時間:2023/12/10 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 cowboy源码分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?2013-01-21 by 謝鴻鋒  

原創文章,轉載請注明:轉載自Erlang云中漫步?

目錄

=================================

一、概述

二、ranch源碼分析

三、cowboy源碼分析

?? 1、Request調度規則

?? 2、http協議實現分析

?? 3、http協議之chunked編碼

?? 4、http協議之long_polling

?? 5、http協議之websocket

?? 6、http協議之rest-api

=================================

?

cowboy 越來越讓人舒服了,改版之后的cowboy分為兩大application,將TCP拆分出來,成了ranch application,cowboy成了基于TCP(ranch)的一個cowboy_protocol(http實現)。不僅如此,cowboy還給出了rest-api、websocket、chunked、long-polling的支持,相當之完美!

?

一、概述

cowboy是一個小型、快速,模塊化,采用Erlang開發的HTTP服務器。

ranch 是一個socket acceptor pool,TCP協議類型。

?

cowboy的特點:

1.代碼少。
2.速度快。
3.模塊化程度高,transport和protocol都可輕易替換。
4.采用二進制語法實現http服務,更快更小。
5.極易嵌入其它應用。
6.有dispatcher,可以嵌入FastCGI PHP 或者是 Ruby.
7.沒有進程字典,代碼干凈。

?

總體來講cowboy的特點在于分層架構及模塊化設計,即把網絡層的套接字管理和應用層協議實現,以及對消息的處理,這三層幾乎完全解藕。

?

cowboy application詳細介紹見:https://github.com/extend/cowboy/

{application, cowboy, [

????? {id, "Cowboy"},

????? {description, "Small, fast, modular HTTP server."},

????? {sub_description, "Cowboy is also a socket acceptor pool, "

?????????? "able to accept connections for any kind of TCP protocol."},

????? {vsn, "0.7.0"},

????? {applications, [

?????????? kernel,

?????????? stdlib,

?????????? ranch,

?????????? crypto

????? ]},

????? {mod, {cowboy_app, []}},

?

ranch application詳細介紹見:https://github.com/extend/ranch/

{application, ranch, [

????? {id, "Ranch"},

????? {description, "Socket acceptor pool for TCP protocols."},

????? {sub_description, "Reusable library for building networked applications."},

????? {vsn, "0.6.0"},

????? {mod, {ranch_app, []}},

??

二、ranch源碼分析

?

1、看下效果

?

a) 啟動ranch應用 application:start(ranch).

?

b)啟動例子tcp_echo應用 application:start(tcp_echo).

?

c)客戶端連接測試

?

?

d)處理客戶端請求

?

e)客戶端斷開

?

?

下面對關鍵代碼執行軌跡進行分析

?

2、啟動ranch應用

> application:start(ranch).

?

代碼執行軌跡關注點見下面幾張圖紅線框住部分

?

??

?

?啟動了監督進程ranch_sup,以one_for_one方式監督啟動ranch_server工作進程

?

?

此時進程監督樹如下:

?

關注數據:etsranch_server,此時為空,

?????????????? ranch_server進程狀態數據state,此時為空,

下面跟蹤客戶端連接進來時,這兩個數據的變化情況。

?

3、啟動例子tcp_echo應用

> application:start(tcp_echo).

?代碼執行軌跡關注點見下面幾張圖紅線框住部分

?

?

?It will have a pool of 1 acceptors, use a TCP transport and forward connections to the “echo_protocol” handler.

?

?動態生成ranch_sup的子進程{ranch_listener_sup, Ref},類型為supervisor。Ref值為tcp_echo。

結束此進程可以調用ranch:stop_listener(tcp_echo)。ranch_sup在application:start(ranch)時已經產生。

?

各參數說明見其注釋:

Start a listener for the given transport and protocol.

A listener is effectively a pool of NbAcceptors acceptors. Acceptors accept connections on the given Transport and forward connections to the given Protocol handler. Both transport and protocol modules can be given options through the TransOpts and the ProtoOpts arguments. Available options are documented in the listen transport function and in the protocol module of your choice.

All acceptor and connection processes are supervised by the listener.

It is recommended to set a large enough number of acceptors to improve performance. The exact number depends of course on your hardware, on the protocol used and on the number of expected simultaneous connections.

The Transport option max_connections allows you to define the maximum number of simultaneous connections for this listener. It defaults to 1024. See ranch_listener for more details on limiting the number of connections.

Ref can be used to stop the listener later on.

This function will return {error, badarg}` if and only if the transport module given doesnt appear to be correct.

?

?

?

?此時進程狀態數據及ets表數據如下:

?

ranch_server進程monitor進程<0.41.0>、<0.44.0>。<0.41.0>為listener,<0.44.0>為acceptor。<0.42.0>為connections 管理者,客戶端連接進程由其以simple_one_for_one方式監控。此時客戶端連接數為0。

?

ets表及進程狀態數據生成跟蹤代碼軌跡:

?

?

至此,application(ranch)、application(tcp_echo)啟動完成,

進程監督樹產生/監督類型及關鍵代碼軌跡分析完畢。

進程狀態數據及ets表數據生成及關鍵代碼軌跡也已分析完畢。

?

下面跟蹤有客戶端連接時的情況。

?

?4、客戶端連接

?

?

?

接收到客戶端連接,從下面幾個方面進行分析

A、 生成ConnsSup子進程,controlling_process(CSocket, ConnPid)綁定接收的客戶端socket。

?

上圖<0.42.0>為ConnsSup,<0.78.0>為ConnPid

?

B、 ConnPid生成,代碼軌跡如下

?

?

C、 更新表ranch_server客戶端連接數

59行ranch_listener:add_connection(ListenerPid,ConnPid)更新客戶端連接數

?

?

D、 max_connections最大連接數處理:超過最大連接數將不再進行accept,輪詢檢測連接數,當小于最大連接數時,才開始accept接受客戶端的連接。

?

?5、處理客戶端請求

?

客戶端發的數據,服務器端收到后,原樣響應傳回給客戶端。

?

6、客戶端斷開。

?

?

到這里,ranch的源碼分析就完成了。

?

不足之處:acceptor接收客戶端連接,用了一個臨時的進程來中轉,中轉完畢此進程即銷毀。

?

上圖<0.79.0>即為臨時進程,其功能完全可以合并到<0.44.0>中來進行。何必“創建->中轉->銷毀”多此一舉呢?hotwheels的處理就是如此,干脆利落,堪稱優雅。hotwheels源碼分析見博主另外一篇原創文章: http://www.cnblogs.com/poti/archive/2012/11/06/hotwheels.html。

?

?三、cowboy源碼分析

?

cowboy application實現了http協議,給出了rest-api、websocket、chunked、long-polling的支持,相當完美。

?

1、Request調度規則

?

見cowboy_dispatcher:match(Dispatch, Host, Path)

?

-spec match(Dispatch::dispatch_rules(), Host::binary() | tokens(), Path::binary())

??? -> {ok, module(), any(), bindings(),

????? HostInfo::undefined | tokens(), PathInfo::undefined | tokens()}

??? | {error, notfound, host} | {error, notfound, path}

??? | {error, badrequest, path}.

?

-type tokens() :: [binary()].

-type match_rule() :: '_' | <<_:8>> | [binary() | '_' | '...' | atom()].

-type dispatch_path() :: [{match_rule(), module(), any()}].

-type dispatch_rule() :: {Host::match_rule(), Path::dispatch_path()}.

-type dispatch_rules() :: [dispatch_rule()].

??

示例說明:

match_test_() ->

??? Dispatch = [

?????? {[<<"www">>, '_', <<"ninenines">>, <<"eu">>], [

?????????? {[<<"users">>, '_', <<"mails">>], match_any_subdomain_users, []}

?????? ]},

?????? {[<<"ninenines">>, <<"eu">>], [

?????????? {[<<"users">>, id, <<"friends">>], match_extend_users_friends, []},

?????????? {'_', match_extend, []}

?????? ]},

?????? {[<<"ninenines">>, var], [

?????????? {[<<"threads">>, var], match_duplicate_vars,

????????????? [we, {expect, two}, var, here]}

?????? ]},

?????? {[<<"erlang">>, ext], [

?????????? {'_', match_erlang_ext, []}

?????? ]},

?????? {'_', [

?????????? {[<<"users">>, id, <<"friends">>], match_users_friends, []},

?????????? {'_', match_any, []}

?????? ]}

??? ],

??? %% {Host, Path, Result}

??? Tests = [

?????? {<<"any">>, <<"/">>, {ok, match_any, [], []}},

?????? {<<"www.any.ninenines.eu">>, <<"/users/42/mails">>,

?????????? {ok, match_any_subdomain_users, [], []}},

?????? {<<"www.ninenines.eu">>, <<"/users/42/mails">>,

?????????? {ok, match_any, [], []}},

?????? {<<"www.ninenines.eu">>, <<"/">>,

?????????? {ok, match_any, [], []}},

?????? {<<"www.any.ninenines.eu">>, <<"/not_users/42/mails">>,

?????????? {error, notfound, path}},

?????? {<<"ninenines.eu">>, <<"/">>,

?????????? {ok, match_extend, [], []}},

?????? {<<"ninenines.eu">>, <<"/users/42/friends">>,

?????????? {ok, match_extend_users_friends, [], [{id, <<"42">>}]}},

?????? {<<"erlang.fr">>, '_',

?????????? {ok, match_erlang_ext, [], [{ext, <<"fr">>}]}},

?????? {<<"any">>, <<"/users/444/friends">>,

?????????? {ok, match_users_friends, [], [{id, <<"444">>}]}},

?????? {<<"ninenines.fr">>, <<"/threads/987">>,

?????????? {ok, match_duplicate_vars, [we, {expect, two}, var, here],

????????????? [{var, <<"fr">>}, {var, <<"987">>}]}}

??? ],

??? [{lists:flatten(io_lib:format("~p, ~p", [H, P])), fun() ->

?????? {ok, Handler, Opts, Binds, undefined, undefined}

?????????? = match(Dispatch, H, P)

??? end} || {H, P, {ok, Handler, Opts, Binds}} <- Tests].

?

match_info_test_() ->

??? Dispatch = [

?????? {[<<"www">>, <<"ninenines">>, <<"eu">>], [

?????????? {[<<"pathinfo">>, <<"is">>, <<"next">>, '...'], match_path, []}

?????? ]},

?????? {['...', <<"ninenines">>, <<"eu">>], [

?????????? {'_', match_any, []}

?????? ]}

??? ],

??? Tests = [

?????? {<<"ninenines.eu">>, <<"/">>,

?????????? {ok, match_any, [], [], [], undefined}},

?????? {<<"bugs.ninenines.eu">>, <<"/">>,

?????????? {ok, match_any, [], [], [<<"bugs">>], undefined}},

?????? {<<"cowboy.bugs.ninenines.eu">>, <<"/">>,

?????????? {ok, match_any, [], [], [<<"cowboy">>, <<"bugs">>], undefined}},

?????? {<<"www.ninenines.eu">>, <<"/pathinfo/is/next">>,

?????????? {ok, match_path, [], [], undefined, []}},

?????? {<<"www.ninenines.eu">>, <<"/pathinfo/is/next/path_info">>,

?????????? {ok, match_path, [], [], undefined, [<<"path_info">>]}},

?????? {<<"www.ninenines.eu">>, <<"/pathinfo/is/next/foo/bar">>,

?????????? {ok, match_path, [], [], undefined, [<<"foo">>, <<"bar">>]}}

??? ],

??? [{lists:flatten(io_lib:format("~p, ~p", [H, P])), fun() ->

?????? R = match(Dispatch, H, P)

??? end} || {H, P, R} <- Tests].

?

2、http協議分析

?

http協議說明見:http://www.cnblogs.com/poti/articles/2851330.html

?

從http_SUITE: echo_body/1例子開始分析http協議解析。

?

命令行代碼執行:

1> Config = [{priv_dir,"D:/eclipse/workspace/cowboy/test/priv"}].

2> http_SUITE:init_per_suite(Config).

3> Client = http_SUITE:init_per_group(http, Config).

4> http_SUITE:echo_body(Client).

{ok,<<"aaa">>,

??? {client,request,[],#Port<0.1848>,ranch_tcp,5000,<<>>,

?? ?????????keepalive,

??????????? {1,1},

??????????? undefined}}

?

調度規則:

Dispatch =

??? [

??????? {[<<"localhost">>], [

??????????? {[<<"echo">>, <<"body">>], http_handler_echo_body, []},

??????? ]}

??? ]

?

測試代碼:

?

請求處理模塊

?

?以上代碼完成了下面功能:

A、客戶端http請求

?

B、服務器http響應

?

?

cowboy_protocol.erl代碼分析

?parse_method:解析method。 例子中是POST

parse_uri_path:解析path。?? /echo/body

parse_version:解析version。? HTTP/1.1

parse_uri_query:解析query,url中$?分割部分。 例子中為空。

parse_uri_fragment:解析fragment,url中$#分割部分。 例子中為空。

parse_header:解析header。

Headers = [{<<"connection">>,<<"close">>},

???????????? {<<"user-agent">>,<<"Cow">>},

???????????? {<<"host">>,<<"localhost:33080">>},

???????????? {<<"content-length">>,<<"3">>}]

parse_host:解析host。 { <<"localhost">>, 33080 }

request:開始處理request。

?

?

?cowboy_router.erl作用:根據Reqeust從Dispatch中找到handler模塊及handle_opts。

?

?

cowboy_handler.erl作用:執行handler模塊,帶上參數handler_opts。

?

接下來,看Handler:init/3、Handler:handle/2,這里Handler為http_handler_echo_body.erl。

?

init/3的結果HandlerState這里為undefined會傳給handle/2參數State。

到這里,客戶端http請求處理完畢,

?

服務器http響應完成后將根據request中connection字段的值進行相應處理。

如果connection=close則Transport:close(Socket)斷開連接;

如果connection=keep-alive則保持連接,處理下一個請求;如果超時未收到請求,則斷開連接。

?

3、http協議chunked編碼

?

chunked編碼是HTTP/1.1 RFC里定義的一種編碼方式,

協議說明見:http://www.cnblogs.com/poti/articles/2822159.html

?

從http_SUITE: chunked_response/1例子開始進行分析

?

客戶端http請求:

服務器http響應:

?

?

服務器http響應,分下面幾個數據包進行:

a)cowboy_req:chunked_reply(200, Req) -> chunked協議http頭部發送

?

關鍵代碼軌跡如下:

?

b)cowboy_req:chunk("chunked_handler\r\n", Req2) -> 第1個chunk數據包發送。

發送chunk數據包chunked_handler\r\n

?

關鍵代碼軌跡如下:

?

c)cowboy_req:chunk("works fine!", Req2) -> 第2個chunk數據包發送。

發送chunk數據包works fine!。分析同b),不贅述。

?

d)cowboy_req:ensure_response(#http_req{socket=Socket, transport=Transport,resp_state=chunks}, _) -> 最后一個chunk數據包發送。

發送last-chunk數據包<<"0\r\n\r\n">>

??

4、http協議long_polling

?

long-polling的服務,其客戶端是不做輪詢的,客戶端在發起一次請求后立即掛起,一直到服務器端有更新的時候,服務器才會主動推送信息到客戶端。?在服務器端有更新并推送信息過來之前這個周期內,客戶端不會有新的多余的請求發生,服務器端對此客戶端也啥都不用干,只保留最基本的連接信息,一旦服務器有更新將推送給客戶端,客戶端將相應的做出處理,處理完后再重新發起下一輪請求。

?

從http_SUITE: check_status/1例子開始進行分析

?

?

/long_polling 處理模塊為http_handler_long_polling

?

?定時器動作5次后給客戶端響應狀態碼102。下面分析下服務器代碼處理過程:

?

?erlang:send_after/3、erlang:start_timer/3說明見:http://www.cnblogs.com/poti/articles/2823209.html

?

cowboy_handler:handler_init/4執行后返回結果為

?

?

?

?

?erlang:hibernate/3用途:使當前進程進入休眠狀態,當有消息發送給進程時,激活進程調用Module:Function(Args)。

?這里Module為cowboy_protocol,Function為resume。

?這個例子中激活進程的消息從何而來?兩個地方:

?

激活進程后執行方法:cowboy_protocol:resume/6

?

這里Module為cowboy_handler,Function為handler_loop。接下來的代碼執行軌跡如下:

?

當前進程再次進入休眠狀態,這里Module為cowboy_handler,Function為handler_loop。

激活進程后執行方法:cowboy_handler: handler_loop

直到計數器為0

?

?以上就是cowboy中long-polling的處理過程。

?

小結一下此例子中cowboy的long-polling處理過程:

a)? 處理模塊init方法啟動一個定時器,同時返回結果: {loop, Req, state(), timeout(), hibernate}

b)? 當前進程進入休眠狀態

c)? 定時器發送消息,激活休眠的進程,回調處理模塊的方法info/3

d)? 如果服務器響應客戶端的條件符合,則服務器給客戶端響應結果,到這里,客戶端的長連接就處理完畢了

e)? 否則,info/3中重新啟動一個定時器,goto 到b)繼續執行。

?

cowboy中實現long-polling的三種方式:

?

init/3 -> {loop, Req, state(), hibernate}

當前進程不創建定時器,有休眠狀態。不限時的休眠方式長輪詢。

?

init/3 -> {loop, Req, state(), timeout()}

當前進程創建定時器,無休眠狀態。限時的無休眠方式長輪詢。

?

init/3 -> {loop, Req, state(), timeout(), hibernate}

當前進程創建定時器,有休眠狀態。限時且有休眠方式的長輪詢。

?

hibernate的作用:進程進入休眠狀態,消耗服務器資源最小化,直到有消息到達時被激活。

?

5、http協議websocket

?

5.1、websocket草案00協議 見:http://www.cnblogs.com/poti/articles/2828392.html

?

cowboy中websocket版本00的實現過程如下:

a)? 握手協議,建立websocket連接通道

客戶端發送消息:

?

請求中的“Sec-WebSocket-Key1”,“Sec-WebSocket-Key2”和最后的“8字節的Key3”都是隨機的,

服務器端會用這些數據來構造出一個16字節的應答。

其中:8字節的Key3為請求的內容,其它的都是http請求頭。

判斷當前請求是否WEBSOCKET,主要是通過請求頭中的Connection是不是等于Upgrade以及Upgrade是否等于WebSocket。

?

服務器響應消息:

?

把請求的第一個Key中的數字除以第一個Key的空白字符的數量,而第二個Key也是如此,然后把這兩個結果與請求最后的8字節字符串連接起來,然后進行MD5構造產生16字節的加密數據。

?

b)? 消息傳送

客戶端和服務端發送非握手文本消息,消息以0x00開頭,0xFF結尾。

?

c)? 連接斷開

客戶端發送<<0xFF, 0x00>>,服務器回復<<0xFF, 0x00>>。

?

下面對關鍵代碼進行分析

?

a 握手協議

a.1 客戶端發送:

?

?

?a.2 服務器處理:

處理模塊websocket_handler.erl:init/3返回結果

{upgrade, protocol, cowboy_websocket}.

?

?

?http請求頭部驗證:下圖紅線框住部分必須要有。

?

?

服務器給客戶端發送:

?

?

status(101) -> <<"101 Switching Protocols">>;切換協議。

?

a.3 客戶端收到后,如下處理:

?

101狀態檢查。http響應頭部驗證:下圖紅線框住部分必須要有。

?

?接著,客戶端往服務器發送一個隨機的8個字節的字符串給服務器。

?

?

a.4 服務器收到此數據,作為key3,與前面的

Sec-Websocket-Key1: Y\" 4 1Lj!957b8@0H756!i

Sec-Websocket-Key2: 1711 M;4\\74? 80<6

一起生成Challenge(16個字節的加密KEY),加密KEY算法:

Sec_WebSocket-Key1的產生方式:
(1)提取客戶端請求的Sec_WebSocket-Key1中的數字字符組成字符串k1
(2)轉換字符串k1為8個字節的長整型intKey1
(3)統計客戶端請求的Sec_WebSocket-Key1中的空格數k1Spaces
(4)intKey1/k1Spaces取整k1FinalNum
(5)將k1FinalNum轉換成字節數組再反轉最終形成4個字節的Sec_WebSocket-Key1

Sec_WebSocket-Key2的產生方式:
(1)提取客戶端請求的Sec_WebSocket-Key2中的數字字符組成字符串k2
(2)轉換字符串k2為8個字節的長整型intKey2
(3)統計客戶端請求的Sec_WebSocket-Key2中的空格數k2Spaces
(4)intKey2/k2Spaces取整k2FinalNum
(5)將k2FinalNum轉換成字節數組再反轉最終形成4個字節的Sec_WebSocket-Key2

Sec_WebSocket-Key3的產生方式:
客戶端握手請求的最后8個字節

將Sec_WebSocket-Key1、Sec_WebSocket-Key2、Sec_WebSocket-Key3合并成一個16字節數組
再進行MD5加密形成最終的16個字節的加密KEY

?

?

服務器生成Challenge后,發送給客戶端,

a.5 客戶端收到此消息后,握手協議到此就算完成。

?

b 握手協議完成后,進行消息的發送接收:

客戶端和服務端發送非握手文本消息,消息以0x00開頭,0xFF結尾。

服務器端:

?

客戶端:

?

?

c 斷開連接

客戶端發送<<0xFF, 0x00>>,服務器回復<<0xFF, 0x00>>。

客戶端:

?

服務器:

?

?

?

5.2、websocket草案10協議 見:http://www.cnblogs.com/poti/articles/2828378.html

?

cowboy中websocket版本7、8、13的實現過程:

a)? 握手協議,建立websocket連接通道

客戶端發送消息:

?

1)Sec-WebSocket-Key后面的長度為24的字符串是客戶端隨機生成的,我們暫時叫他cli_key,服務器必須用它經過一定的運算規則生成服務器端的key,暫時叫做ser_key,然后把ser_key發回去,ser_key后面會介紹;

2)把http頭中Upgrade的值由"WebSocket"修改為了"websocket";

3)把http頭中的"Origin"修改為了"Sec-WebSocket-Origin";

4)增加了http頭"Sec-WebSocket-Accept",用來返回原來草案00服務器返回給客戶端的握手驗證,原來是以body的形式返回,現在是放到了http頭中。

?

服務器響應消息:

?

服務器端制作秘鑰ser_key:

1)服務器端將cli_key(長度24)截取出來dGhlIHNhbXBsZSBub25jZQ==

用它和自定義的一個字符串(長度36):258EAFA5-E914-47DA-95CA-C5AB0DC85B11?連接起來,像這樣:dGhlIHNhbXBsZSBub25jZQ==258EAFA5-E914-47DA-95CA-C5AB0DC85B11

2)然后把這一長串經過SHA-1算法加密,得到長度為20字節的二進制數據,再將這些數據經過Base64編碼,最終得到服務端的密鑰,也就是ser_key:s3pPLMBiTxaQ9kYGzzhZRbK+xOo=

3)然后將ser_key發送給客戶端

?

至此,算是握手成功了!

?

b)? 消息傳送

?

消息格式:

?

各字段詳細說明見:http://www.cnblogs.com/poti/articles/2828378.html

cowboy中將按這個規則對數據進行編碼及解碼。下面對Opcode做個說明:

Opcode:4位操作碼,定義有效負載數據,以下是定義的操作碼:

?? ? ?* ?%x0 表示連續消息片斷
?? ? ?* ?%x1 表示文本消息片斷
?? ? ?* ?%x2 表未二進制消息片斷
?? ? ?* ?%x3-7 為將來的非控制消息片斷保留的操作碼
?? ? ?* ?%x8 表示連接關閉
?? ? ?* ?%x9 表示心跳檢查的ping
?? ? ?* ?%xA 表示心跳檢查的pong
?? ? ?* ?%xB-F 為將來的控制消息片斷的保留操作碼

?

c)? 心跳消息:

ok = gen_tcp:send(Socket, << 1:1, 0:3, 9:4, 0:8 >>), %% ping

{ok, << 1:1, 0:3, 10:4, 0:8 >>} = gen_tcp:recv(Socket, 0, 6000), %% pong

?

d)? 連接斷開

ok = gen_tcp:send(Socket, << 1:1, 0:3, 8:4, 0:8 >>), %% close

{ok, << 1:1, 0:3, 8:4, 0:8 >>} = gen_tcp:recv(Socket, 0, 6000),

?

?

?6、HTTP協議之rest-api

? ?  ?未完待續

轉載于:https://www.cnblogs.com/poti/archive/2013/01/21/2870302.html

總結

以上是生活随笔為你收集整理的cowboy源码分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

亚洲一级免费观看 | 久久伦理视频 | 精品国内自产拍在线观看视频 | 黄色一及电影 | 高清免费在线视频 | 黄网站www | 久久久久久久综合色一本 | 成人av视屏| 婷婷丁香激情五月 | 中文字幕在线免费观看视频 | 99热在线国产精品 | 三级动图 | 国产 欧美 在线 | 91视频高清免费 | 精品999| 亚洲精品视频免费看 | 久草在线免费看视频 | 狠狠的干 | 中文字幕在线观看视频一区 | 日韩av一区二区在线播放 | 免费午夜视频在线观看 | 色婷婷综合在线 | 国产99久久久国产精品成人免费 | 久久69精品久久久久久久电影好 | 成人cosplay福利网站 | 久久午夜网 | 国产成人久久精品 | 69性欧美| 成人黄色在线 | 国产一区二区高清视频 | 国产综合小视频 | 国产精品欧美一区二区三区不卡 | 欧美在线视频第一页 | 色婷婷在线播放 | 毛片www| 国产成人一区二区三区免费看 | 成人国产精品久久久久久亚洲 | 久久免费av电影 | 国产69精品久久99不卡的观看体验 | 91精品视频一区二区三区 | 中文字幕人成不卡一区 | 伊人黄 | 日韩免费一二三区 | 91av电影在线 | 日韩一级黄色片 | 日韩欧美精品一区二区三区经典 | 黄色国产在线 | 手机在线看永久av片免费 | 美女黄频在线观看 | 久久男人中文字幕资源站 | 草莓视频在线观看免费观看 | 亚洲国产成人在线观看 | 日韩av区| 色婷五月天 | 日韩网站在线播放 | 中文字幕一区三区 | 国产一及片| 国产成年免费视频 | 国产高清不卡一区二区三区 | 嫩草av影院 | 超碰97人 | 99精品视频一区二区 | 日韩精品视频久久 | 日韩中文字幕免费看 | h视频日本 | 中文字幕在线观看视频网站 | 大胆欧美gogo免费视频一二区 | 免费成人黄色 | 在线免费观看视频a | 日日夜夜精品免费观看 | 日韩激情视频在线 | 国产福利在线免费 | 91在线国内视频 | 欧美一二区在线 | 久艹在线播放 | 国产视频一区二区在线 | 97视频在线免费观看 | 久久综合九色综合97婷婷女人 | 国内视频在线观看 | av在线日韩 | 精品美女国产在线 | 一区免费观看 | 成人av免费在线 | 欧美另类高清 | 亚洲精品综合久久 | 婷婷综合激情 | 美女网站黄在线观看 | 国产精品一区二区三区视频免费 | 天天se天天cao天天干 | 日韩欧美网址 | 中文字幕黄色 | 视频在线观看入口黄最新永久免费国产 | 国产精品美女久久久久久 | 成人资源站 | 亚洲欧美精品一区 | 久久国产精品小视频 | 国产91aaa | 九九九视频在线 | 成人动漫视频在线 | 97精品国产97久久久久久春色 | 欧美日韩中 | 国产午夜三级一区二区三桃花影视 | 国产成人av电影在线观看 | 日本一区二区高清不卡 | 在线日本看片免费人成视久网 | 日韩精品一区二区三区电影 | 91精品国产成人www | 人人插人人看 | 一区二区三区av在线 | 久久久久国产a免费观看rela | 91高清免费看| 国产精品美女久久久 | 日韩久久电影 | 国产1级毛片 | 一区二区三区免费播放 | 国产成a人亚洲精v品在线观看 | 国产第一福利网 | 日韩精品一区二区在线观看 | 久久香蕉影视 | 中文在线字幕免费观看 | 日韩在线观看一区二区 | 97国产情侣爱久久免费观看 | 在线国产激情视频 | 四虎在线免费视频 | 国产高清在线精品 | 国产亚洲人成网站在线观看 | 久久91久久久久麻豆精品 | 激情 婷婷| 最近最新中文字幕 | 不卡电影一区二区三区 | 日韩精品三区四区 | 久久成人免费视频 | 成人av教育 | 国产在线一卡 | 在线日韩一区 | www黄| 国产原创av在线 | 国产美女视频免费观看的网站 | 久久久久久久久艹 | 成年人免费看av | av网址最新 | 国产成人精品三级 | 欧美成人一区二区 | 在线视频观看成人 | 亚洲国产经典视频 | 在线免费中文字幕 | 天天干天天操天天干 | 久久综合五月婷婷 | 成人网页在线免费观看 | 99视频免费看 | 三级黄色大片在线观看 | 狠狠操91| 国产日本三级 | 国产成人精品一区二 | 国产一及片 | 日本婷婷色| 午夜一级免费电影 | 日韩免费在线观看视频 | 亚洲欧美日韩一区二区三区在线观看 | 一区二区三区久久 | 日韩电影一区二区三区在线观看 | 久久国产精品影片 | 久久国内免费视频 | 欧美精品亚洲二区 | 99久久精品久久久久久动态片 | 五月婷婷一区 | 天天色天天干天天色 | 亚洲三级影院 | 久久国语露脸国产精品电影 | 狠狠干网站 | 免费高清男女打扑克视频 | 一本色道久久精品 | 亚洲精品欧洲精品 | 欧美日韩在线播放 | 日韩欧美视频在线播放 | 日日夜夜天天 | 性色av一区二区三区在线观看 | 中文字幕在线观看av | 国产欧美精品一区二区三区四区 | 国产精品成人自产拍在线观看 | 欧美激情视频一二区 | 久久久久激情电影 | 在线播放日韩 | 成人av播放 | 玖玖999 | 国产高清av免费在线观看 | 国产精品免费不 | 婷婷五月在线视频 | 久精品在线观看 | 中文字幕在线视频一区二区三区 | 久久久伦理| 久久天天躁狠狠躁夜夜不卡公司 | 国产精品视频免费在线观看 | 国产精品99久久久久久宅男 | 日韩国产精品久久久久久亚洲 | 中文字幕乱码亚洲精品一区 | 超碰在线人 | 久久高清av | 久久久久久久久久福利 | 国产亚洲久一区二区 | 最新国产精品亚洲 | 久久99精品国产99久久6尤 | 国产天天综合 | 日韩视频在线不卡 | 久久综合之合合综合久久 | 亚洲一区二区三区miaa149 | 久久免费视频精品 | 久久狠狠一本精品综合网 | 国产麻豆电影在线观看 | 午夜私人影院久久久久 | 97国产在线观看 | 亚洲国产69 | 精品国产一区二区三区久久久蜜月 | 久久久精品国产一区二区三区 | 欧美精品三级在线观看 | 婷婷色综| 天天操天天操天天操天天操天天操 | 中文字幕乱码电影 | 日韩午夜在线播放 | 色网站在线 | av日韩国产| 麻豆视频在线免费观看 | 狠狠色丁香婷综合久久 | 麻豆传媒在线免费看 | 97精品在线观看 | 欧美福利视频 | 国内精品久久久久影院日本资源 | 激情图片区 | 亚洲aaa级| 天天爽夜夜爽精品视频婷婷 | 午夜免费福利视频 | 天天综合网在线观看 | 国产精品成人一区二区三区吃奶 | 人人射人人 | 成年免费在线视频 | 精品一区二区三区四区在线 | 四虎影视av | 日韩中文在线观看 | 亚洲夜夜综合 | 日韩在线无 | 久久综合九色九九 | 国产另类av| 最近中文字幕高清字幕免费mv | 99成人免费视频 | 国产精品久久久久久久久岛 | av一区二区三区在线观看 | 中文字幕影片免费在线观看 | 国产黄色播放 | 99在线精品观看 | 国产一区二区久久 | 精品99免费视频 | 成人av影视 | 成人黄色一级视频 | 激情久久五月天 | 伊人国产在线播放 | 日韩精品中文字幕在线观看 | 亚洲伦理一区二区 | 久久伊人免费视频 | 麻豆视频免费在线播放 | 午夜精品久久久久久久久久久 | 一区二三国产 | 午夜久久网| 99精品欧美一区二区三区 | 最新中文字幕在线资源 | 久久艹久久 | 91最新网址 | 99免费视频 | 91精品一区二区三区蜜臀 | 国产色拍| 9色在线视频| 成人午夜在线电影 | 精品女同一区二区三区在线观看 | 91成人在线免费观看 | 91看片成人 | 91久久久久久久一区二区 | av网站大全免费 | 久久综合网色—综合色88 | 精品亚洲免费 | 国产成人黄色网址 | 色多多视频在线 | 日本一区二区高清不卡 | 水蜜桃亚洲一二三四在线 | 久久精品视 | 香蕉免费| 99热.com| 激情五月婷婷激情 | 亚洲精品国偷拍自产在线观看 | 色偷偷av男人天堂 | 综合色亚洲 | 中文字幕日韩国产 | 99精品国产99久久久久久福利 | 国产精品永久久久久久久www | 久久99深爱久久99精品 | 91视频免费观看 | 久久少妇免费视频 | 国内精品久久久久久 | v片在线播放 | 欧美亚洲成人免费 | 99精品免费久久久久久久久 | 久久视频国产精品免费视频在线 | 久久精美视频 | 少妇性bbb搡bbb爽爽爽欧美 | 中文字幕91| 狠狠狠的干| 国产成人精品av在线观 | 午夜av免费观看 | 亚洲精品美女在线 | 久草在线视频首页 | 久草在线免费资源 | 久久国产福利 | 中文字幕av免费观看 | 色偷偷av男人天堂 | 亚洲精品视频播放 | 国产精品久久久久久久久久久久久久 | 视频在线观看国产 | 91视视频在线直接观看在线看网页在线看 | 欧美视频18 | www.亚洲在线 | 国产裸体视频网站 | 国产在线中文 | 国产精品久久久久久久免费大片 | 日韩二区在线播放 | 国产在线观看91 | 日本中文字幕观看 | 中文字幕第一页av | 69绿帽绿奴3pvideos | 1000部国产精品成人观看 | 国产色在线观看 | 人人艹人人 | 亚洲欧美激情精品一区二区 | 一区二区 精品 | 久操视频在线 | 国产黄在线观看 | 五月婷久久 | 日韩在线观看视频中文字幕 | 97免费视频在线播放 | 99久久网站| 国产精品av在线免费观看 | 久久久久国产精品www | 亚洲激情av | 色综合狠狠干 | 欧美 日韩 国产 中文字幕 | 国产一级做a | 欧美视频不卡 | 韩国av免费 | 国产成人精品av | 在线观看你懂的网站 | 五月亚洲婷婷 | 亚洲精品在线视频观看 | 午夜精品一区二区三区在线 | 亚洲欧美日韩中文在线 | 日韩精品不卡 | 97视频在线免费 | www.xxxx变态.com| 欧美日韩三级在线观看 | 99精品国产99久久久久久福利 | 麻豆 91 在线| 黄色a大片 | 日本激情视频中文字幕 | 六月婷色 | 国产综合久久 | 久久免费电影 | www天天干com | 激情综合色图 | 人人玩人人弄 | 91少妇精拍在线播放 | 三级免费黄色 | 青青河边草免费 | 久久久久久综合网天天 | 99热播精品| 四虎国产免费 | av免费观看网址 | 最近最新最好看中文视频 | www.国产在线观看 | 正在播放国产一区二区 | 一区二区三区精品久久久 | 999成人免费视频 | 亚洲人在线视频 | 久色免费视频 | 久久永久免费视频 | 成人a视频片观看免费 | 亚洲天堂在线观看完整版 | 国产又粗又猛又爽又黄的视频先 | 中文成人字幕 | 亚洲免费精品一区二区 | 91精品91| 免费看的国产视频网站 | 日本中文在线观看 | 天天干,天天射,天天操,天天摸 | 日韩欧美99 | 中文字幕av在线 | 免费视频网| 成人va天堂| 日本中文字幕免费观看 | 色婷婷av一区 | 精品在线视频播放 | 国产黄色电影 | 草 免费视频| 天天干夜夜爱 | 91九色在线视频 | 亚洲精品字幕在线观看 | av成人动漫| 九色91在线 | 91激情在线视频 | 波多野结衣一区 | av电影中文字幕在线观看 | 国内精品久久久久影院男同志 | 国产午夜精品免费一区二区三区视频 | 91视频麻豆视频 | 国产九色在线播放九色 | 中文字幕免 | 天天操夜夜爱 | 激情av在线资源 | 美女黄频视频大全 | 美女福利视频一区二区 | 久久只精品99品免费久23小说 | 亚洲精品黄色 | 91免费观看视频网站 | 久久a v视频 | 日韩高清在线一区二区 | 成年人网站免费在线观看 | 国产精品久免费的黄网站 | 丁香婷婷激情啪啪 | 国产黄色在线观看 | 欧美性色19p| 国内精品久久久久久久久久久久 | 久久的色 | 91中文字幕在线视频 | 999久久久免费精品国产 | 97av视频| 黄毛片在线观看 | www狠狠 | 岛国av在线 | 色av网站 | 狠狠插狠狠操 | 日韩视频免费 | 一区二区三区免费在线播放 | 久草在线最新免费 | 婷婷五月在线视频 | 国产午夜精品一区 | 国产高清福利在线 | 久久国语露脸国产精品电影 | 国产手机视频精品 | 日本不卡123 | 成人小视频在线观看免费 | 毛片在线网 | 日本激情中文字幕 | 91欧美国产 | 中文字幕在线观看免费 | 亚洲精品乱码久久久久久久久久 | 人人精品| 亚洲高清视频在线 | 在线黄网站 | 在线观看免费版高清版 | 99精彩视频在线观看免费 | 国产精品一区二区av影院萌芽 | 2019久久精品| 久久久国产99久久国产一 | 日本精品一区二区在线观看 | 人人超碰人人 | 99久久99久久免费精品蜜臀 | av在线播放不卡 | 欧美不卡在线 | 国产精品6 | 国产一区二区在线播放 | 激情五月在线视频 | 丁香九月激情综合 | 亚洲开心激情 | 日日干夜夜干 | 97福利在线 | 99在线观看视频网站 | 日韩精品在线免费观看 | 免费看短 | 337p日本大胆噜噜噜噜 | 麻豆国产精品永久免费视频 | 国产一区二区精品久久 | 久久99久久99精品 | 免费观看一区二区 | 天天色视频 | 五月激情在线 | 日韩天堂在线观看 | 婷婷丁香社区 | 国产精品一区二区久久精品爱微奶 | 婷婷夜夜| 夜夜夜夜猛噜噜噜噜噜初音未来 | 片黄色毛片黄色毛片 | 国产18精品乱码免费看 | 高清不卡毛片 | 99久久精品一区二区成人 | 丁香六月五月婷婷 | 亚洲 综合 国产 精品 | av看片网| 久久五月天婷婷 | 国产一区二区久久 | www久久com| 国产在线观看不卡 | 92国产精品久久久久首页 | 亚洲精区二区三区四区麻豆 | 美女黄频网站 | 91久久久久久久一区二区 | 激情综合五月 | 国产精品理论片在线播放 | 91色九色 | 久久99视频免费观看 | 亚洲视频在线观看网站 | 欧美激情综合色 | 精品国产伦一区二区三区免费 | 色爽网站 | 午夜性福利| 日韩com| 久久精品视频网址 | 人人爽影院 | 夜夜躁日日躁狠狠久久av | 91福利在线导航 | 深夜免费网站 | 国产女v资源在线观看 | 91桃花视频 | 日韩网站中文字幕 | 91亚洲精品久久久久图片蜜桃 | 99热最新在线 | 超碰公开在线 | av免费电影在线 | www视频在线观看 | 伊人色播 | 亚洲小视频在线 | 一本一本久久a久久精品牛牛影视 | 久久99国产精品视频 | 久久精品99国产精品 | 日韩精品三区四区 | 精品人人爽 | 久久久国产精华液 | 狠狠色噜噜狠狠狠狠2022 | 欧美aa一级片 | 91精品在线麻豆 | 丁香网婷婷 | 丁香九月激情 | 中文字幕在线日 | 91高清免费在线观看 | 亚洲女人天堂成人av在线 | 免费看黄色小说的网站 | 亚洲精品18日本一区app | www五月天com | 成人av在线一区二区 | 天天狠狠干 | 国产123区在线观看 国产精品麻豆91 | 精品免费一区 | 国内久久 | 国产亚洲精品女人久久久久久 | 国产aa免费视频 | 国产成人亚洲在线观看 | 激情五月六月婷婷 | 国产精品久久一卡二卡 | 2024国产精品视频 | 国产精品久久久久久久久久久久午夜 | 日日夜夜骑 | 久久久久久久久久久久电影 | 国产免费成人 | 国产精品久久久久久欧美 | 激情五月***国产精品 | 美女网站免费福利视频 | 欧美精品久久久久久 | 91在线porny国产在线看 | 成片视频在线观看 | 最新av网址在线观看 | 激情五月五月婷婷 | 久久精品美女视频网站 | 日本久久电影网 | 国产一级免费av | 天天操,夜夜操 | 少妇资源站 | 久草视频在线新免费 | 日韩h在线观看 | 免费在线观看日韩视频 | 丁香网五月天 | 亚洲午夜不卡 | 天堂av在线7 | 久久视奸| 国产美女视频免费观看的网站 | 久草香蕉在线 | 激情综合亚洲精品 | 国产美女免费观看 | 中文字幕有码在线观看 | 婷婷丁香色| 国内精品久久久久影院优 | 九九九热精品免费视频观看 | 玖玖在线资源 | 波多野结衣一区二区 | 免费网站看av片 | 日韩性色| 精品人人人 | 亚洲综合视频在线观看 | 久久久不卡影院 | 国产 视频 高清 免费 | 天天操人人要 | 亚洲精品播放 | 成人av av在线 | 成人资源网| 在线看中文字幕 | 国产一级一级国产 | 成人免费在线视频观看 | 久草在线免费新视频 | av网站在线免费观看 | 五月天综合婷婷 | 日本久久片 | 久久五月天婷婷 | 在线观看91视频 | 欧美一级片免费播放 | 久久精品欧美一 | 亚洲一级国产 | 国产日韩精品一区二区三区在线 | 日韩婷婷| 99热这里是精品 | 国产精品久久久久9999吃药 | 伊人色综合久久天天网 | www夜夜操 | 在线观看色网站 | 国产精品毛片久久久久久 | 日韩av在线免费播放 | 5月丁香婷婷综合 | 在线一二三四区 | 国产精品一区在线观看你懂的 | 成人一区二区在线观看 | 性色av一区二区三区在线观看 | 黄p在线播放 | 91日韩在线播放 | 美女性爽视频国产免费app | 波多野结衣亚洲一区二区 | 久久av免费| 2019av在线视频| 91精品国产成人 | 久久艹艹| 一区视频在线 | 国产亚洲资源 | 国产综合片 | 五月婷婷香蕉 | 亚洲五月综合 | 国产成人av综合色 | 91久久偷偷做嫩草影院 | 中文字幕激情 | 玖玖爱在线观看 | 九九视频在线观看视频6 | 亚洲精品久久久久999中文字幕 | 免费成人在线观看视频 | 91在线91| 久久精品男人的天堂 | 国产成人精品午夜在线播放 | 国产精品入口麻豆www | 国产精品3 | 国内精品久久久久国产 | 日韩黄色在线电影 | 久草视频中文在线 | 99视频精品免费视频 | 国产午夜精品久久久久久久久久 | 国内精品在线观看视频 | 一区二区三区免费在线观看 | 最近中文字幕完整视频高清1 | 欧美日韩在线播放 | 一区av在线播放 | 一本—道久久a久久精品蜜桃 | 高清一区二区三区av | 亚洲二区精品 | 玖玖在线播放 | 日本久久久久久久久久久 | 六月丁香综合网 | 亚洲国产中文字幕 | 99免费在线播放99久久免费 | 国产精品成人免费一区久久羞羞 | 国产精品观看在线亚洲人成网 | 黄色tv视频 | 久久男人视频 | 五月婷婷婷婷婷 | 天天搞天天 | 国产精品日韩在线播放 | 日韩欧美99| 最新国产精品久久精品 | 日韩电影一区二区在线 | 91看片淫黄大片在线播放 | 黄网在线免费观看 | 91看片淫黄大片在线播放 | 超碰免费在线公开 | 国产日韩欧美网站 | 五月婷在线视频 | 玖玖爱国产在线 | va视频在线 | 一区二区三区影院 | 久久99精品国产91久久来源 | 久久精品久久国产 | 国产日产av | 国产亚洲一级高清 | 四虎国产精品免费观看视频优播 | 69精品人人人人 | 欧美精品一区二区免费 | av在线日韩 | 色婷婷成人网 | 久久伊人国产精品 | 首页国产精品 | 国产第一页在线播放 | 美州a亚洲一视本频v色道 | 一级黄色毛片 | 天天操天天操天天操天天操 | 精品国产电影一区 | 国产精品资源在线 | 亚洲午夜久久久久久久久电影网 | 欧美一级欧美一级 | 成年人视频在线观看免费 | 丰满少妇久久久 | 天天操天天摸天天射 | 91av视频免费在线观看 | 日本久久综合视频 | 狠狠狠色丁香综合久久天下网 | 日韩aⅴ视频 | 天天色.com | 欧美亚洲成人免费 | 国产成人精品国内自产拍免费看 | 日韩成人xxxx | 国产高清无av久久 | 国产福利资源 | 国产高清无线码2021 | 久久成人黄色 | 国产精品二区在线观看 | 在线成人av | 奇米影音四色 | 69精品久久 | 国产乱码精品一区二区三区介绍 | 91夫妻视频 | 日本久久久亚洲精品 | 亚洲欧美日本A∨在线观看 青青河边草观看完整版高清 | 久久久免费毛片 | 91色一区二区三区 | 东方av免费在线观看 | 99久久久久国产精品免费 | 色综合激情网 | 一级性视频 | 日本中文字幕在线看 | av在线播放不卡 | 国产精品毛片完整版 | 国产丝袜在线 | a在线观看免费视频 | 天天色天天射天天干 | 婷婷六月天丁香 | 久久久亚洲国产精品麻豆综合天堂 | 日日夜夜网 | 经典三级一区 | 欧美在线一级片 | 在线国产一区 | 九九三级毛片 | 日日干天天爽 | 亚洲一级理论片 | 91日韩精品一区 | 国产系列 在线观看 | 播五月婷婷 | 亚洲精品中文字幕视频 | 日日夜夜精品视频天天综合网 | 久久久三级视频 | 免费看一级 | 丁香久久五月 | 国产黄色片一级三级 | 国产日本高清 | 国产色视频一区二区三区qq号 | 97免费在线观看视频 | 91成版人在线观看入口 | 亚洲欧美成人网 | 精品国产乱码 | 国产视频 亚洲视频 | 国产精品黑丝在线观看 | 国产手机在线播放 | 日韩av一区在线观看 | 制服丝袜在线 | 精品在线一区二区 | 成年人国产在线观看 | 91正在播放 | 国产精品视频app | www.xxxx变态.com| 国产黄色一级片 | 国产91精品一区二区麻豆网站 | 最新色视频 | 欧美性精品 | 在线播放 亚洲 | 精品一二三四五区 | 亚洲电影一区二区 | 精品产品国产在线不卡 | 国产一区二区三区免费在线 | 97人人艹| 东方av免费在线观看 | 中文字幕久久网 | 亚洲国产成人在线播放 | 欧美一级性生活片 | 日韩草比 | 中文av日韩 | 国产成人精品三级 | 91丨九色丨蝌蚪丨老版 | 日韩精品一区二区三区丰满 | 伊人久操 | 中文伊人| 久久久久久久18 | 成年人免费看片网站 | 亚洲无吗视频在线 | 日日操天天射 | 日韩欧美区 | 中文字幕 婷婷 | 国产精品原创在线 | 五月开心婷婷 | 国产一区免费在线观看 | 久草网在线观看 | 成年人在线观看网站 | 国产手机视频精品 | 日韩xxxbbb| 99久在线精品99re8热视频 | 国产午夜三级一二三区 | 亚洲国产精品成人女人久久 | 在线亚洲观看 | 日本精品久久久久 | 天天操天天色天天射 | 九九免费在线观看 | 五月婷在线播放 | 亚洲高清精品在线 | 99久久超碰中文字幕伊人 | 操操操操网 | 国产女v资源在线观看 | 97成人精品区在线播放 | 国产在线观看av | 国产私拍在线 | 久久国产精彩视频 | 一区二区三区免费播放 | 五月开心六月婷婷 | 国产亚州精品视频 | 国产最新在线视频 | 99精品福利 | 日韩国产精品久久 | av免费在线观看1 | 天天碰天天操视频 | 亚洲精品456在线播放第一页 | 黄www在线观看 | 日韩黄色大片在线观看 | 亚洲电影院| 91av在线免费播放 | 亚洲婷久久 | 欧美日韩视频在线观看一区二区 | www.国产毛片 | 亚洲污视频 | 国产91大片 | 国产综合精品久久 | 天天爱天天操天天干 | 99性视频| 麻豆精品在线视频 | 成人黄色影片在线 | 国产精品第一 | 91亚洲精品久久久蜜桃 | 91中文字幕视频 | 久久视频在线视频 | 永久黄网站色视频免费观看w | av黄网站 | 97人人模人人爽人人喊网 | 麻豆视频观看 | 久久久免费在线观看 | 最新婷婷色 | 一区二区三区免费在线 | 一级黄色免费网站 | 国产中文字幕在线免费观看 | 黄色av网站在线观看免费 | 欧美综合久久久 | 久久av在线播放 | 婷婷色av| 韩国一区二区av | 啪啪免费观看网站 | 人人澡人人爽欧一区 | 精品国内自产拍在线观看视频 | 久久精品精品 | 18做爰免费视频网站 | 日本激情中文字幕 | 美女网站久久 | 在线观看日韩精品视频 | 国产精品久久久久久999 | 国产一级视频在线 | 国产色在线 | 国际精品网 | 免费国产在线观看 | 久久久久亚洲精品成人网小说 | 午夜国产福利在线观看 | 久久深夜福利免费观看 | 人人爱爱| 免费在线观看成人小视频 | 久久免费视频2 | 日韩免费二区 | 国产精品久久久久久久久大全 | 888av| 97国产大学生情侣酒店的特点 | 欧美a视频在线观看 | 一区二区三区韩国免费中文网站 | 欧美成人中文字幕 | 久久精品欧美视频 | 国产成人精品综合久久久久99 | 欧美精品久久久久久久久免 | 久久国产精品精品国产色婷婷 | 亚洲国产日韩精品 | 视频国产区| 91精品在线免费 | 国产又粗又猛又黄又爽视频 | 麻豆你懂的 | 免费污片 | 在线影院中文字幕 | 深爱激情开心 | 精品国产乱码久久久久久1区2匹 | av大全在线看 | 国产精品一区二区免费视频 | 一本一道久久a久久精品蜜桃 | 免费污片 | 免费观看一级成人毛片 | 婷婷资源站 | 99视频在线免费观看 | 草久久影院 | 亚洲男男gaygayxxxgv | 久久综合九色综合97婷婷女人 | 国产色资源 | 91精品国产91 | 九九色综合 | 岛国av在线 | 免费亚洲电影 | 97超碰人人澡人人爱 | 午夜精品在线看 | 久久小视频 | 成人福利av| 狠狠伊人 | 国产精品成人免费 | 国产精品福利无圣光在线一区 | 色片网站在线观看 | 国产高清黄色 | 欧美另类色图 | 色婷婷丁香 | 看av免费网站 | 国产精品久久久久久久久久久杏吧 | 亚洲精品久久在线 | 天天射天天操天天色 | 国产在线理论片 | 久久久久久伊人 | 亚洲欧美日韩一区二区三区在线观看 | 欧美日韩精品综合 | a在线免费 | 婷婷六月综合亚洲 | 99精品久久久久 | 欧美日韩高清在线 | 欧洲精品一区二区 | 探花视频免费在线观看 | 韩国av电影网 | 91在线精品播放 | 在线电影 一区 | 久草视频免费看 | 综合色伊人 | 伊人电影天堂 | 亚洲美女在线国产 | 国产精品大尺度 | 日韩高清国产精品 | 九九精品毛片 | 91传媒在线播放 | 国产打女人屁股调教97 | 久草精品电影 | 在线欧美中文字幕 | 中文字幕最新精品 | 免费观看www7722午夜电影 | 在线日韩av | 一区中文字幕在线观看 | 91高清完整版在线观看 | 亚洲人成免费 | 国产精品乱码高清在线看 | 不卡精品| 国产精品无av码在线观看 | 欧美性大战久久久久 | 国产亚洲人 | 久久久久一区 | 天天综合网天天综合色 | 国产成人一区二区在线观看 | 国产午夜精品福利视频 | 黄色成人免费电影 | 国产私拍在线 | 午夜天使 | 久久婷婷色综合 | 日韩一区精品 | 色综合久久悠悠 | 久久成人久久 | 婷婷在线观看视频 | 丁香婷婷综合网 | 在线成人欧美 | 天天干夜夜夜操天 | 久久精久久精 | 美女啪啪图片 | 久久九九久久 | 亚洲精品综合在线 | 中文字幕免费高 | 色婷婷激情 | 国产一二三精品 | 在线观看mv的中文字幕网站 | 成人国产精品免费观看 | 天堂在线一区二区 | 日日爽日日操 | 黄www在线观看 | 玖玖精品视频 | 国产91影视 | 亚洲专区免费观看 |