文档章节

http reffer 里面获取关键字

Beaver_
 Beaver_
发布于 2015/05/18 20:16
字数 535
阅读 134
收藏 0
/**
 * 从http reffer 里面获取关键字,并提取中文
 * 
 * @author  doctor
 *
 * @time  2015年5月18日
 */
public class RefererParser {

public static void main(String[] args) throws MalformedURLException, UnsupportedEncodingException {

String refererUrl = "http://m.aicai.com/p/vmall.do";
System.out.println(getKeyWord(refererUrl));A
refererUrl = "http://m.aicai.com/p/toutiao.do?vt=5&agentId=2333789";
System.out.println(getKeyWord(refererUrl));

refererUrl = "http://m1.baidu.com/from=942d/s?word=15070%E6%9C%9F%E8%83%9C%E8%B4%9F%E5%BD%A9&sa=tb&ts=0934861&t_kt=53";
System.out.println(getKeyWord(refererUrl));
refererUrl = "https://www.baidu.com/link?url=VX10ANhmzaeQJwd6RpRFFgfco-NiY0dKPoxe5qat_4jphpB0eiKgBjavWlS-OWOa&wd=%E8%83%9C%E8%B4%9F%E5%BD%A9%20%E6%96%B0%E6%B5%AA&issp=1&f=8&ie=utf-8&tn=baiduhome_pg&inputT=3268&oq=url%20%20";
System.out.println(getKeyWord(refererUrl));

System.out.println("/////////");
refererUrl = "http://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&tn=monline_dg&wd=%E6%96%B0%E6%B5%AA%E5%BD%A9%E7%A5%A8&rsv_pq=b696fdc40000363a&rsv_t=2829ceWdMJsdUztZA2mw8SBQvXKTJhTO%2B4FGnxRh71T9ThZdiQ8ZbB0GhydBdH8t2w&rsv_enter=1&rsv_sug3=8&rsv_sug1=8&rsv_sug2=0&inputT=11&rsv_sug4=3887&rsv_sug=1&bs=html%E9%A6%96%E8%A1%8C%E7%BC%A9%E8%BF%9B";
System.out.println(getChinese(getKeyWord(refererUrl)));

System.out.println("/////////");
refererUrl = "http://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&tn=monline_dg&wd=%E6%96%B0%E6%B5%AA%E5%BD%A9%E7%A5%A8%20caipiao%20%20%20%2C&rsv_pq=e8ed54cd0000c1c3&rsv_t=dbdeTCYnb9Wn8bVW7DQPEBBV7I5375CmQnMradi3%2BtvPGXWzk%2F1SerPZqf75Faugjg&rsv_enter=1&inputT=4744&rsv_sug3=17&rsv_sug1=12&rsv_sug2=0&rsv_sug4=5882&bs=%E6%96%B0%E6%B5%AA%E5%BD%A9%E7%A5%A8";

System.out.println(getKeyWord(refererUrl));
System.out.println(getChinese(getKeyWord(refererUrl)));

System.out.println("=============search.aol");
refererUrl = "http://search.aol.com/aol/search?s_it=topsearchbox.search&s_chn=prt_aol20&v_t=comsearch&q=%E6%96%B0%E6%B5%AA%E5%BD%A9%E7%A5%A8+caipiao+++%2C";

System.out.println(getKeyWord(refererUrl));
System.out.println(getChinese(getKeyWord(refererUrl)));

System.out.println("=============baidu");
refererUrl = "http://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&tn=monline_dg&wd=%E6%96%B0%E6%B5%AA%20%E5%BD%A9%E7%A5%A8%20%E7%BD%91&rsv_pq=964ca37a00015711&rsv_t=f20flRQL%2FiDQHho2cKC7kCqbZY%2FK8vdyavn1ccP0kw3uAClvp9DKFv8aGtr6Rk5YIw&rsv_enter=1&inputT=334&rsv_sug3=45&rsv_sug1=20&rsv_sug2=0&rsv_sug4=648&bs=%E6%96%B0%E6%B5%AA%20%E5%BD%A9%E7%A5%A8%20%E7%BD%91%20dd";

System.out.println(getKeyWord(refererUrl));
System.out.println(getChinese(getKeyWord(refererUrl)));

}

private static String getKeyWord(String reffer) throws MalformedURLException, UnsupportedEncodingException {
// 要支持很多,参考https://github.com/snowplow/referer-parser/blob/master/java-scala/src/main/resources/referers.yml
HashSet<String> keyWord = Sets.newHashSet("query", "wd", "word", "kw", "k", "q");
URL url = new URL(reffer);

if (StringUtils.isBlank(url.getQuery())) {
return null;
}
final Map<String, String> queryMap = Splitter.on("&").withKeyValueSeparator("=").split(url.getQuery());
if (queryMap.isEmpty()) {
return null;
}

List<Entry<String, String>> list = queryMap.entrySet().stream().filter(p -> keyWord.contains(p.getKey())).collect(Collectors.toList());
if (list.isEmpty()) {
return null;
}
Entry<String, String> entry = list.get(0);

// 编码问题部分有待验证,不同引擎规则到底是怎么样的
String encode = queryMap.get("ie");
if (StringUtils.isNotBlank(encode)) {
if (encode.equalsIgnoreCase("gb2312")) {
encode = "gbk";
}
} else {
encode = "utf-8";
}
String result = URLDecoder.decode(entry.getValue(), encode);
return result;
}

private static String getChinese(final String content) {
return content.replaceAll("[a-zA-Z]", " ").replaceAll("\\s+", " ");
}
}


