日期:2014-05-16  浏览次数:20715 次

在宾馆上网,打开IE输入网址后,弹出一个用户名密码的网页。请问这个功能如何实现?各位帮一下忙,如果可以解决问题,我可以给钱,谢谢了。
在宾馆上网,打开IE输入网址后,弹出一个用户名密码的网页。请问这个功能如何实现? 
我现在在做一个类似的功能: 
  用户通过我们公司的网关(路由器)上网,当用户第一次在IE浏览器中输入网址后,首先弹出一个提示页面注意事项。然后自动跳转到用户想要出的网页。如何实现这个功能? 
  注意事项的网页固化在网关内,网关用的是LINUX2.4内核。 

  有没有人有这方面的经验,提示一下,谢谢!! 


补充一下: 
不能在用户上装客户端程序,只能改网关上的程序,应用层或内核。 

我说一下我的基体思路,不知可不可行? 
1. 用户在IE中输入网址通过我公司的网关上网。 
2. 网关发现第一个访问80端口的TCP协议数据包(要在linux内核中实现),不转发此数据包,但记下他要访问的网址。给用户返回一个提示页面,此提示页面n秒后自动跳转到刚在记下的页面。 
3. 用户IE收到提示页面后,会在N秒后自动跳转。 

这里的问题的关键在于拦截用户的第一个访问80端口的TCP协议数据包,并返回提示页面。这个要在IP层实现此功能。要熟悉LINUX内核中的网络部分。 
不知各位对这个方案有什么看法? 




------解决方案--------------------
完全实现的话,你要做一个透明代理服务器,透明是因为你的程序位于网关,用户的浏览器不会设置proxy。
代理的话就比较容易实现你要的功能了,
1.你可以和用户建立连接,然后在用户发送第一个GET请求时,给它回你的提示页面,自动跳转可以在提示页面里实现,比如说javascript或者直接用下面的刷新语句
<meta http-equiv="REFRESH" content="10;url=http://www.xxxxxx.com"> 
其中10是延时时间,http://www.xxxxxx.com是用户GET请求的页面,你可以从GET请求中获取。
2.你要记下来这个IP已经给过提示页面了,以后这个ip的数据就直接bypass就好。