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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

.NET Core Session源码探究

發(fā)布時間:2023/11/22 综合教程 36 生活家
生活随笔 收集整理的這篇文章主要介紹了 .NET Core Session源码探究 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  前言

  隨著互聯網的興起,技術的整體架構設計思路有了質的提升,曾經 Web 開發(fā)必不可少的內置對象 Session 已經被慢慢的遺棄。主要原因有兩點,一是 Session 依賴 Cookie 存放 SessionID,即使不通過 Cookie 傳遞,也要依賴在請求參數或路徑上攜帶 Session 標識,對于目前前后端分離項目來說操作起來限制很大,比如跨域問題。二是 Session 數據跨服務器同步問題,現在基本上項目都使用負載均衡技術,Session 同步存在一定的弊端,雖然可以借助 Redis 或者其他存儲系統(tǒng)實現中心化存儲,但是略顯雞肋。雖然存在一定的弊端,但是在 .NET Core 也并沒有拋棄它,而且結合了更好的實現方式提升了設計思路。接下來我們通過分析源碼的方式,大致了解下新的工作方式。

  Session 如何使用

  .NET Core 的 Session 使用方式和傳統(tǒng)的使用方式有很大的差別,首先它依賴存儲系統(tǒng) IDistributedCache 來存儲數據,其次它依賴 SessionMiddleware 為每一次請求提供具體的實例。所以使用 Session 之前需要配置一些操作,詳細介紹可參閱微軟官方文檔會話狀態(tài)。大致配置流程,如下:

public class Startup
{
    public Startup (IConfiguration configuration)
    {
        Configuration = configuration;
    }
    public IConfiguration Configuration { get; }

    public void ConfigureServices (IServiceCollection services)
    {
        services.AddDistributedMemoryCache ();
        services.AddSession (options =>
        {
            options.IdleTimeout = TimeSpan.FromSeconds (10);
            options.Cookie.HttpOnly = true;
            options.Cookie.IsEssential = true;
        });
    }

    public void Configure (IApplicationBuilder app, IWebHostEnvironment env)
    {
        app.UseSession ();
    }
}

  Session 注入代碼分析

  注冊的地方設計到了兩個擴展方法 AddDistributedMemoryCache 和 AddSession. 其中 AddDistributedMemoryCache 這是借助 IDistributedCache 為 Session 數據提供存儲,AddSession 是 Session 實現的核心的注冊操作。

  IDistributedCache 提供存儲

  上面的示例中示例中使用的是基于本地內存存儲的方式,也可以使用 IDistributedCache 針對 Redis 和數據庫存儲的擴展方法。實現也非常簡單就是給 IDistributedCache 注冊存儲操作實例:

public static IServiceCollection AddDistributedMemoryCache (this IServiceCollection services)
{
    if (services == null)
    {
        throw new ArgumentNullException (nameof (services));
    }
    services.AddOptions ();
    services.TryAdd (ServiceDescriptor.Singleton<IDistributedCache, MemoryDistributedCache>());
    return services;
}

  關于 IDistributedCache 的其他使用方式請參閱官方文檔的分布式緩存篇,關于分布式緩存源碼實現可以通過 Cache 的 Github 地址自行查閱。

  AddSession 核心操作

  AddSession 是 Session 實現的核心的注冊操作,具體實現代碼來自擴展類 SessionServiceCollectionExtensions,AddSession 擴展方法大致實現如下:

public static IServiceCollection AddSession (this IServiceCollection services)
{
    if (services == null)
    {
        throw new ArgumentNullException (nameof (services));
    }
    services.TryAddTransient<ISessionStore, DistributedSessionStore>();
    services.AddDataProtection ();
    return services;
}

  這個方法就做了兩件事,一個是注冊了 Session 的具體操作,另一個是添加了數據保護保護條例支持。和 Session 真正相關的其實只有 ISessionStore,話不多說,繼續(xù)向下看 DistributedSessionStore 實現

public class DistributedSessionStore : ISessionStore
{
    private readonly IDistributedCache _cache;
    private readonly ILoggerFactory _loggerFactory;

    public DistributedSessionStore (IDistributedCache cache, ILoggerFactory loggerFactory)
    {
        if (cache == null)
        {
            throw new ArgumentNullException (nameof (cache));
        }
        if (loggerFactory == null)
        {
            throw new ArgumentNullException (nameof (loggerFactory));
        }
        _cache = cache;
        _loggerFactory = loggerFactory;
    }
    public ISession Create (string sessionKey, TimeSpan idleTimeout, TimeSpan ioTimeout, Func<bool> tryEstablishSession, bool isNewSessionKey)
    {
        if (string.IsNullOrEmpty (sessionKey))
        {
            throw new ArgumentException (Resources.ArgumentCannotBeNullOrEmpty, nameof (sessionKey));
        }
        if (tryEstablishSession == null)
        {
            throw new ArgumentNullException (nameof (tryEstablishSession));
        }
        return new DistributedSession (_cache, sessionKey, idleTimeout, ioTimeout, tryEstablishSession, _loggerFactory, isNewSessionKey);
    }
}

  這里的實現也非常簡單就是創(chuàng)建 Session 實例 DistributedSession,在這里我們就可以看出創(chuàng)建 Session 是依賴 IDistributedCache 的,這里的 sessionKey 其實是 SessionID,當前會話唯一標識。繼續(xù)向下找到 DistributedSession 實現,這里的代碼比較多,因為這是封裝 Session 操作的實現類。老規(guī)矩先找到我們最容易下手的 Get 方法:

public bool TryGetValue (string key, out byte[] value)
{
    Load ();
    return _store.TryGetValue (new EncodedKey (key), out value);
}

  我們看到調用 TryGetValue 之前先調用了 Load 方法,這是內部的私有方法

private void Load ()
{
    //判斷當前會話中有沒有加載過數據
    if (!_loaded)
    {
        try
        {
            //根據會話唯一標識在 IDistributedCache 中獲取數據
            var data = _cache.Get (_sessionKey);
            if (data != null)
            {
                //由于存儲的是按照特定的規(guī)則得到的二進制數據,所以獲取的時候要將數據反序列化
                Deserialize (new MemoryStream (data));
            }
            else if (!_isNewSessionKey)
            {
                _logger.AccessingExpiredSession (_sessionKey);
            }
            //是否可用標識
            _isAvailable = true;
        }
        catch (Exception exception)
        {
            _logger.SessionCacheReadException (_sessionKey, exception);
            _isAvailable = false;
            _sessionId = string.Empty;
            _sessionIdBytes = null;
            _store = new NoOpSessionStore ();
        }
        finally
        {
           //將數據標識設置為已加載狀態(tài)
            _loaded = true;
        }
    }
}