© 著作权归作者所有

Beaver_
粉丝 24
博文 136
码字总数 36878
作品 0
杨浦
程序员
私信 提问
86.Apache(httpd)配置--防盗链配置和访问控制

一、配置防盗链 通过防盗链的方式,可以设置限制第三方的站点通过引用的方式获取服务器上的图片,数据等,如果想要获取本站点的图片数据,只能通过本站点访问获取,这样也有效的减少了服务器...

闪电王
2018/03/11
0
0
如何防止刷票,session验证码防不住

公司经常会做一些活动,有一些需要投票神马的,投票吧,如果做每个IP只能投票一次,每天,但是发现有人能刷票,结果就加上验证码,验证码就是放到session里,然后还是发现有人可以,而且验证...

枫爱若雪
2012/11/01
5.7K
19
HTML链接上把当前的URL做为参数传递时,注意要对URL进行encode,在JS中我们这样实现

本文转自博客园张占岭(仓储大叔)的博客,原文链接:HTML链接

mcy247
2017/12/06
0
0
【被刷注册】用户注册说身份证已经被注册

现在我注册程序 有以下验证 1. 图形验证码。 (简易) 2.手机验证码 4.ip限制 5.分步骤注册 reffer检测 6. 第三方支付平台实名验证 。。。最近由用户注册说身份证已经被注册。并可提供手持身份...

Json_Jun
2016/05/10
985
8
java中可重入锁的学习总结

经常看到网上的人说,可重入锁一词,但是总是没怎么了解,到底什么是可重入锁,一直是一个模糊的概念,下面来大致总结一下。 可重入锁:指的是同一个线程多次试图获取它所占有的锁,请求会成...

双月通天
2016/06/07
93
0

没有更多内容

加载失败,请刷新页面

加载更多

全面兼容IE6/IE7/IE8/FF的CSS HACK写法

浏览器市场的混乱,给设计师造成很大的麻烦,设计的页面兼容完这个浏览器还得兼容那个浏览器,本来ie6跟ff之间的兼容是很容易解决的。加上个ie7会麻烦点,ie8的出现就更头疼了,原来hack ie...

前端老手
12分钟前
3
0
常用快递电子面单批量打印api接口对接demo-JAVA示例

目前有三种方式对接电子面单: 1.快递公司:各家快递公司逐一对接接口 2.菜鸟:支持常用15家快递电子面单打印 3.快递鸟:仅对接一次,支持常用30多家主流快递电子面单打印 目前也是支持批量打...

程序的小猿
15分钟前
5
0
Yii 框架中rule规则必须搭配验证函数才能使用

public $store_id;public $user_id;public $page;public $limit;public $list;public $mch_list;public $cart_id;public $is_community;public $shop_id;public $cart_typ......

chenhongjiang
17分钟前
2
0
Flutter使用Rammus实现阿里云推送

前言: 最近新的Flutter项目有“阿里云推送通知”的需求,就是Flutter的App启动后检测到有新的通知,点击通知栏然后跳转到指定的页面。在这里我使用的是第三方插件Rammus来实现通知的推送,之...

EmilyWu
18分钟前
40
0
Knative 实战:三步走!基于 Knative Serverless 技术实现一个短网址服务

短网址顾名思义就是使用比较短的网址代替很长的网址。维基百科上面的解释是这样的: 短网址又称网址缩短、缩短网址、URL 缩短等,指的是一种互联网上的技术与服务,此服务可以提供一个非常短...

阿里巴巴云原生
33分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部