在Linux下通过WEB认证方式上网linux网页认证上网




在Linux下通过WEB认证方式上网linux网页认证上网

2022-07-20 20:24:23 网络知识 官方管理员

摘要

  通过分析windoze下Web认证过程,提出在Linux中用*脚本*实现通过Web认证方式上网的方法

问题由来

  近来,随着宽带入户,越来越多的ISP采用Web认证这种接入认证技术。Web认证从用户的角度看,是指用户在浏览器中通过Web页面输入用户名和密码的认证过程。多数ISP号称无需客户端软件,实际情况却是:Windoze下用户可以顺利通过Web认证上网,但Linux用户却没有这么幸运。

分析原因

  什么原因呢?解决问题还需从分析认证页面入手,下面的分析主要针对我这里的情况。在Mozilla中打开认证页面后,没有显示任何内容。仔细分析认证页面,发现认证页面采用JavaScripts编写,并且是针对IE编制的。IE并未完全按照标准使用JavaScripts。IE对JavaScripts做了一些扩充,主要有以下几项:

  *.cabfilesfordownloadofbinaries;
  *document.all;
  *element.innerHTML;
  ...

  详情请参阅http://www.stopbadtherapy.com/standards.shtml

IE对JavaScripts的这些扩充,Mozilla是不支持的,实际上Mozilla对标准JavaScripts的支持比IE好。所以,这些有IE特点的认证页面Mozilla等浏览器自然无法通过了。
从用户浏览器的角度看,Web认证除了通过Web页面输入用户名和密码外,还需要通过http协议传送客户由DHCP获得的IP。有些ISP在用户登录到认证页面时,由浏览器自动下载.cab文件,然后执行该文件获得用户的IP,再传给WebServer。还有些ISP在用户通过认证后,会在客户端弹出一个计时窗,定时向ISP发送keep-alive包。当然,Web认证是一个比较新的方式,还没有形成标准,所以各提供商的方法也不尽相同,所谓各村有各村的高招,你那里的方法就很有可能与我的不同,但道理应该是一样的。根据以上的分析,可以看出Linux用户自然不可能用非IE兼容的浏览器直接通过登录Web认证界面上网啦。

  解决方法

  好了,问题就在这些Web页面使用IE方言的JavaScripts上,有几种解决方法:

  1。使用Linux下IE兼容的浏览器,有吗?谁知道请告诉我。
  2。使用wine+IE的方法,有成功的吗?大家共同分享。
  3。如果将这些鸟语改为普通话,我们就可以用Mozilla等非IE浏览器通过Web认证方式上网了。
  4。要求ISP提供支持W3C标准的认证页面。
  5。分析web认证的原理,编写认证程序。

  最理想的方法四,可是我等不急,也不一定能等到,也许你比我幸运。我采取第三种方法,对于方法三,你一定会问:认证页面在WebServer上,我无权修改,行不通。确实如此,这里有个变通的办法:下载认证页面,按照JavaScripts标准修改并保存在本地,每次上网前用本地经过修改的Web认证页面而非WebServer的认证页面就可以了。具体修改方法,参照http://www.stopbadtherapy.com/standards.shtml中的对照表,找出认证页面使用IE方言的JavaScritps,根据对照表提供的修改建议对你的认证页面作出相应修改。对于使用.cab的认证页面,情况就比较复杂。需要分析这个.cab在你的JavaScripts中的用法,判断它的功能,我这里是用它获得本地IP。所以,我在本地执行脚本获得IP来模拟这个功能。似乎.cab多与IP有关。

  一个例子

  *以我这里为例,我的使用环境:

  ISP:铁通ADSL

  认证方式:Web认证

  ISP的接入服务器:华为QuidwayMA5200E/F(具体型号不能完全确定)

  Linux:GENTOO1.4rc-3

  Browser:Mozilla1.4a/Phoenix0.5

  *在Linux下用mozilla(一定要用非IE浏览器获得认证页面,这话有点多余,但有的用户是在Window$下调试的),访问ISP的WEB认证页面时,浏览器中没有显示任何内容,根本无法输入帐号和密码,更谈不上通过认证。这难不倒咱linuxer,查看认证页面(/index.jsp)源码,发现这两段javascript:

复制代码

发表评论:

最近发表
网站分类
标签列表