private void Deserialize (Stream content)
{
    if (content == null || content.ReadByte () != SerializationRevision)
    {
        // Replace the un-readable format.
        _isModified = true;
        return;
    }

    int expectedEntries = DeserializeNumFrom3Bytes (content);
    _sessionIdBytes = ReadBytes (content, IdByteCount);

    for (int i = 0; i < expectedEntries; i++)
    {
        int keyLength = DeserializeNumFrom2Bytes (content);
        //在存儲的數據中按照規(guī)則獲取存儲設置的具體 key
        var key = new EncodedKey (ReadBytes (content, keyLength));
        int dataLength = DeserializeNumFrom4Bytes (content);
        //將反序列化之后的數據存儲到_store
        _store[key] = ReadBytes (content, dataLength);
    }

    if (_logger.IsEnabled (LogLevel.Debug))
    {
        _sessionId = new Guid (_sessionIdBytes) .ToString ();
        _logger.SessionLoaded (_sessionKey, _sessionId, expectedEntries);
    }
}

  通過上面的代碼我們可以得知 Get 數據之前之前先 Load 數據,Load 其實就是在 IDistributedCache 中獲取數據然后存儲到了_store 中,通過當前類源碼可知_store 是本地字典,也就是說 Session 直接獲取的其實是本地字典里的數據。

private IDictionary<EncodedKey, byte[]> _store;

  這里其實產生兩點疑問:

  • 1. 針對每個會話存儲到 IDistributedCache 的其實都在一個 Key 里,就是以當前會話唯一標識為 key 的 value 里,為什么沒有采取組合會話 key 單獨存儲。
  • 2. 每次請求第一次操作 Session,都會把 IDistributedCache 里針對當前會話的數據全部加載到本地字典里,一般來說每次會話操作 Session 的次數并不會很多,感覺并不會節(jié)約性能。

  接下來我們在再來查看另一個我們比較熟悉的方法 Set 方法

public void Set (string key, byte[] value)
{
    if (value == null)
    {
        throw new ArgumentNullException (nameof (value));
    }
    if (IsAvailable)
    {
        //存儲的 key 是被編碼過的
        var encodedKey = new EncodedKey (key);
        if (encodedKey.KeyBytes.Length > KeyLengthLimit)
        {
            throw new ArgumentOutOfRangeException (nameof (key),
                Resources.FormatException_KeyLengthIsExceeded (KeyLengthLimit));
        }
        if (!_tryEstablishSession ())
        {
            throw new InvalidOperationException (Resources.Exception_InvalidSessionEstablishment);
        }
        //是否修改過標識
        _isModified = true;
        //將原始內容轉換為 byte 數組
        byte[] copy = new byte[value.Length];
        Buffer.BlockCopy (src: value, srcOffset: 0, dst: copy, dstOffset: 0, count: value.Length);
        //將數據存儲到本地字典_store
        _store[encodedKey] = copy;
    }
}

  這里我們可以看到 Set 方法并沒有將數據放入到存儲系統(tǒng),只是放入了本地字典里。我們再來看其他方法

public void Remove (string key)
{
    Load ();
    _isModified |= _store.Remove (new EncodedKey (key));
}

public void Clear ()
{
    Load ();
    _isModified |= _store.Count > 0;
    _store.Clear ();
}

  這些方法都沒有對存儲系統(tǒng) DistributedCache 里的數據進行操作,都只是操作從存儲系統(tǒng) Load 到本地的字典數據。那什么地方進行的存儲呢,也就是說我們要找到調用_cache.Set 方法的地方,最后在這個地方找到了 Set 方法,而且看這個方法名就知道是提交 Session 數據的地方

public async Task CommitAsync (CancellationToken cancellationToken = default)
{
    //超過_ioTimeout CancellationToken 將自動取消
    using (var timeout = new CancellationTokenSource (_ioTimeout))
    {
        var cts = CancellationTokenSource.CreateLinkedTokenSource (timeout.Token, cancellationToken);
        //數據被修改過
        if (_isModified)
        {
            if (_logger.IsEnabled (LogLevel.Information))
            {
                try
                {
                    cts.Token.ThrowIfCancellationRequested ();
                    var data = await _cache.GetAsync (_sessionKey, cts.Token);
                    if (data == null)
                    {
                        _logger.SessionStarted (_sessionKey, Id);
                    }
                }
                catch (OperationCanceledException)
                {
                }
                catch (Exception exception)
                {
                    _logger.SessionCacheReadException (_sessionKey, exception);
                }
            }
            var stream = new MemoryStream ();
            //將_store 字典里的數據寫到 stream 里
            Serialize (stream);
            try
            {
                cts.Token.ThrowIfCancellationRequested ();
                //將讀取_store 的流寫入到 DistributedCache 存儲里
                await _cache.SetAsync (
                    _sessionKey,
                    stream.ToArray (),
                    new DistributedCacheEntryOptions () .SetSlidingExpiration (_idleTimeout),
                    cts.Token);
                _isModified = false;
                _logger.SessionStored (_sessionKey, Id, _store.Count);
            }
            catch (OperationCanceledException oex)
            {
                if (timeout.Token.IsCancellationRequested)
                {
                    _logger.SessionCommitTimeout ();
                    throw new OperationCanceledException ("Timed out committing the session.", oex, timeout.Token);
                }
                throw;
            }
        }
        else
        {
            try
            {
                await _cache.RefreshAsync (_sessionKey, cts.Token);
            }
            catch (OperationCanceledException oex)
            {
                if (timeout.Token.IsCancellationRequested)
                {
                    _logger.SessionRefreshTimeout ();
                    throw new OperationCanceledException ("Timed out refreshing the session.", oex, timeout.Token);
                }
                throw;
            }
        }
    }
}

