连接热点之后自动拉起浏览器的总结
来源:互联网 发布:淘宝客 微信 编辑:程序博客网 时间:2024/06/05 15:40
这个其实应用场景还是蛮多的。
比如机场弹的登陆界面什么的。
Android机器在连接热点时WifistateMachine都出处于CaptivePortalCheck。在这种状态下会去检查该热点是否具备CaptivePortal功能。如果具备则服务器端会告知客户端指定界面,然后客户端就会去访问此界面。
这里我们认为开wifi端的也就是客户端为C端。开AP的也就是服务器端为S端。
具体的流程如下:
1,C端连接上AP之后将会发包访问http://client3.google.com/generate_204,在这一步正常情况下要先进行DNS解析
2,而这里不是正常情况,so,直接用
iptables-t nat -A PREROUTING -d 0.0.0.0/0 -p udp --dport 53 -j DNAT --to192.168.43.1:53530
进行端口转发。(DNS默认端口53,无法监听。0~1023都是特殊端口,一般只分配给特殊服务,普通apk不能监听,所以要转发,此外,21端口是ftp,25端口是smtp,80是http,135分配给RPC)
监听53530,发现http://client3.google.com就将http://client3.google.com解析成AP的ip(Android机器自建热点的ip和苹果机器自建热点的ip都是固定的)。
3,C端将访问解析到的ip,默认端口80,再次用
iptables -t nat -APREROUTING -d 0.0.0.0/0 -p tcp --dport 80 -j DNAT --to 192.168.43.1:8080
转发。监听8080端口,监听到204之后,就设置response状态:response.setStatusCode(HttpStatus.SC_MOVED_TEMPORARILY);
SC_MOVED_TEMPORARILY是302标示服务器重定向,客户端需要重新获取新的uri来进行补充定位。
4,C端收到302状态后会认为S端Captive Portal 有效并且需要重定位,默认将会拉起浏览器,国内会先访问http://www.baidu.com,
5,在S端进行DNS解析,还是要进行端口转发,然后将baidu.com解析为指定界面。
这样C端就会拉起指定界面了。
ok,结束了,在某手机上应该是可行的。有什么说得不对的地方也敬请指导哈哈。
powered by @ 弹跳
- 连接热点之后自动拉起浏览器的总结
- yarn 更換调度器之后,正在运行的作业可以自动拉起
- 自动拉起
- 自动连接上wifi的Ap热点
- Shell脚本实现进程的自动拉起
- 浏览器拉起应用,获取参数
- wifi热点创建和自动连接
- wifi热点创建和自动连接
- android 指定wifi热点自动连接
- Mysql 断开连接之后自动重新连接
- android自动连接接入自己WIfi热点的设备的IP地址
- Android开发——自动连接指定SSID的wifi热点(不加密/加密)
- Android开发——自动连接指定SSID的wifi热点(不加密/加密)
- Android开发——自动连接指定SSID的wifi热点(不加密/加密)
- wifi开发——自动连接指定SSID的wifi热点(不加密/加密)
- Android开发——自动连接指定SSID的wifi热点(不加密/加密)
- Android开发——自动连接指定SSID的wifi热点(不加密/加密)
- Android开发——自动连接指定SSID的wifi热点(不加密/加密)
- linux(ubuntu)ssh有密码访问出现的问题
- 2G、3G、4G与WiFi的一些认识
- android linux sdk 纯命令行式升级
- C#TreeView控件与XML相关操作
- libLAS1.8.0 编译和配置(VS2013+Win7 64)(一)
- 连接热点之后自动拉起浏览器的总结
- AngularJS简介
- Shell运算符
- Salesforce开发工具之Metaforce - 同步/编辑代码
- 封装接口返回类
- button响应点击事件的方法
- java代码运行原理分析
- 爬虫系列之二 urllib2库的使用上
- lua 库