web广告推送功能开发总结
来源:互联网 发布:java监控系统日志抓取 编辑:程序博客网 时间:2024/05/16 03:42
这段时间研究了下web广告推送功能,简单的需求如下:
1,android手机连上wifi后,提示认证登录,iphone 手机连上wifi后自动弹出指定页面
2,android手机点击认证登录,iphone手机弹出广告页面后,用户点击上网后,可以正常上网。
3,每次断开wifi重连时都需要弹广告,一天最多弹3次,每个连接客户端最多弹3次。3次后,断开wifi重连不在弹出广告,可以正常上网。
就这三个需求。我们网关系统是linux系统。所以实现方法很简单,利用iptables防火墙即可实现。实现步骤主要如下:
1, 利用iptables 防火墙,将所有访问80端口的上网数据拦截到本地。
iptables -t nat -A PREROUTING -s 192.168.0.x -p tcp --dport 80 -j REDIRECT
2,在本地创建一个socket,监听80端口的数据包,根据数据包中客户端地址,得到客户端mac地址,根据mac地址判断出设备是否是iphone手机还是
android手机。
mac地址跟ip地址是一样的,是全球唯一的,不同的厂商分配的mac地址不一样。所以得到mac地址就可以得到设备的生产厂商。
3,过滤掉手机自带app的http请求报文方法是根据http请求中的useragent来判断是否是浏览器请求。(这个方法虽然不是特别严谨,但是没发现更好的办法,如果有更好的办法请指点),只有浏览器请求报文才发302重定向报文给客户端,app的访问报文一般是不会带useragent。以此来区分报文,因为只有web客户端才能接收web重定向的页面,app是无法访问我们制定的web页面的。所以app的http请求要过滤掉。这个非常重要。
4,判断访问的手机类型后,如果是iPhone手机,则发301重定向给客户端,并且删除拦截上网数据的规则。
HTTP/1.1 302 Moved Temporarily\r\nAllow: GET,POST,HEAD\r\nMIME-Version: 1.0\r\nServer: NetEngine Server 1.0\r\nPragma: No-Cache\r\nLocation: http://%s/wifi\r\n\r\n
这是一个302地址重定向http报文,直接send给拦截的客户端即可实现访问网页的转移。Location的地址是你要客户端转向去访问的地址。
4,如果判断访问请求不是浏览器的http报文,则直接给客户端回应302重定向报文。
后果是要想让android手机app能正常使用,手机连上wifi后必须打开浏览器,提示连接wifi认证后,才能正常上网。iPhone手机不会有问题,原因是iPhone手机连上具有重定向的wifi热点后会自动去访问iPhone默认的网站,然后路由器将这个访问请求拦截下来推送一个302重定向后,iPhone就会自动去访问我们制定的web页面了。
效果就是iPhone手机一连上wifi自动弹出广告,而android手机不会,有些高系统版本的android手机也有这个功能了。但是大部分android系统还是没有这个特性。
5,手机浏览器的useragent总结了一些如下:
Mozilla
AppleWebKit
Mobile Safari
MQQBrowser
Apple WebKit
UCWEB
Firefox
Fennec
Opera
Presto
BrowserNG
KscOAuth
QQMusic
做好以上4点,基本的web广告推送功能就ok了,其中还有些问题需要考虑,我的方案还不是很好。
1,如何区分手机app的http请求报文和手机浏览器的http报文
2,如何让android手机也在连上wifi时自动弹出广告。(可能广告路由器根本做不到,需要android系统自己去支持吧)
3,广告服务器这块没有很好的考虑如何搭建,如何可以快速更新广告内容,如何管理广告内容。
这是一个不完善的设计,只是我自己的一些研究,如果要达到商用的地步还需要考虑很多东西。欢迎大家指正
- web广告推送功能开发总结
- WEB开发入门总结-记用户注册功能
- 总结Android应用的推送功能
- iOS和Android推送功能总结
- IOS开发之高级功能---远程推送
- 广告墙、推送广告、广告条
- 手机消息推送之web端开发
- 遭遇电信推送广告
- 平凡的推送广告
- android,推送广告
- 推送广告检测器3.0
- wifi 广告推送 小记
- 小米手机推送广告
- 去除取消WPS的广告推送、WPS热点以及推荐软件等骚扰功能
- 连接功能开发总结
- web-app 消息推送功能(浏览器为chrome59,firefox54)
- Web常用功能测试总结
- web推送
- 同前面的ABCD四人过桥问题,用程序实现
- 苹果App Store审核指南中文翻译(2014.9.3更新):新增扩展、HealthKit、HomeKit以及Test
- 基于MFC的Hough直线检测
- HDU 1266 Reverse Number(字符串逆转 水题)
- Oj评分中途结束的情况
- web广告推送功能开发总结
- 如何使用Google Volley网络库发起带Header的HTTP请求?
- 【AC自动机】HDU 2222 Keywords Search 裸题
- Java Web文件下载1——文件下载实现和乱码处理
- thinkphp 查询语言
- atoi的正确实现
- Flatten Binary Tree to Linked List
- Hibernate读书笔记之映射,集合映射,关联关系
- Ioc与DI