private void Serialize (Stream output)
{
    output.WriteByte (SerializationRevision);
    SerializeNumAs3Bytes (output, _store.Count);
    output.Write (IdBytes, 0, IdByteCount);
    //將_store 字典里的數據寫到 Stream 里
    foreach (var entry in _store)
    {
        var keyBytes = entry.Key.KeyBytes;
        SerializeNumAs2Bytes (output, keyBytes.Length);
        output.Write (keyBytes, 0, keyBytes.Length);
        SerializeNumAs4Bytes (output, entry.Value.Length);
        output.Write (entry.Value, 0, entry.Value.Length);
    }
}

  那么問題來了當前類里并沒有地方調用 CommitAsync,那么到底是在什么地方調用的該方法呢?姑且別著急,我們之前說過使用 Session 的三要素,現在才說了兩個,還有一個 UseSession 的中間件沒有提及到呢。

  UseSession 中間件

  通過上面注冊的相關方法我們大概了解到了 Session 的工作原理。接下來我們查看 UseSession 中間件里的代碼,探究這里究竟做了什么操作。我們找到 UseSession 方法所在的地方 SessionMiddlewareExtensions 找到第一個方法

public static IApplicationBuilder UseSession (this IApplicationBuilder app)
{
    if (app == null)
    {
        throw new ArgumentNullException (nameof (app));
    }
    return app.UseMiddleware<SessionMiddleware>();
}

  SessionMiddleware 的源碼

public class SessionMiddleware
{
  private static readonly RandomNumberGenerator CryptoRandom = RandomNumberGenerator.Create ();
  private const int SessionKeyLength = 36; // "382c74c3-721d-4f34-80e5-57657b6cbc27"
  private static readonly Func<bool> ReturnTrue = () => true;
  private readonly RequestDelegate _next;
  private readonly SessionOptions _options;
  private readonly ILogger _logger;
  private readonly ISessionStore _sessionStore;
  private readonly IDataProtector _dataProtector;

  public SessionMiddleware (
      RequestDelegate next,
      ILoggerFactory loggerFactory,
      IDataProtectionProvider dataProtectionProvider,
      ISessionStore sessionStore,
      IOptions<SessionOptions> options)
  {
      if (next == null)
      {
          throw new ArgumentNullException (nameof (next));
      }
      if (loggerFactory == null)
      {
          throw new ArgumentNullException (nameof (loggerFactory));
      }
      if (dataProtectionProvider == null)
      {
          throw new ArgumentNullException (nameof (dataProtectionProvider));
      }
      if (sessionStore == null)
      {
          throw new ArgumentNullException (nameof (sessionStore));
      }
      if (options == null)
      {
          throw new ArgumentNullException (nameof (options));
      }
      _next = next;
      _logger = loggerFactory.CreateLogger<SessionMiddleware>();
      _dataProtector = dataProtectionProvider.CreateProtector (nameof (SessionMiddleware));
      _options = options.Value;
     //Session 操作類在這里被注入的
      _sessionStore = sessionStore;
  }

  public async Task Invoke (HttpContext context)
  {
      var isNewSessionKey = false;
      Func<bool> tryEstablishSession = ReturnTrue;
      var cookieValue = context.Request.Cookies[_options.Cookie.Name];
      var sessionKey = CookieProtection.Unprotect (_dataProtector, cookieValue, _logger);
      //會話首次建立
      if (string.IsNullOrWhiteSpace (sessionKey) || sessionKey.Length != SessionKeyLength)
      {
          //將會話唯一標識通過 Cookie 返回到客戶端
          var guidBytes = new byte[16];
          CryptoRandom.GetBytes (guidBytes);
          sessionKey = new Guid (guidBytes) .ToString ();
          cookieValue = CookieProtection.Protect (_dataProtector, sessionKey);
          var establisher = new SessionEstablisher (context, cookieValue, _options);
          tryEstablishSession = establisher.TryEstablishSession;
          isNewSessionKey = true;
      }
      var feature = new SessionFeature ();
      //創(chuàng)建 Session
      feature.Session = _sessionStore.Create (sessionKey, _options.IdleTimeout, _options.IOTimeout, tryEstablishSession, isNewSessionKey);
      //放入到 ISessionFeature,給 HttpContext 中的 Session 數據提供具體實例
      context.Features.Set<ISessionFeature>(feature);
      try
      {
          await _next (context);
      }
      finally
      {
          //置空為了在請求結束后可以回收掉 Session
          context.Features.Set<ISessionFeature>(null);
          if (feature.Session != null)
          {
              try
              {
                  //請求完成后提交保存 Session 字典里的數據到 DistributedCache 存儲里
                  await feature.Session.CommitAsync ();
              }
              catch (OperationCanceledException)
              {
                  _logger.SessionCommitCanceled ();
              }
              catch (Exception ex)
              {
                  _logger.ErrorClosingTheSession (ex);
              }
          }
      }
  }

  private class SessionEstablisher
  {
      private readonly HttpContext _context;
      private readonly string _cookieValue;
      private readonly SessionOptions _options;
      private bool _shouldEstablishSession;

      public SessionEstablisher (HttpContext context, string cookieValue, SessionOptions options)
      {
          _context = context;
          _cookieValue = cookieValue;
          _options = options;
          context.Response.OnStarting (OnStartingCallback, state: this);
      }

      private static Task OnStartingCallback (object state)
      {
          var establisher = (SessionEstablisher) state;
          if (establisher._shouldEstablishSession)
          {
              establisher.SetCookie ();
          }
          return Task.FromResult (0);
      }

      private void SetCookie ()
      {
          //會話標識寫入到 Cookie 操作
          var cookieOptions = _options.Cookie.Build (_context);
          var response = _context.Response;
          response.Cookies.Append (_options.Cookie.Name, _cookieValue, cookieOptions);
          var responseHeaders = response.Headers;
          responseHeaders[HeaderNames.CacheControl] = "no-cache";
          responseHeaders[HeaderNames.Pragma] = "no-cache";
          responseHeaders[HeaderNames.Expires] = "-1";
      }

