久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術文章
文章詳情頁

SpringBoot 防止接口惡意多次請求的操作

瀏覽:2日期:2023-03-26 13:48:12
前言

剛寫代碼不就,還不能做深層次安全措施,今天研究了一下基本的防止接口多次惡意請求的方法。

思路

1:設置同一IP,一個時間段內允許訪問的最大次數

2:記錄所有IP單位時間內訪問的次數

3:將所有被限制IP存到存儲器

4:通過IP過濾訪問請求

該demo只有后臺Java代碼,沒有前端

代碼

首先是獲取IP的工具類

public class Ipsettings { public static String getRemoteHost(HttpServletRequest request) { String ipAddress = null; //ipAddress = request.getRemoteAddr(); ipAddress = request.getHeader('x-forwarded-for'); if(ipAddress == null || ipAddress.length() == 0 || 'unknown'.equalsIgnoreCase(ipAddress)) { ipAddress = request.getHeader('Proxy-Client-IP'); } if(ipAddress == null || ipAddress.length() == 0 || 'unknown'.equalsIgnoreCase(ipAddress)) { ipAddress = request.getHeader('WL-Proxy-Client-IP'); } if(ipAddress == null || ipAddress.length() == 0 || 'unknown'.equalsIgnoreCase(ipAddress)) { ipAddress = request.getRemoteAddr(); if(ipAddress.equals('127.0.0.1')){ //根據網卡取本機配置的IP InetAddress inet=null; try { inet = InetAddress.getLocalHost(); } catch (UnknownHostException e) { e.printStackTrace(); } ipAddress= inet.getHostAddress(); } } //對于通過多個代理的情況,第一個IP為客戶端真實IP,多個IP按照’,’分割 if(ipAddress!=null && ipAddress.length()>15){ //'***.***.***.***'.length() = 15 if(ipAddress.indexOf(',')>0){ ipAddress = ipAddress.substring(0,ipAddress.indexOf(',')); } } return ipAddress; }}

其次是監聽器以及IP存儲器

import java.util.HashMap;import java.util.Map; import javax.servlet.ServletContext;import javax.servlet.ServletContextEvent;import javax.servlet.ServletContextListener;import javax.servlet.annotation.WebListener; import org.slf4j.Logger;import org.slf4j.LoggerFactory;@WebListenerpublic class MyApplicationListener implements ServletContextListener { private Logger logger = LoggerFactory.getLogger(MyApplicationListener.class); @Override public void contextInitialized(ServletContextEvent sce) { logger.info('liting: contextInitialized'); System.err.println('初始化成功'); ServletContext context = sce.getServletContext(); // IP存儲器 Map<String, Long[]> ipMap = new HashMap<String, Long[]>(); context.setAttribute('ipMap', ipMap); // 限制IP存儲器:存儲被限制的IP信息 Map<String, Long> limitedIpMap = new HashMap<String, Long>(); context.setAttribute('limitedIpMap', limitedIpMap); logger.info('ipmap:'+ipMap.toString()+';limitedIpMap:'+limitedIpMap.toString()+'初始化成功。。。。。'); } @Override public void contextDestroyed(ServletContextEvent sce) { // TODO Auto-generated method stub }}

最后是具體規則設置

import java.io.IOException;import java.util.Iterator;import java.util.Map;import java.util.Set; import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletContext;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.annotation.WebFilter;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse; @WebFilter(urlPatterns='/*')public class IpFilter implements Filter{ /** * 默認限制時間(單位:ms) */ private static final long LIMITED_TIME_MILLIS = 5 * 2 * 1000; /** * 用戶連續訪問最高閥值,超過該值則認定為惡意操作的IP,進行限制 */ private static final int LIMIT_NUMBER = 2; /** * 用戶訪問最小安全時間,在該時間內如果訪問次數大于閥值,則記錄為惡意IP,否則視為正常訪問 */ private static final int MIN_SAFE_TIME = 5000; private FilterConfig config; @Override public void init(FilterConfig filterConfig) throws ServletException { this.config = filterConfig; //設置屬性filterConfig } /* (non-Javadoc) * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain) */ @SuppressWarnings('unchecked') @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) servletRequest; HttpServletResponse response = (HttpServletResponse) servletResponse; ServletContext context = config.getServletContext(); // 獲取限制IP存儲器:存儲被限制的IP信息 Map<String, Long> limitedIpMap = (Map<String, Long>) context.getAttribute('limitedIpMap'); // 過濾受限的IP filterLimitedIpMap(limitedIpMap); // 獲取用戶IP String ip = Ipsettings.getRemoteHost(request); System.err.println('ip:'+ip); //以下是處理限制IP的規則,可以自己寫 // 判斷是否是被限制的IP,如果是則跳到異常頁面 if (isLimitedIP(limitedIpMap, ip)) { long limitedTime = limitedIpMap.get(ip) - System.currentTimeMillis(); // 剩余限制時間(用為從毫秒到秒轉化的一定會存在些許誤差,但基本可以忽略不計) request.setAttribute('remainingTime', ((limitedTime / 1000) + (limitedTime % 1000 > 0 ? 1 : 0))); //request.getRequestDispatcher('/error/overLimitIP').forward(request, response); System.err.println('ip訪問過于頻繁:'+ip); return; } // 獲取IP存儲器 Map<String, Long[]> ipMap = (Map<String, Long[]>) context.getAttribute('ipMap'); // 判斷存儲器中是否存在當前IP,如果沒有則為初次訪問,初始化該ip // 如果存在當前ip,則驗證當前ip的訪問次數 // 如果大于限制閥值,判斷達到閥值的時間,如果不大于[用戶訪問最小安全時間]則視為惡意訪問,跳轉到異常頁面 if (ipMap.containsKey(ip)) { Long[] ipInfo = ipMap.get(ip); ipInfo[0] = ipInfo[0] + 1; System.out.println('當前第[' + (ipInfo[0]) + ']次訪問'); if (ipInfo[0] > LIMIT_NUMBER) { Long ipAccessTime = ipInfo[1]; Long currentTimeMillis = System.currentTimeMillis(); if (currentTimeMillis - ipAccessTime <= MIN_SAFE_TIME) { limitedIpMap.put(ip, currentTimeMillis + LIMITED_TIME_MILLIS); request.setAttribute('remainingTime', LIMITED_TIME_MILLIS); System.err.println('ip訪問過于頻繁:'+ip); request.getRequestDispatcher('/error/overLimitIP').forward(request, response); return; } else { initIpVisitsNumber(ipMap, ip); } } } else { initIpVisitsNumber(ipMap, ip); System.out.println('您首次訪問該網站'); } context.setAttribute('ipMap', ipMap); chain.doFilter(request, response); } @Override public void destroy() { // TODO Auto-generated method stub } /** * @Description 過濾受限的IP,剔除已經到期的限制IP * @param limitedIpMap */ private void filterLimitedIpMap(Map<String, Long> limitedIpMap) { if (limitedIpMap == null) { return; } Set<String> keys = limitedIpMap.keySet(); Iterator<String> keyIt = keys.iterator(); long currentTimeMillis = System.currentTimeMillis(); while (keyIt.hasNext()) { long expireTimeMillis = limitedIpMap.get(keyIt.next()); if (expireTimeMillis <= currentTimeMillis) { keyIt.remove(); } } } /** * @Description 是否是被限制的IP * @param limitedIpMap * @param ip * @return true : 被限制 | false : 正常 */ private boolean isLimitedIP(Map<String, Long> limitedIpMap, String ip) { if (limitedIpMap == null || ip == null) { // 沒有被限制 return false; } Set<String> keys = limitedIpMap.keySet(); Iterator<String> keyIt = keys.iterator(); while (keyIt.hasNext()) { String key = keyIt.next(); if (key.equals(ip)) { // 被限制的IP return true; } } return false; } /** * 初始化用戶訪問次數和訪問時間 * * @param ipMap * @param ip */ private void initIpVisitsNumber(Map<String, Long[]> ipMap, String ip) { Long[] ipInfo = new Long[2]; ipInfo[0] = 0L;// 訪問次數 ipInfo[1] = System.currentTimeMillis();// 初次訪問時間 ipMap.put(ip, ipInfo); }}

然后再在啟動類上加上注解掃描配置包

@ServletComponentScan(basePackages='掃描剛才的MyApplicationListener')

補充:springboot和redis控制單位時間內同個ip訪問同個接口的次數

注:本文中的修改于網上一個錯誤的例子,不知道為什么一個錯誤的例子還被人瘋狂轉載,還都標著原創。。。具體是那個這里就不指出了!

第一步:自定義一個注解

注:其實完全沒必要(這樣做的唯一好處就是每個接口與的訪問限制次數都可以不一樣)。。但是注解這個東西自從培訓結束后沒有在用到過,決定還是再復習下

package com.mzd.redis_springboot_mybatis_mysql.limit;import org.springframework.core.Ordered;import org.springframework.core.annotation.Order;import java.lang.annotation.*;/** * @Retention:注解的保留位置 * @Retention(RetentionPolicy.SOURCE) //注解僅存在于源碼中,在class字節碼文件中不包含 * @Retention(RetentionPolicy.CLASS) // 默認的保留策略,注解會在class字節碼文件中存在,但運行時無法獲得, * @Retention(RetentionPolicy.RUNTIME) // 注解會在class字節碼文件中存在,在運行時可以通過反射獲取到 */@Retention(RetentionPolicy.RUNTIME)/** * @Target:注解的作用目標 * @Target(ElementType.TYPE) //接口、類、枚舉、注解 * @Target(ElementType.FIELD) //字段、枚舉的常量 * @Target(ElementType.METHOD) //方法 * @Target(ElementType.PARAMETER) //方法參數 * @Target(ElementType.CONSTRUCTOR) //構造函數 * @Target(ElementType.LOCAL_VARIABLE) //局部變量 * @Target(ElementType.ANNOTATION_TYPE) //注解 * @Target(ElementType.PACKAGE) ///包 */@Target(ElementType.METHOD)/** * @Document 說明該注解將被包含在javadoc中 */@Documented/** * Ordered接口是由spring提供的,為了解決相同接口實現類的優先級問題 *///最高優先級- - - 個人覺得這個在這里沒必要加//@order,使用注解方式使類的加載順序得到控制@Order(Ordered.HIGHEST_PRECEDENCE)public @interface RequestTimes { //單位時間允許訪問次數 - - -默認值是2 int count() default 2; //設置單位時間為1分鐘 - - - 默認值是1分鐘 long time() default 60 * 1000;}

Ordered:

1、接口內容:我們可以打開這個接口查看它的源碼

SpringBoot 防止接口惡意多次請求的操作

我們可以看到這個接口中只有一個方法兩個屬性,一個是int的最小值,另一個是int的最大值

2、OrderComparator接口: PriorityOrdered是個接口,是Ordered接口的子類,并沒有實現任何方法

SpringBoot 防止接口惡意多次請求的操作

這個Comparator方法的邏輯大致是:

PriorityOrdered的優先級高于Ordered

如果兩個都是Ordered或者PriorityOrdered就比較他們的order值,order值越大,優先級越小

第二步:定義一個aop

package com.mzd.redis_springboot_mybatis_mysql.limit;import com.mzd.redis_springboot_mybatis_mysql.bean.generator.Student;import org.aspectj.lang.JoinPoint;import org.aspectj.lang.annotation.Aspect;import org.aspectj.lang.annotation.Before;import org.aspectj.lang.annotation.Pointcut;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.redis.core.RedisTemplate;import org.springframework.stereotype.Component;import org.springframework.web.context.request.RequestContextHolder;import org.springframework.web.context.request.ServletRequestAttributes;import javax.servlet.http.HttpServletRequest;import java.util.concurrent.TimeUnit;//使用@Aspect注解將一個java類定義為切面類@Aspect@Componentpublic class RequestTimesAop { @Autowired private RedisTemplate<String, String> redisTemplate; //切面范圍 @Pointcut('execution(public * com.mzd.redis_springboot_mybatis_mysql.controller.*.*(..))') public void WebPointCut() { } @Before('WebPointCut() && @annotation(times)') /** * JoinPoint對象封裝了SpringAop中切面方法的信息,在切面方法中添加JoinPoint參數,就可以獲取到封裝了該方法信息的JoinPoint對象. */ public void ifovertimes(final JoinPoint joinPoint, RequestTimes times) { try { //java.lang.Object[] getArgs():獲取連接點方法運行時的入參列表; //Signature getSignature() :獲取連接點的方法簽名對象; //java.lang.Object getTarget() :獲取連接點所在的目標對象; //java.lang.Object getThis() :獲取代理對象本身; //#################################################################### /** * 比如:獲取連接點方法運行時的入參列表 * 不足:如果連接點方法中沒有request參數的話,就沒法獲取request,如果不做處理的話,會報空指針異常的 * 但是所有請求怎么可能沒有request */// Object[] objects = joinPoint.getArgs();// HttpServletRequest request = null;// for (int i = 0; i < objects.length; i++) {// if (objects[i] instanceof HttpServletRequest) {// request = (HttpServletRequest) objects[i];// break;// }// } //#################################################################### /** * 另一種獲取request */ ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); HttpServletRequest request = attributes.getRequest(); String ip = request.getRemoteAddr(); String url = request.getRequestURL().toString(); String key = 'ifovertimes'.concat(url).concat(ip); //訪問次數加一 long count = redisTemplate.opsForValue().increment(key, 1); //如果是第一次,則設置過期時間 if (count == 1) { redisTemplate.expire(key, times.time(), TimeUnit.MILLISECONDS); } if (count > times.count()) { request.setAttribute('ifovertimes', 'true'); } else { request.setAttribute('ifovertimes', 'false'); } } catch (Exception e) { e.printStackTrace(); } }}

提問:就是在aop方法中返回的值在controller層值如何才能獲得,比如:ifovertimes這個方法返回的String類型的值,那我在controller層如何獲得這個值。我現在是將這個值放在了request域里面,不知道有沒有別的更好的值。。。求大神幫助啊。。。

第三步:寫一個測試接口

@RequestTimes(count = 3, time = 60000) @RequestMapping('hello.do') public String hello(String username, HttpServletRequest request) { System.out.println(request.getAttribute('ifovertimes')); if (request.getAttribute('ifovertimes').equals('false')) { System.out.println(username); return 'hello redis_springboot_mybatis_mysql'; } return 'HTTP請求超出設定的限制'; }總結:

這是一個完全可以跑的例子,當然,springboot集成redis這里就不講了。。。

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持好吧啦網。如有錯誤或未考慮完全的地方,望不吝賜教。

標簽: Spring
相關文章:
主站蜘蛛池模板: 久久精品不卡 | 成人高清视频在线观看 | 欧美国产在线观看 | 亚洲欧美日韩另类精品一区二区三区 | 久久久久久91亚洲精品中文字幕 | 亚洲成av | 国产小视频在线播放 | 国产成人精品一区二区三区视频 | 久久精品国产清自在天天线 | 国产精品久久久999 成人亚洲视频 | 午夜爽视频 | 国产精品一二三四区 | 国偷自产av一区二区三区 | 亚洲精品视频免费 | www.国产91 | 国产成人av在线播放 | a视频在线免费观看 | 欧美在线不卡 | 精品少妇一区二区三区在线播放 | 久久99精品视频在线观看 | 2019亚洲日韩新视频 | 国产精品精品视频一区二区三区 | 日韩在线不卡 | 欧美国产一区二区 | 国产乱码精品一区二区三区手机版 | 国产精品久久久久久久久久久小说 | 日韩素人在线 | 色综合天天综合网国产成人网 | 国产伦精品一区二区 | 97超碰在线免费 | 欧美中文字幕一区二区 | 久久久影院 | 成人欧美日韩一区二区三区 | 91视频免费看片 | 国产一级免费在线 | 理论片87福利理论电影 | 亚洲精品久久 | 91在线中文字幕 | 午夜成人免费视频 | 欧美三及片 | 国产精品自产av一区二区三区 | 久草综合网 | 亚洲成人高清 | 日日精品 | 欧美中文一区 | 欧美精品久久久 | 国产亚洲成av人片在线观看桃 | 91免费版在线观看 | 日韩欧美在线播放 | 欧美成人在线网站 | 91影院在线观看 | 国产精品久久久久久久久免费软件 | 亚洲va中文字幕 | 国产成人天天爽高清视频 | 国产精品亚洲一区二区三区 | www.久久爱.cn | 色婷婷一区二区三区 | 插插插干干干 | 国产精品一区二区久久久久 | www.日本精品| 午夜视频网 | 中文字幕亚洲视频 | 中文字幕高清在线 | 久久婷婷香蕉 | 中文字幕国产 | 成人欧美一区二区三区在线观看 | 久久丁香| 国产精品久久久久无码av | 手机看片在线 | 欧美亚洲综合久久 | 国产视频久久久久 | av女人的天堂 | 亚洲一区成人在线观看 | 欧美在线视频一区二区 | 亚洲欧美日韩系列 | 国产精品一区在线观看 | 日本爱爱| 国产一区不卡 | 成人网av | 国产黄色av | 国产精品一二三区 | 一区二区精品视频在线观看 | 天天碰天天操 | 久久这里有精品视频 | 久久久一 | 成人免费的视频 | 日本在线视频观看 | 亚洲精品视频免费 | 欧美一区二区三区精品 | 日韩中文在线 | 亚洲免费人成在线视频观看 | 国产免费一区 | 日韩在线免费 | 国产欧美日本 | 免费观看一级黄色片 | 欧美久久成人 | 亚洲协和影视 | 成人精品在线 | 久久亚洲黄色 | 天天插天天操 | 欧美成人精品 | 欧美激情一区二区三区 | 91麻豆产精品久久久久久 | 日韩精品一区二区三区 | 欧洲尺码日本国产精品 | 成人在线视频观看 | 亚洲香蕉在线观看 | 日韩精品一区在线 | 99视频只有精品 | 99久久久无码国产精品 | 人人干在线 | av国产精品毛片一区二区小说 | www.亚洲精品 | 亚洲一区二区三区四区在线观看 | 色婷婷av一区二区三区软件 | 色吟av| 久久成人免费观看 | 在线欧美成人 | 日韩福利视频 | 成人黄色电影在线观看 | 久久线视频 | 成人精品一区二区三区中文字幕 | av激情在线 | 91免费在线播放 | 欧美精品一区二区三区四区 | 亚州成人 | 天天摸天天干 | 特级a做爰全过程片 | 日韩电影一区二区三区 | 国产一区二区自拍 | 日韩特级 | av一区二区在线观看 | 国产精品久久国产精品 | 中文字幕一区二区三区乱码图片 | 日本成人片网站 | 日韩免费一区 | 久久国产一区视频 | 日韩一区二区在线观看 | www.欧美| 精品二区| 欧美日韩亚洲视频 | 久久精品久久久 | 欧美性18| 狠狠搞狠狠操 | 色综合久久伊人 | 日韩视频一区二区三区 | 婷婷国产成人精品视频 | 国产精品成人国产乱一区 | 久久精品欧美一区二区三区麻豆 | av中文字幕网 | 狠狠入ady亚洲精品经典电影 | 中国特级黄色片 | 天天爽夜夜爽夜夜爽精品视频 | 精品一区二区久久久久久久网站 | 一区二区免费 | 精品国产一区二区三区久久久蜜月 | h免费在线| 一区久久久 | www.色在线 | 涩涩视频大全 | 一区二区在线看 | 日本亚洲视频 | 亚洲国产高清视频 | 国产精品一区二区三区在线免费观看 | 欧美精品在线观看 | 欧美日韩视频网站 | 中文字幕在线综合 | 国产美女精品视频免费观看 | 伊人爽 | 久久久亚洲精品中文字幕 | 久久久精品国产 | 久久精品亚洲精品国产欧美kt∨ | 国产亚洲精品久久久456 | 国内精品视频一区国产 | 国产高清一区 | 激情婷婷| 亚洲成a人 | 欧美综合久久久 | 成人av网页 | 日韩在线播放一区二区 | 国产v日产∨综合v精品视频 | 色婷婷综合久久久中字幕精品久久 | 香蕉久久久 | 亚洲乱码一区二区三区在线观看 | 日本久久久久久 | 伊人网在线观看 | 亚洲精品福利 | 免费观看成人性生生活片 | 国产精品三级久久久久久电影 | 91成人一区 | 波多野结衣av中文字幕 | 久久视频精品 | 成人国产精品久久久 | 成人精品在线视频 | 成人欧美一区二区三区在线播放 | 黄色一级毛片 | www.亚洲成人网 | 久久国产一区二区 | 欧美日本一区二区三区 | 亚洲在线 | 亚洲国产高清在线 | 综合久久亚洲 | 中文字幕在线一区 | 视频一区二 | 亚洲黄色一区二区 | 龙珠z国语版291集全 | 亚洲国产高清在线 | av亚洲在线 | 超碰一区二区三区 | 91精品国产91久久久久久最新 | 国产亚洲欧美一区二区 | 久久久久无码国产精品一区 | 中文在线亚洲 | 国产乱码精品一区二区三区五月婷 | 精品久久久久久久久久久久久久 | 欧美日韩电影一区二区 | 羞羞视频在线免费 | 欧美日韩精品区 | 欧美日韩久久 | 日韩久久影院 | 久久久天天 | 国产精品www | 中文字幕 亚洲一区 | 精品三区 | www.99热| 国产99在线 | 欧美 | 全免一级毛片 | 日本久久久一区二区三区 | 日韩一二三 | 特黄特黄aaaa级毛片免费看 | 一区二区三区国产视频 | 国产精品久久久久久久久免费桃花 | 久久精品欧美一区二区三区麻豆 | 欧美午夜一区 | 国产在线一区二区 | 91精品国产综合久久久久久蜜臀 | 久久成人国产精品 | 99re6热在线精品视频播放 | 亚洲一区二区三区免费观看 | 亚洲一区中文字幕在线观看 | 2018国产大陆天天弄 | 日韩成人在线观看 | 一区二区免费看 | 国产高清在线精品一区二区三区 | www日韩欧美| 国产精品美女www爽爽爽软件 | 99久久电影 | 天堂国产 | 欧美日韩在线观看中文字幕 | 亚洲午夜精品视频 | 中文天堂av | 国内精品在线视频 | 成年人在线看片 | 日韩中文字幕在线观看 | 九色91九色porny永久 | 不卡一二区 | 美女视频一区二区三区 | 欧美一级一区 | 国产激情偷乱视频一区二区三区 | 日本黄色大片免费看 | 久久99精品久久久久久琪琪 | 国产人成精品一区二区三 | 国产麻豆乱码精品一区二区三区 | 久久国产精品电影 | 国产一区二区在线电影 | 99久久九九 | 亚洲欧洲日韩 | 国产 高清 在线 | 久久中文字幕一区二区三区 | 国产91富婆养生按摩会所 | 特级淫片女子高清视频在线观看 | 91在线视频免费观看 | 97国产精品 | а天堂中文最新一区二区三区 | 成人欧美一区二区三区色青冈 | 99久久99久久精品 | 中文字幕乱码亚洲精品一区 | 国产一区二区精品丝袜 | 欧美a级成人淫片免费看 | 九色精品 | 国产精品日本欧美一区二区三区 | 日本精品视频在线观看 | 青草视频网站 | 在线免费av观看 | 国产精品久久久久久久久免费 | 一区二区三区自拍 | 国产精品视屏 | 最新中文字幕在线资源 | 中文字幕日韩欧美一区二区三区 | 午夜精品久久久久久久星辰影院 | 日韩欧美精品区 | 99国产精品一区 | 久久精品国产99国产 | 最新国产精品精品视频 | 国产高清久久久 | 亚洲国产精品va在线看黑人 | 91夜夜蜜桃臀一区二区三区 | 精品xxxx户外露出视频 | k8久久久一区二区三区 | 在线视频 中文字幕 | 亚洲精品免费在线观看 | 久艹精品 | 国产精品色婷婷亚洲综合看 | 一区二区三区国产亚洲网站 | 99爱免费视频 | 综合久久99 | www在线看片| 久久久精品国产 | 在线看免费黄色片 | 在线观看理论电影 | 国产精品久久久麻豆 | 天天躁日日躁性色aⅴ电影 免费在线观看成年人视频 国产欧美精品 | 亚洲伊人久久综合 | 欧美日韩在线综合 | 91精品久久久久久久久 | 亚洲国产精品成人久久久 | 成人激情在线 | 亚洲综合网站 | 午夜视频在线观看网址 | 国产成人高清在线 | 久久久99精品免费观看 | 色综合欧美 | www.av7788.com | 日韩中文字幕在线视频 | 日韩久久久一区二区 | 国产91在线播放精品91 | 午夜剧院官方 | 激情网在线观看 | 免费成人高清 | 久久狠狠| 91精品国产色综合久久 | 国产欧美精品一区二区三区四区 | 国产干干干 | 精品无人乱码一区二区三区 | 欧美日韩视频一区二区 | 国产成人精品一区二区 | 日韩一区二区久久 | 精品久久一二三区 | 日韩精品一区二区三区第95 | 久草综合在线 | 成人免费一区二区三区视频网站 | 国产精品国产精品国产专区不片 | 日韩精品视频在线播放 | 国产91黄色 | 久久精品久 | 国产亚洲精品美女久久久久久久久久 | 国产成人在线播放 | 中文字幕一区二区三区四区 | 99久久99久久精品国产片果冻 | 中文字幕视频二区 | 久久久.com | 亚洲欧美综合 | 国产精品福利视频 | 欧美精品99 | 亚洲国产精品精华液网站 | 日韩中文字幕电影在线观看 | 国产精品久久久久久久久久久久久 | 日韩欧美国产成人一区二区 | 久久久片| 久久久久久久成人 | 欧美性一级 | 成人亚洲天堂 | 日韩在线看片 | 欧美黑人xx | 欧美成年黄网站色视频 | 国产在线拍揄自揄拍视频 | 国产精品视频久久 | 久久久久国产精品一区二区三区 | 国产亚洲精品精品国产亚洲综合 | 天天干天操 | 亚洲综合二区 | 亚洲精品国产成人 | 欧美一级黄视频 | 国产高清精品一区二区三区 | 中文字幕一二三 | 君岛美绪一区二区三区在线视频 | 久久精品2 | www久久久| 亚洲精品乱码久久久久久金桔影视 | 99中文字幕 | 国产一级视频在线播放 | av 一区二区三区 | 国产精品日韩欧美一区二区三区 | 久久久久久久一区二区 | 中文字字幕在线观看 | 成人免费看 | 午夜999| а√天堂中文在线资源8 | 亚洲综合在线网 | 国产亚洲精品美女久久久久久久久久 | 午夜激情在线免费观看 | 中文字幕亚洲区 | av黄在线观看 | 欧美日韩综合精品 | 亚洲精品久久久久久久久久久久久 | 久久国内精品 | 九九九视频精品 | 国产精品美女久久久久久久久久久 | 日韩中文一区二区三区 | 亚洲成人在线观看视频 | 亚洲一区二区三区免费看 | 凹凸日日摸日日碰夜夜 | 一级淫片免费 | 97超碰自拍| 男女视频在线观看 | 精品不卡 | 午夜专区| 中文字幕av一区二区 | 91麻豆精品国产91久久久更新资源速度超快 | 国产成人免费视频网站视频社区 | 精品久久久久久久久久久久久久 | 亚洲一区二区三区 | 狠狠艹 | 国产精品久久 | 欧美精品黄色 | 欧美日韩国产一区二区三区不卡 | 老黄网站在线观看 | 精久久久 | 日韩免费在线观看视频 | 国产a一三三四区电影 | 久久一 | 国产精品久久久久久久一区探花 | 色免费视频 | 凹凸日日摸日日碰夜夜 | 欧美日韩亚洲国产 | 亚洲午夜精品在线观看 | 午夜精品亚洲日日做天天做 | 成人练习生| 日韩视频在线观看视频 | 日韩亚洲视频在线观看 | 一区二区免费视频 | 国产人免费人成免费视频 | 欧美激情一区二区三级高清视频 | 午夜成人免费电影 | 91成人短视频在线观看 | 91麻豆产精品久久久 | 欧美精品乱码久久久久久按摩 | 国产v日产∨综合v精品视频 | 日韩一区二区成人 | 日本黄色大片免费 | 超碰官网 | 一区二区三区精品视频 | 亚洲精品色 | 99成人在线视频 | 日韩素人在线 | 国产视频自拍一区 | 日韩影院在线 | 四虎av| 欧美日韩中文在线观看 | 亚洲成人毛片 | 凹凸日日摸日日碰夜夜 | 羞视频在线观看 | 一区二区三区欧美在线 | 成人免费一区二区三区视频网站 | 国产精品久久久久9999鸭 | 国产一区二区三区免费观看 | 亚洲精品影院 | 日夜夜精品 | 日本爱爱 | 欧美日韩在线一区二区 | 成人在线看片 | 亚洲 欧美 日韩 丝袜 另类 | 国产视频中文字幕 | 亚洲一级毛片 | baoyu133. con永久免费视频 | 欧美日韩成人激情 | 国产精品国产自产拍高清 | 超碰最新网址 | xnxx 日本19 | 天天干天天曰天天操 | 国产高清在线看 | 在线久| 精品久久久久久亚洲综合网 | 亚洲精品久久久 | 国产视频一区二区在线 | 丁香五月亚洲综合在线 | 久久精品中文字幕 | a国产在线观看 | 国产一区二区三区四 | 999久久久国产999久久久 | a级毛片久久 | 一区二区三区四区免费 | 欧美一级成人欧美性视频播放 | 日韩av中文在线 | 伊人久久爱 | 欧美日韩久久精品 | 伊人久久国产 | 久久亚洲欧美日韩精品专区 | 久久精品色欧美aⅴ一区二区 | 久久精品这里热有精品 | 久久亚洲国产精品 | 天堂中文av | 中文字幕一页二页 | 五月婷婷狠狠爱 | 久热精品国产 | 久久久精品影院 | www国产在线观看 | 91视频在线看 | 人成亚洲 | 日韩欧美在线视频 | 国产一区二区精品久久岳 | 可以免费在线观看av的网站 | 一区二区三区在线播放 | 欧美视频在线一区 | 亚洲精品不卡 | 在线一区二区三区做爰视频网站 | 天堂资源网| 超碰人人在线 | 国产精品毛片一区二区在线看 | 人成亚洲 | 91成人区 | 国产人妖在线 | 99久久视频 | 黄色免费成人 | 99在线精品视频 | 欧美久久久久久久久久久 | 国内自拍视频网 | 精品国产91乱码一区二区三区 | 在线观看黄色大片 | 精品久久久久久 | 亚洲美女在线视频 | 久久久91精品国产一区二区精品 | 最新国产中文字幕 | av黄色在线播放 | 91原创视频在线观看 | 中文字幕一区二区三区乱码图片 | 国产性网 | 国产在线视频网站 | 涩涩视频在线观看 | 午夜精品久久久久久久久久久久久 | 91精品国产综合久久久久久 | 欧美一区二区三区电影 | 久久黄色 | 一级毛片免费播放 | 日韩视频在线观看中文字幕 | 黄色在线免费观看 | 日本免费在线 | 国产三级在线观看 | 亚色在线 | av福利网站 | 日韩精品 电影一区 亚洲 | 国产精品二区一区二区aⅴ污介绍 | 亚洲欧美精品久久 | 在线国v免费看 | 欧美高清成人 | 久久久久久日产精品 | 五月激情婷婷六月 | 91最新网站| 国产美女自拍视频 | 欧洲一区| 亚洲精选一区二区 | 91精品国产色综合久久 | 国产精品国产三级国产a | 91网在线观看 | 国产欧美精品一区二区 | 毛片免费在线观看 | 久久九九视频 | 国产精品久久久久久亚洲调教 | 一级片国产 | 欧美久久久久久 | 午夜精品久久久久久久久 | 国产精品大片 | 国产a一三三四区电影 | 爱爱视频免费 | 精品国产一区二区三区在线观看 | 成人午夜影院 | 99热首页| 毛片一区二区三区 | 99免费在线观看视频 | 久久xxx | 日韩中文字幕一区二区 | 狠狠插狠狠操 | 久久精品一区二区 | 超碰在线观看97 | 午夜电影网 | 先锋影音av资源站 | 欧美一级特黄aaaaaaa色戒 | 久久久久免费观看 | 日本一区二区电影 | 欧美日韩在线播放 | 永久在线观看 | 黄色一级毛片 | 九九99久久 | 国产三级在线免费观看 | 国产美女av | 国产一区二区三区av在线 | 亚洲高清在线观看 | 极品久久| 中国妞xxx | avsex国产| 久久草视频| 欧美日韩精品免费观看视频 | 久久久久久国产 | 国产在线精品一区二区三区 | 日韩精品视频在线观看一区二区 | 精品国产乱码简爱久久久久久 | 久久成人精品 | 最新国产视频 | 成人深夜在线 | 国产精品大全 | 狠狠的日 | 久久精品小视频 | 中文字幕一区在线观看 | 欧美午夜一区二区三区免费大片 | 黄色一级大片视频 | 正在播放国产精品 | 在线观看a视频 | 国产在线一区观看 | 精品国产一区二区三区不卡蜜臂 | 国产无套一区二区三区久久 | 黄色免费视频 | 亚洲午夜精品 | 亚洲成人精品影视 | 欧美日韩一区二区三区在线电影 | 国外成人在线视频 |