另类过滤外国浏览者
2015-09-13 09:59
197 查看
前言
原创文章,欢迎转载,请保留出处。 有任何错误、疑问或者建议,欢迎指出。 我的邮箱:Maxwell_nc@163.com
作为一些版权网站,不希望给非本国的人浏览,通常常见的做法是采用全网过滤器过滤访问者的IP,比如典型的youku就是在浏览视频前分析访问者的IP,如果是海外用户则提示所在地区无法播放,然后记录下来。可是作为一个小公司并没有一个比较完善的IP库(可以采用第三方提供接口),而且这种做法无法避免代理浏览的问题。
缘由
前些天在浏览国外网站时发现某网站一直提示403 forbidden,理论上这种网站不需要账户登录应该不存在浏览者权限不足,当时首先怀疑是某防火墙的问题,于是采用代理浏览该网站发现还是提示403 forbidden。在确定不是防火墙的问题后,那就要确定下是否是网站问题,十分确定的是搜索网站的爬虫能爬到页面内容,网站没有任何问题。
后来怀疑是不是被重定向了,查看请求和响应,只有403响应码。
最后还折腾了是否chrome浏览器问题,又换了IE依然无解。
解决
最后灵机一动,HTTP请求头中看到一个Accept-Language:zh-CN,心想会不会是由这个属性来判断,于是试了下把header信息修改成en-US后请求发现内容可以显示了….这真是一种另类的过滤外国浏览者的方法,这种方法实现起来比较简单,采用网站全局过滤器,在doFilter中判断请求头里的Accept-Language是否是单一的en-US就可以了(注意不要采用contains,应该用equals),一般的浏览者或者浏览器都会设置成本地语言,采用这种方案再加上IP过滤,就可以过滤大部分人了。
相关文章推荐
- centos 特殊权限 各种搜索命令 lsattr ,chattr,suid,sgid,sbit,file,type是否是内置命令,stat文件属性 ,whereis,locate,find,ln 内部命令和外部命令 第五节课
- 计算两个GPS坐标的距离方法 - Java语言
- ios-清除本地缓存(三种方式)
- Iterator抽取迭代基类/Memento抽取备忘管理类/Interpreter终结非终结解释
- 单链表(四)——链表的反转
- java 集装箱 arraylist 用法
- 常见linux命令释义(第六天)——shell环境变量
- Strut2常规配置属性
- IOS之Core Foundation框架和Cocoa Foundation框架区别
- LeetCode----House Robber
- 个人学习笔记---linux内核同步办法的选择
- JVM内存管理深入垃圾收集器与内存分配策略
- 单链表(三)——链表的删除
- linux 系统编程1
- C++虚函数表
- 数据结构(与算法)可视化
- 谷歌新Logo如何做到只有305字节
- JVM分代垃圾回收策略的基础概念
- Python 实现栈
- ios-post请求