      internal bool TryEstablishSession ()
      {
          return (_shouldEstablishSession |= !_context.Response.HasStarted);
      }
  }
}

  通過 SessionMiddleware 中間件里的代碼我們了解到了每次請求 Session 的創(chuàng)建,以及 Session 里的數據保存到 DistributedCache 都是在這里進行的。不過這里仍存在一個疑問由于調用 CommitAsync 是在中間件執(zhí)行完成后統(tǒng)一進行存儲的,也就是說中途對 Session 進行的 Set Remove Clear 的操作都是在 Session 方法的本地字典里進行的,并沒有同步到 DistributedCache 里,如果中途出現程序異常結束的情況下,保存到 Session 里的數據,并沒有真正的存儲下來,會出現丟失的情況,不知道在設計這部分邏輯的時候是出于什么樣的考慮。

  總結

  通過閱讀 Session 相關的部分源碼大致了解了 Session 的原理,工作三要素,IDistributedCache 存儲 Session 里的數據,SessionStore 是 Session 的實現類,UseSession 是 Session 被創(chuàng)建到當前請求的地方。同時也留下了幾點疑問

  • 針對每個會話存儲到 IDistributedCache 的其實都在一個 Key 里,就是以當前會話唯一標識為 key 的 value 里,為什么沒有采取組合會話 key 單獨存儲。
  • 每次請求第一次操作 Session,都會把 IDistributedCache 里針對當前會話的數據全部加載到本地字典里,一般來說每次會話操作 Session 的次數并不會很多,感覺并不會節(jié)約性能。
  • 調用 CommitAsync 是在中間件執(zhí)行完成后統(tǒng)一進行存儲的,也就是說中途對 Session 進行的 Set Remove Clear 的操作都是在 Session 方法的本地字典里進行的,并沒有同步到 DistributedCache 里,如果中途出現程序異常結束的情況下,保存到 Session 里的數據,并沒有真正的存儲下來,會出現丟失的情況。

  對于以上疑問,不知道是個人理解不足,還是在設計的時候出于別的考慮。歡迎在評論區(qū)多多溝通交流,希望能從大家那里得到更好的解釋和答案。

總結

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

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

