手机java扩展百度搜索跳转_利用referer属性,记录百度搜索跳转参数

importjava.io.IOException;importjava.net.URLDecoder;importjava.text.SimpleDateFormat;importjava.util.ArrayList;importjava.util.Date;importjava.util.UUID;importjavax.servlet.Filter;importjavax.servlet.FilterChain;importjavax.servlet.FilterConfig;importjavax.servlet.ServletException;importjavax.servlet.ServletRequest;importjavax.servlet.ServletResponse;importjavax.servlet.http.Cookie;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;/***@authorxuejt

* 搜索引擎访问过滤器*/

public class KeyWordFilter implementsFilter {/*** 要记录的搜索引擎域名*/

private static ArrayList DOMAINLIST = null;/*** 需要转码的key列表*/

private static ArrayList DECODEWORDLIST = null;/*** 自定义记录cookie名*/

private static final String SEARCH_COOKIE_KEY = "search_cookie";/*** 自定义cookie过期时间*/

private static final int COOKIE_MAX_AGE= 1440;private static final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

@Overridepublic voiddestroy() {

}

@Overridepublic voiddoFilter(ServletRequest request, ServletResponse response,

FilterChain chain)throwsIOException, ServletException {try{

HttpServletRequest req=(HttpServletRequest) request;

HttpServletResponse res=(HttpServletResponse) response;//获取referer

String referer = req.getHeader("referer");//循环过滤域名

for(String domain : DOMAINLIST) {if (null != referer &&referer.contains(domain)) {//如果是从指定域名跳转到本站时,需要记录跳转前参数

System.out.println("************** param **************");if (referer.contains("?")) {

String[] searchParams= referer.substring(referer.indexOf("?") + 1).split("&");

String[] p= null;for(String param : searchParams) {

p= param.split("=");//判断当前参数是否需要中文转码

if (DECODEWORDLIST.contains(p[0])) {

p[1] = URLDecoder.decode(p[1], "UTF-8");

}

System.out.println(p[0] + " - " + p[1]);

}

}

System.out.println("************** param **************");

System.out.println();//获取当前访问的cookie列表

Cookie[] cookies =req.getCookies();if (cookies != null && cookies.length > 0) {

System.out.println("************** cookie **************");int index = 0;

Cookie tmpCookie= null;while (tmpCookie == null && index

if(cookies[index].getName().equals(SEARCH_COOKIE_KEY)) {

tmpCookie=cookies[index];

System.out.println("已有cookie - " +tmpCookie.getValue());

}

index++;

}if (tmpCookie == null) {//如果没有自己设定的cookie,表示是新用户访问或cookie已过期

tmpCookie = newCookie(SEARCH_COOKIE_KEY, UUID.randomUUID().toString());

tmpCookie.setMaxAge(COOKIE_MAX_AGE);//设置cookie过期时间

res.addCookie(tmpCookie);

System.out.println("设置新cookie - " +tmpCookie.getValue());

}

System.out.println("本次访问时间 - " + sdf.format(newDate()));

System.out.println("本次访问的ip - " +req.getLocalAddr());

System.out.println("************** cookie **************");

}

}

}

}catch(Exception e) {

e.printStackTrace();

}

chain.doFilter(request, response);

}

@Overridepublic void init(FilterConfig arg0) throwsServletException {/** 增加要捕获域名*/DOMAINLIST= new ArrayList();

DOMAINLIST.add("www.baidu.com");/** 增加要转码的参数名*/DECODEWORDLIST= new ArrayList();

DECODEWORDLIST.add("wd");

DECODEWORDLIST.add("bs");

DECODEWORDLIST.add("oq");

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值