精品福利av | 久久综合加勒比 | 高清精品视频 | 亚洲视频精品在线 | 久久99爱视频 | 久精品在线观看 | 九九热久久免费视频 | 精品嫩模福利一区二区蜜臀 | 亚洲视频电影在线 | 麻豆 free xxxx movies hd| 欧美激情精品久久久久久免费 | 国产一区av在线 | 青青河边草免费观看 | 激情婷婷久久 | 福利视频一区二区 | 麻豆免费在线视频 | av亚洲产国偷v产偷v自拍小说 | 亚洲精品av中文字幕在线在线 | 亚洲va欧美va人人爽春色影视 | 天天曰天天| 在线观看免费一区 | 天天操偷偷干 | 久久久久亚洲精品成人网小说 | 黄色大片免费网站 | 国产精品婷婷 | 丁香影院在线 | 成人免费视频播放 | 国内外激情视频 | 首页av在线 | 三级黄色在线 | 久久高清视频免费 | 国产一级免费视频 | 狠狠狠狠狠狠干 | 国产韩国日本高清视频 | 91视频链接| 国产精品原创av片国产免费 | 欧美日韩在线免费视频 | 玖玖999 | 天堂av在线免费 | 久久久视频在线 | 欧美激情xxxx | 亚洲天堂网在线观看视频 | 久久久久这里只有精品 | 欧美激情视频一二区 | 欧美亚洲三级 | 久久久av电影 | 久久综合婷婷国产二区高清 | 欧美日韩高清一区二区 国产亚洲免费看 | 久久区二区 | 国产精品涩涩屋www在线观看 | 免费亚洲视频在线观看 | 日韩在线免费小视频 | 69视频网站 | 久 久久影院 | 久久婷婷五月综合色丁香 | 在线成人一区 | 在线影院中文字幕 | 日日爱999 | 麻豆视频在线播放 | 欧美高清视频不卡网 | 中国精品少妇 | 91av欧美 | 中文字幕免费高清在线 | 国产成人精品一区二区三区在线 | 在线一区电影 | 91视频在线观看免费 | 亚洲综合干 | 国产亚洲精品福利 | 国产盗摄精品一区二区 | 91视频久久久久久 | 成人亚洲精品国产www | 狠狠网亚洲精品 | 欧美一区二区三区在线 | 午夜精品福利在线 | 一区二区三区精品久久久 | 久草免费色站 | 亚洲精品午夜一区人人爽 | 国产精品美女久久久久aⅴ 干干夜夜 | 国产成人61精品免费看片 | 中文字幕永久在线 | 一区二区丝袜 | 国产xxxxx在线观看 | 亚洲午夜久久久久久久久电影网 | 色亚洲网 | 亚洲精品观看 | 在线视频你懂 | 亚洲精品乱码久久久久v最新版 | 国产免费亚洲 | 日韩网站在线免费观看 | 麻豆传媒视频在线 | 精品一区 精品二区 | 国产成人精品久久久久蜜臀 | 久久久影院一区二区三区 | 激情综合国产 | 天天操夜夜想 | 久久综合九色综合欧美就去吻 | 色天堂在线视频 | 国产丝袜在线 | 人人爽人人爽av | 亚洲免费观看在线视频 | 一级片免费观看 | 亚洲成年人免费网站 | 在线观看网站你懂的 | 天天躁日日躁狠狠躁av中文 | 国产青草视频在线观看 | 日韩欧美高清一区二区 | 成人av在线网| 中文字幕在线播放日韩 | 中文字幕超清在线免费 | 免费在线观看午夜视频 | 精品国产一区二区三区男人吃奶 | 欧美中文字幕第一页 | av片一区二区 | 激情综合网五月 | 亚洲激情在线播放 | 国产一级一级国产 | 久久久久久久久久久久久久av | 97视频在线免费播放 | 在线观看色视频 | 99久久精品国产亚洲 | 国产香蕉在线 | 久艹视频免费观看 | 日韩精品视频网站 | 欧美色婷| 国产精品久久久影视 | 婷婷丁香六月天 | 手机成人av在线 | 91在线看视频 | 视频在线99re| 伊人国产女 | 超碰成人免费电影 | 亚洲精品国产综合99久久夜夜嗨 | 日本不卡123 | www.com久久久| 在线观看精品 | 国产乱码精品一区二区蜜臀 | 日韩久久久 | 九草视频在线观看 | 五月婷婷伊人网 | 韩国在线一区 | av女优中文字幕在线观看 | 欧美a在线看 | 亚洲天堂网在线播放 | 国产成人精品亚洲精品 | 91精品国产欧美一区二区成人 | 中文字幕在线影院 | 国产精品美女久久久久久网站 | 91精品夜夜 | 97狠狠干| 日色在线视频 | 午夜 在线 | 亚洲国产精品成人精品 | 国产精品12| 国产性天天综合网 | 中文在线免费观看 | 天天做天天爱夜夜爽 | 波多野结衣视频一区二区 | 天天操天天操天天干 | 久久美女高清视频 | 日韩a级免费视频 | av在线播放网址 | 精品国产一二三 | 欧美久久久久久久久久 | 亚洲国产人午在线一二区 | 国产又粗又长的视频 | 国产一区视频在线播放 | 国产一级免费视频 | www.婷婷色 | 国产亚洲精品久久久久久移动网络 | 色播激情五月 | 久久综合九色99 | 人人插人人看 | 丝袜网站在线观看 | 91在线产啪 | 99r精品视频在线观看 | 日韩欧美精品在线观看视频 | 成人在线黄色电影 | 伊人婷婷网| 中文字幕免费观看全部电影 | 成人9ⅰ免费影视网站 | 91完整版观看 | 亚洲美女精品区人人人人 | 久久久久久精 | 91中文在线 | 综合久久2023 | 久热色超碰 | 一区在线观看 | 国产精品久久久一区二区三区网站 | 韩日av在线| 99激情网 | 国产成人久久精品77777综合 | 国产丝袜美腿在线 | 欧美一区二区三区不卡 | 操久久免费视频 | 99久久这里有精品 | 色婷婷骚婷婷 | 免费av高清 | 国产精品免费视频一区二区 | 日韩欧美一区二区在线 | 五月婷婷另类国产 | 中文字幕一区二区三区在线视频 | 五月婷影院 | 欧美极品一区二区三区 | 又黄又爽的免费高潮视频 | 在线观看中文字幕网站 | 天天碰天天操视频 | 免费在线成人av电影 | 亚洲涩综合 | 亚洲精品视频在线免费 | 日韩二区三区 | 蜜臀av性久久久久av蜜臀妖精 | 最近高清中文字幕在线国语5 | 人人澡av| www.色爱 | japanesefreesex中国少妇 | 日本中文字幕在线电影 | 精品久久久亚洲 | 人人爱人人射 | 黄色中文字幕在线 | 国产婷婷一区二区 | 国产99久久精品一区二区300 | 天堂视频中文在线 | 尤物97国产精品久久精品国产 | 国产精品久久久一区二区 | 久草在线播放视频 | 超碰在线人人草 | 精品一区二区三区香蕉蜜桃 | 国产r级在线观看 | 国产九九九九九 | 麻豆果冻剧传媒在线播放 | 狠狠五月天 | 五月天婷婷在线观看视频 | 91免费视频网站在线观看 | 久久综合久久综合这里只有精品 | 一本色道久久综合亚洲二区三区 | 亚洲性xxxx| 99久久激情视频 | 久久免费精品一区二区三区 | 激情网婷婷 | 97精产国品一二三产区在线 | 日韩一区二区三区视频在线 | 国产在线色站 | 国产精品福利午夜在线观看 | 免费视频 你懂的 | 亚洲电影免费 | 亚洲精品www久久久久久 | 日韩视频在线一区 | 日韩欧三级 | 四虎成人精品永久免费av | 91看片看淫黄大片 | 欧美日韩视频一区二区 | 久久久久国产精品免费免费搜索 | 9热精品 | 久久99久久精品国产 | 天天干.com | 不卡电影免费在线播放一区 | 久久精品—区二区三区 | 免费日韩一区 | 五月婷婷在线综合 | 成人av高清在线观看 | 中文字幕综合在线 | 国产综合视频在线观看 | 国产 精品 资源 | 久久夜色精品国产欧美乱极品 | 国产成人在线一区 | 在线免费视 | www.五月天婷婷.com | 国产色啪 | 免费在线观看国产精品 | 操一草| 香蕉在线视频观看 | 日韩在线无 | 九九爱免费视频 | 伊人五月天婷婷 | 一级黄色片网站 | 波多野结衣一区二区 | 天天曰天天曰 | 亚洲在线色 | 国产成人一区二区三区 | 丰满少妇一级 | 色天天综合久久久久综合片 | 色噜噜日韩精品一区二区三区视频 | 99情趣网视频 | 91大神精品视频在线观看 | 国产精品毛片一区视频播 | 国产一区在线看 | 午夜丁香网 | 在线黄频 | 国产精品久久久久久久久蜜臀 | 一级α片| 国产高清一区二区 | 成人一级黄色片 | 高潮毛片无遮挡高清免费 | 黄色小网站免费看 | 色婷婷综合久久久 | 久久特级毛片 | 欧美日韩一区二区视频在线观看 | 五月天激情婷婷 | 在线观看国产中文字幕 | 特级西西www44高清大胆图片 | 国产免费xvideos视频入口 | 日韩免费观看一区二区三区 | 中字幕视频在线永久在线观看免费 | 国产精品一区二区av麻豆 | 成人国产精品久久久春色 | 九九热精品国产 | av在线免费观看不卡 | 2019天天干夜夜操 | 日本mv大片欧洲mv大片 | 成人黄色毛片视频 | 激情婷婷久久 | 久草免费新视频 | 天天插天天操天天干 | 国产亚州精品视频 | 日韩在线观看一区二区三区 | 人人超在线公开视频 | 国产不卡免费视频 | 操操操天天操 | 免费在线观看一区二区三区 | 97av在线视频 | 久久精品a | 国产精品99蜜臀久久不卡二区 | 中文一区在线观看 | 99热精品久久 | 欧美污污视频 | 三上悠亚一区二区在线观看 | 精品视频免费观看 | 久久综合加勒比 | 99精品视频在线观看免费 | 99re8这里有精品热视频免费 | 日产中文字幕 | 干干干操操操 | 91污视频在线观看 | 亚洲不卡123| 黄色a视频 | 国产一区二区三区视频在线 | 欧美精选一区二区三区 | 97免费视频在线 | 免费在线黄 | 久久免费视频这里只有精品 | 国产精品永久 | 免费91麻豆精品国产自产在线观看 | 亚洲一区二区观看 | 久久国产高清视频 | 欧美精品久久 | 欧美一区视频 | 在线观看黄网站 | 91最新地址永久入口 | 亚洲国产精品人久久电影 | 国产啊v在线 | 国产中文字幕亚洲 | 成人精品在线 | 天天干夜夜干 | 在线观看深夜视频 | 日韩mv欧美mv国产精品 | 免费久久99精品国产婷婷六月 | 久久久久9999亚洲精品 | 又黄又爽又无遮挡的视频 | 麻豆视频国产在线观看 | 香蕉久久久久久久 | 91高清在线 | 91豆麻精品91久久久久久 | 蜜臀久久99精品久久久无需会员 | 国产91粉嫩白浆在线观看 | 欧美激情一区不卡 | 日韩高清一区 | 久久精品亚洲精品国产欧美 | 成人午夜av电影 | 91av在线国产| 国产精品久久久久久久久久直播 | 伊人色**天天综合婷婷 | 国产一二区在线观看 | 日韩女同一区二区三区在线观看 | 五月激情久久久 | 日韩精品视频在线免费观看 | 国产精品一区二区久久久 | 国产最顶级的黄色片在线免费观看 | 国产黄色片免费看 | 啪啪av在线| 欧美夫妻性生活电影 | 亚洲精品自拍 | 久在线观看视频 | 亚洲婷婷丁香 | 亚洲国产三级 | 尤物九九久久国产精品的分类 | 亚洲 欧美变态 另类 综合 | 在线一二三区 | 五月婷婷中文网 | 亚洲综合欧美日韩狠狠色 | 91最新网址 | 亚洲最大免费成人网 | 在线视频 91 | 日韩欧美精品一区二区 | 欧美日韩国产一区二区三区在线观看 | 成人精品亚洲 | 久久a视频| 豆豆色资源网xfplay | 亚洲国内精品 | 伊人伊成久久人综合网站 | 91九色视频在线观看 | 成人午夜黄色影院 | 欧美在线不卡一区 | 亚洲精品一区二区在线观看 | 91久久精品一区 | 久热久草在线 | 五月婷激情 | 五月婷婷中文字幕 | 国产精品永久久久久久久久久 | 欧美人体xx | 亚洲精品女人久久久 | 国产精品二区三区 | 日韩欧美视频在线播放 | 日本激情视频中文字幕 | 国产高清av在线播放 | 久久久久高清 | 日本中文在线观看 | 伊人av综合 | 国产精品美女www爽爽爽视频 | 久草在线免费电影 | 五月天婷婷丁香花 | 天堂av网站| 在线免费观看麻豆视频 | 国产在线97 | 999久久| 国产精品成人在线 | 中文字幕制服丝袜av久久 | 亚洲国产97在线精品一区 | 91麻豆精品国产91久久久无需广告 | www色com| jizz欧美性9 国产一区高清在线观看 | 97香蕉久久国产在线观看 | 九九九免费视频 | 久久精品99久久久久久2456 | 一本大道久久精品懂色aⅴ 五月婷社区 | 日本精品xxxx | 成人黄色电影免费观看 | 欧美日韩一区久久 | 婷婷色在线播放 | 日本黄色免费观看 | 成人在线你懂得 | 最近最新中文字幕 | 亚洲精品在线一区二区 | 久久99久久99精品免视看婷婷 | 国产亚洲精品成人av久久ww | 久热久草 | 色wwwww| 精品高清视频 | 日韩欧美视频在线播放 | 亚洲一级片 | 国产精品久久久久久久久搜平片 | 91少妇精拍在线播放 | 天天操夜操 | 亚洲国产视频网站 | 国产精久久 | 精精国产xxxx视频在线播放 | 五月婷婷香蕉 | 国产成人精品亚洲 | 亚洲精品国产综合99久久夜夜嗨 | 久久精品播放 | 黄色免费网站大全 | 欧美激情第八页 | 麻豆精品在线视频 | 国产又黄又爽无遮挡 | 日韩伦理片一区二区三区 | 免费日韩高清 | 97超碰人| 国产a国产a国产a | 婷婷综合亚洲 | 中文字幕第一页在线 | 人人爽人人爽人人片av免 | 69国产盗摄一区二区三区五区 | 亚洲人人射 | 在线观看国产www | 中文字幕在线观看不卡 | 国产精品无av码在线观看 | 亚洲午夜久久久久久久久电影网 | 99热999 | 天天干天天在线 | 免费视频a | 在线国产一区二区三区 | 久久综合中文字幕 | a黄在线观看 | av中文字幕亚洲 | 精品久久一二三区 | 91探花在线视频 | 国产 一区二区三区 在线 | 国产精品久久久毛片 | 久久国产精彩视频 | 免费色视频在线 | 欧美三级高清 | 国产短视频在线播放 | 五月天综合网站 | 天天曰天天射 | 亚洲国产97在线精品一区 | 五月婷婷综合色拍 | 人人射av | 在线免费色| 99se视频在线观看 | 精品成人久久 | 欧美a在线免费观看 | 中文理论片 | 国产欧美在线一区二区三区 | 在线看片日韩 | 五月丁色 | 国产免费嫩草影院 | 久久综合色8888 | 中文在线a∨在线 | 成人禁用看黄a在线 | 天天操天| 国产美女精彩久久 | 91丨九色丨国产丨porny精品 | 国产精品美女久久 | 日韩精品欧美视频 | 成人a在线 | 在线欧美最极品的av | 亚洲国产高清在线观看视频 | 人人艹视频 | 国产一区在线看 | 国产中文在线播放 | 久久久综合精品 | 日韩精品电影在线播放 | 精品国产精品国产偷麻豆 | 亚洲成av人片在线观看 | 日韩av片无码一区二区不卡电影 | 日韩欧美国产视频 | av色影院 | av在线电影免费观看 | 91在线产啪 | 999成人| 亚洲电影久久久 | av免费在线看网站 | 免费观看v片在线观看 | 精品国产一区二区三区四区vr | 久久电影国产免费久久电影 | 中国精品少妇 | 美女精品 | 精品视频在线免费观看 | 三级视频片| 日韩大片在线免费观看 | 国产无遮挡猛进猛出免费软件 | 国产啊v在线观看 | 亚洲一级影院 | 国产精品岛国久久久久久久久红粉 | 亚洲国产美女久久久久 | 国产一级在线观看视频 | 亚洲精品久久久久久久蜜桃 | 日韩大片在线免费观看 | 天天鲁天天干天天射 | 成人中心免费视频 | 国产成人精品综合久久久 | 麻豆免费视频 | 久草在在线视频 | 国产91精品一区二区绿帽 | 亚洲a资源 | 在线播放精品一区二区三区 | 日韩二区三区 | 最新国产福利 | 久久你懂得| 国产视频高清 | 国产97在线视频 | 在线看成人av | 日韩国产精品久久久久久亚洲 | 久艹视频在线观看 | 久久久在线 | 久久久久久久久久久电影 | 欧美一级乱黄 | 久久久久一区二区三区 | 国产精品一区二区三区在线 | 国产精品嫩草55av | 欧美性久久久 | 在线观看日韩中文字幕 | 亚洲视频免费在线看 | 一区二区三区国 | 国产一区二区三区免费观看视频 | 久久午夜视频 | 国产免费资源 | 91热精品| av免费黄色| 天天干夜夜 | 久久久久久久久久亚洲精品 | 欧美精品亚洲二区 | 一本一本久久a久久精品综合小说 | 成人91在线 | 高清美女视频 | 国产99久久久国产精品免费二区 | 免费a现在观看 | 日日干天天爽 | 久久久久免费精品国产小说色大师 | 日本黄色大片免费看 | 91九色精品女同系列 | 毛片黄色一级 | 亚洲免费观看在线视频 | 久久你懂得 | www在线免费观看 | 99麻豆视频 | a级国产乱理论片在线观看 伊人宗合网 | 超碰97久久| 国产黄色片一级三级 | 亚欧日韩成人h片 | 99精品国产99久久久久久97 | 久久精品99精品国产香蕉 | 国产手机av | 久久开心激情 | www国产在线| 免费成人在线网站 | 中文字幕第一页在线 | 91九色最新 | 五月婷婷丁香六月 | 日韩视频a | 最近中文字幕完整高清 | 天天操天天干天天 | www.av小说 | 二区精品视频 | 欧美日韩一区二区免费在线观看 | 在线视频日韩精品 | 亚洲欧洲国产精品 | 五月婷婷黄色网 | 日韩激情第一页 | 成人av中文字幕在线观看 | 国产成人精品一区在线 | 亚洲欧美国产视频 | 一区二区理论片 | 久草在线手机观看 | 在线亚洲午夜片av大片 | 99在线视频精品 | 97视频入口免费观看 | 成人av地址 | 亚洲色图27p | 黄色三级免费片 | 成人国产精品免费观看 | a黄色| 这里只有精品视频在线观看 | 亚洲精品动漫成人3d无尽在线 | 欧美在线视频精品 | 娇妻呻吟一区二区三区 | 免费观看视频的网站 | 久草视频在 | 国产精品资源网 | 五月天色丁香 | 欧美在线视频一区二区三区 | 国产成人精品一区在线 | 天天操天天色综合 | 欧美日韩在线视频一区 | 久久久久久久久黄色 | 免费在线电影网址大全 | 精品在线一区二区 | 中文资源在线观看 | 欧美日韩亚洲精品在线 | 日韩 在线观看 | 国精产品999国精产 久久久久 | 久久综合久色欧美综合狠狠 | 日韩经典一区二区三区 | 91精品国产92久久久久 | 日韩成年视频 | 午夜视频在线观看网站 | 992tv在线成人免费观看 | 成人va天堂| 国产精品中文 | 狠狠地日 | 99久久99久久精品 | 99热这里有精品 | 狠狠色丁香婷婷综合橹88 | 最近更新的中文字幕 | 欧美91在线| 91精品视频免费在线观看 | 四川妇女搡bbbb搡bbbb搡 | 国产一级二级视频 | 久久精品视频在线免费观看 | 精品国产乱码久久久久久1区二区 | 国产一区免费在线观看 | 成人黄色影片在线 | 91丨九色丨高潮 | 国产精品aⅴ | 久久视频一区 | 麻豆视频免费在线播放 | 91精品国自产拍天天拍 | 国产精品区在线观看 | 精品久久久国产 | 国产视频日本 | 午夜精品久久久久久久久久久 | 日日爽视频 | 96精品视频| 久久999久久 | 探花系列在线 | 国产大陆亚洲精品国产 | 九九视频在线播放 | 天天综合网天天 | 性色在线视频 | 久久免费一级片 | 日韩中文字幕视频在线观看 | 久久无码av一区二区三区电影网 | 亚洲狠狠丁香婷婷综合久久久 | 欧美久久九九 | 91av原创 | 欧美精品中文在线免费观看 | 五月婷婷综合在线 | 亚洲精品66 | 欧美性色网站 | 日韩免费观看av | 98久9在线 | 免费 | 久久精品国产免费看久久精品 | 免费毛片一区二区三区久久久 | 色多多视频在线观看 | 欧洲精品视频一区 | 亚洲综合在线一区二区三区 | 国产高清视频在线 | 欧美福利片在线观看 | 97av影院| 日韩欧美网址 | 婷婷综合五月天 | 欧美精品一级视频 | 国产首页 | 精品99在线观看 | 国产一级黄色片免费看 | 美女黄色网在线播放 | 在线观看你懂的网站 | 伊人视频| 国产精品99久久久久久小说 | 久久久久综合精品福利啪啪 | 日韩精品在线一区 | 久久久久伊人 | 日韩在线视频观看免费 | 国产69精品久久久久久久久久 | 五月婷婷久 | 国精产品999国精产品视频 | 91av成人 | 69国产精品视频 | 婷婷在线免费视频 | 黄色大片日本免费大片 | 欧美亚洲一区二区在线 | 日韩精品免费在线观看 | 综合网在线视频 | 国产黄色免费观看 | 亚洲一区二区三区在线看 | 91香蕉视频污在线 | 欧美激情精品久久久久久 | 在线看不卡av | 国产精品欧美久久久久无广告 | 中文字幕在线视频国产 | 亚洲国产高清在线观看视频 | 91在线视频导航 | av三级av | 9797在线看片亚洲精品 | 91女子私密保健养生少妇 | 91秒拍国产福利一区 | 久久久久久欧美二区电影网 | 99草视频| 91精品国产自产在线观看永久 | 日韩免费一二三区 | 中文字幕日本在线观看 | 日韩精品免费一区二区三区 | 激情伊人五月天 | www.久久久com | 久久久蜜桃 | 五月婷婷一区 | 久久久久久久久爱 | 98涩涩国产露脸精品国产网 | 欧美成人在线网站 | 91资源在线播放 | 99riav1国产精品视频 | 免费视频一二三区 | 久久午夜电影网 | 天天干天天操天天做 | 这里只有精品视频在线观看 | 黄色视屏免费在线观看 | 免费av一级电影 | 中文字幕在线看人 | 亚洲黄色一级大片 | 午夜精品久久久久久久爽 | 久久尤物电影视频在线观看 | 久久综合色播五月 | 天天干夜夜夜操天 | 久久久国产影视 | 日韩欧三级 | 精品99在线 | 7799av| 一本之道乱码区 | 成人午夜电影在线 | 久久99免费视频 | 国产精品大片免费观看 | 99久久电影 | 91在线小视频| 在线看国产一区 | 国产亚洲婷婷免费 | 人人舔人人干 | 日韩在线视 | 97在线公开视频 | 黄色小网站免费看 | 国产高清不卡一区二区三区 | 中文字幕在线观看完整版电影 | 日韩精品1区2区 | 福利电影久久 | 久久久久久久综合色一本 | 91亚洲精品久久久蜜桃网站 | www.人人草 | 六月丁香综合网 | 国内视频在线 | 99国内精品 | 啪啪精品 | 日韩三级免费观看 | 欧美日韩另类在线观看 | 久久伊人免费视频 | 国产成人精品午夜在线播放 | 久久成人视屏 | 成人免费毛片aaaaaa片 | 久久国产精品第一页 | 爱射综合 | 国产一性一爱一乱一交 | 国产一区免费看 | 麻花豆传媒mv在线观看 | 久久九九精品 | 中文字幕永久免费 | 亚洲狠狠婷婷综合久久久 | 国产亚洲情侣一区二区无 | avove黑丝| 日韩欧美在线观看 | 91久久精品日日躁夜夜躁国产 | 毛片基地黄久久久久久天堂 | 美女黄久久 | 97在线播放 | 在线婷婷 | 国产中文字幕av | 91精品第一页 | 国产中文| 久久久2o19精品| 成人午夜免费剧场 | 日韩影视精品 | 成年人在线电影 | 久久精品久久久久久久 | 亚洲91视频| 欧美日本中文字幕 | 超碰在线中文字幕 | 国产女v资源在线观看 | 亚洲精品视频在线观看免费视频 | 91视频在线免费下载 | 久久成人亚洲欧美电影 | www.99在线观看 | 国产成人精品久久久 | 天堂av在线7 | 久久久久久久久网站 | 激情欧美一区二区三区免费看 | 久久成人18免费网站 | 欧美黄色高清 | 国产不卡精品视频 | 狠狠色丁香婷婷综合久小说久 | 日韩免费成人av | 国产成年人av| 综合激情婷婷 | 日韩黄色免费在线观看 | 黄色小说视频网站 | 91伊人久久大香线蕉蜜芽人口 | 久久国产品 | 久久国产日韩 | 亚洲最新在线 | av资源免费在线观看 | 99久久久久国产精品免费 | 欧美最猛性xxxxx(亚洲精品) | 天天操 夜夜操 | 日韩电影一区二区三区在线观看 | 免费在线国产精品 | 7777精品伊人久久久大香线蕉 | 超碰在线人人爱 | 日韩字幕在线观看 | 成人午夜免费福利 | 成人在线视频你懂的 | 亚洲欧美观看 | 色婷婷激情五月 | 在线日韩视频 | 国产只有精品 | 欧美日韩免费一区二区 | 亚洲高清在线 | 91网站在线视频 | 国内揄拍国内精品 | 久久8 | 人人射| 少妇bbbb揉bbbb日本 | 五月婷婷丁香 | 欧美日韩一区二区三区免费视频 | 91在线产啪 | 亚州欧美视频 | 91桃色免费视频 | 日韩欧美大片免费观看 | 久久在线免费观看 | 99久久99精品 | 国产亚洲人成网站在线观看 | av中文在线观看 | 成人一区二区三区在线观看 | 欧美色伊人 | 黄在线| 欧美一区二区在线刺激视频 | 国产成人av在线 | 日韩理论影院 | 国产成人久久av977小说 | 在线日韩视频 | 久久久久久久久久久久久久电影 | 色国产精品一区在线观看 | 日韩欧美国产成人 | 欧美日韩一区久久 | 韩国精品一区二区三区六区色诱 | 在线日本看片免费人成视久网 | 国产精品理论片在线播放 | 日韩av高清 | 婷婷亚洲五月色综合 | 美女一二三区 | 亚洲国产美女久久久久 | 久久久久久久久爱 | 国产精品密入口果冻 | 国产日本在线播放 | 岛国大片免费视频 | 久久久久五月 | 国产精品都在这里 | 欧美久久久 | 亚洲精品伦理在线 | 日女人电影 | 天天色天 | 色视频网页 | 亚洲日本国产精品 | 中文字幕在线专区 | 91麻豆精品国产91久久久久久久久 | 中文在线www | 日本久久成人中文字幕电影 | 97视频一区 | 色之综合网| 精品国产自在精品国产精野外直播 | 免费高清在线观看成人 | 久久av中文字幕片 | bbw av| 超碰在线人人爱 | 日韩一区二区三区免费视频 | 亚洲一级黄色av | 久久8| 国产在线视频一区 | 久草在线费播放视频 | 高清不卡免费视频 | 麻豆国产精品va在线观看不卡 | 国产精品一区二区久久 | 国产精品国产三级国产aⅴ入口 | 开心色婷婷 | 在线91观看| 亚洲九九九在线观看 | 在线看片91 | 日韩欧美亚州 | 国产精品成人自产拍在线观看 | 亚洲综合情 | 免费在线观看中文字幕 | 国产成人在线播放 | 91av中文字幕 | av黄色免费在线观看 | av在线免费播放 | 天堂av观看| 久久在线观看视频 | 在线看污网站 | 91看片看淫黄大片 | 欧美一区二视频在线免费观看 | 怡红院成人在线 | 国产精品免费久久久久 | 超碰人人91 | 天无日天天操天天干 | 亚洲美女免费视频 | 国产一区国产二区在线观看 | 久久久精品电影 | 黄色一级大片在线免费看国产一 | 99久久精品国产亚洲 | 1000部国产精品成人观看 | 日韩h在线观看 | 久久久久成人精品亚洲国产 | 欧美日韩精品在线观看视频 | www夜夜操 | 日韩欧美在线观看一区二区三区 | 中文字幕在线观看免费观看 | 精品欧美日韩 | 国模精品一区二区三区 | 午夜天使| 九色91在线 | 国产免费一区二区三区最新6 | 欧美一区二区三区免费观看 | 黄色三级免费片 | 91精品国产91久久久久久三级 | 久久久久久国产精品999 | 视频 天天草 | 久久久 精品 | 四虎国产视频 | 能在线观看的日韩av | 成年人在线免费看视频 | 精品久久久久一区二区国产 | 五月天激情综合网 | 久久精品波多野结衣 | 久久久人人人 | a在线播放| 久久久精品国产一区二区电影四季 | 国产精品久久久久免费 | 超碰在线个人 | 韩国一区二区在线观看 | 91少妇精拍在线播放 | 亚洲乱码国产乱码精品天美传媒 | 天堂av在线7 | 亚洲va在线va天堂va偷拍 | 久久综合视频网 |