知识大全 如何在 Linux 下通过 WEB 认证方式上网

Posted

篇首语:盛年不重来,一日难再晨。及时当勉励,岁月不待人。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 如何在 Linux 下通过 WEB 认证方式上网相关的知识,希望对你有一定的参考价值。

如何在 Linux 下通过 WEB 认证方式上网  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  摘要  通过分析 windoze 下 Web 认证过程 提出在 Linux 中用*脚本*实现通过 Web 认证方式上网的方法    问题由来    近来 随着宽带入户 越来越多的 ISP 采用 Web 认证这种接入认证技术 Web 认证从用户的角度看 是指用户在浏览器中通过 Web 页面输入用户名和密码的认证过程 多数 ISP 号称无需客户端软件 实际情况却是 Windoze 下用户可以顺利通过 Web 认证上网 但 Linux 用户却没有这么幸运     分析原因  什么原因呢?解决问题还需从分析认证页面入手 下面的分析主要针对我这里的情况 在 Mozilla 中打开认证页面后 没有显示任何内容 仔细分析认证页面 发现认证页面采用 JavaScripts 编写 并且是针对 IE 编制的 IE 并未完全按照标准使用 JavaScripts IE 对 JavaScripts 做了一些扩充 主要有以下几项     * cab files for download of binaries   * document all   * element innerHTML      详情请参阅 IE 对 JavaScripts 的这些扩充 Mozilla 是不支持的 实际上 Mozilla 对标准 JavaScripts 的支持比 IE 好 所以 这些有 IE 特点的认证页面 Mozilla 等浏览器自然无法通过了     从用户浏览器的角度看 Web 认证除了通过 Web 页面输入用户名和密码外 还需要通过 协议传送客户由 DHCP 获得的 IP 有些 ISP 在用户登录到认证页面时 由浏览器自动下载 cab 文件 然后执行该文件获得用户的 IP 再传给 Web Server 还有些 ISP 在用户通过认证后 会在客户端弹出一个计时窗 定时向 ISP 发送 keep alive 包 当然 Web 认证是一个比较新的方式 还没有形成标准 所以各提供商的方法也不尽相同 所谓各村有各村的高招 你那里的方法就很有可能与我的不同 但道理应该是一样的 根据以上的分析 可以看出 Linux 用户自然不可能用非 IE 兼容的浏览器直接通过登录 Web 认证界面上网啦     解决方法  好了 问题就在这些 Web 页面使用 IE 方言的 JavaScripts 上 有几种解决方法    使用 Linux 下 IE 兼容的浏览器 有吗?谁知道请告诉我    使用 wine + IE 的方法 有成功的吗?大家共同分享    如果将这些鸟语改为普通话 我们就可以用 Mozilla 等非 IE 浏览器通过 Web 认证方式上网了    要求 ISP 提供支持 W C 标准的认证页面    分析 web 认证的原理 编写认证程序     最理想的方法四 可是我等不急 也不一定能等到 也许你比我幸运 我采取第三种方法 对于方法三 你一定会问 认证页面在 Web Server 上 我无权修改 行不通 确实如此 这里有个变通的办法 下载认证页面 按照 JavaScripts 标准修改并保存在本地 每次上网前用本地经过修改的 Web 认证页面而非 Web Server 的认证页面就可以了 具体修改方法 参照 中的对照表 找出认证页面使用 IE 方言的 JavaScritps 根据对照表提供的修改建议对你的认证页面作出相应修改 对于使用 cab 的认证页面 情况就比较复杂 需要分析这个 cab 在你的 JavaScripts 中的用法 判断它的功能 我这里是用它获得本地 IP 所以 我在本地执行脚本获得 IP 来模拟这个功能 似乎 cab 多与 IP 有关     一个例子  * 以我这里为例 我的使用环境   ISP 铁通 ADSL  认证方式 Web 认证  ISP 的接入服务器 华为 Quidway MA E/F (具体型号不能完全确定)  Linux GENTOO rc   Browser Mozilla a/Phoenix     * 在 Linux 下用 mozilla (一定要用非 IE 浏览器获得认证页面 这话有点多余 但有的用户是在 Window$ 下调试的) 访问 ISP 的 WEB 认证页面时 浏览器中没有显示任何内容 根本无法输入帐号和密码 更谈不上通过认证 这难不倒咱 linuxer 查看认证页面(/index jsp)源码 发现这两段 javascript     id= PortalClient   codebase=#version=      var clientIp = PortalClient localIP;  var languagetype = ;  if ((clientIp== )||(clientIp==null))   window parent location ;   else   window parent location +clientIp+ &newbl= +languagetype;      可以看出它用 PortalClient 获得本地的 IP 如果成功 转到 ?ip=你当前的IP 而 Mozilla 不支持它获取 IP (PortalClient 是针对IE的 唉 这个程序编得太短视) 看来问题出在这里 既然如此 我们可以手工加上自己的 IP(这个 IP 是与 ADSL 相联的网卡从 ISP 的 DHCP 服务器获得的地址) 在 Mozilla 地址栏中输入     ?ip=    ^^^^^^^^^^^ ^^^^^^^^^^^    你的ISP认证服务器 你当前的IP    嗒嗒 登录页面出来啦!  赶快输入帐号 密码 按登录按钮(期待中 )   viva!!!  ISP 的首页终于被揪出来啦 在终端中 ping ping 通 没问题     * 至此 在 Linux 下 web 认证方式已经完成 方法很简单 每次上网时 在 mozilla 的地址栏中输入   ?ip=你当前的IP 登录页面出来后 和 IE 中的操作过程完全一样     * 当然你可以把这些步骤写成一个脚本 以后简单执行脚本就可以了   #!/bin/bash  dhcpcd eth   phoenix ?ip=`ifconfig eth |grep inet|sed s/^ *// |sed s/ /:/g |cut f d:` &    说明   eth 是与 ADSL 联的网卡名 根据你的实际情况填写    是我这 ISP 的认证地址   后面一段是获得 eth 的 ip 地址   注意!一定要用非 IE 浏览器获得调试认证页面 因为 IE 可以执行认证页面的 JavaScripts 有些认证过程实际上是执行多个页面完成的 IE 最后停留的页面不一定是起始的认证页面 你有可能漏掉前面的重要信息 我这里就是这种情况     另外一种方法  如果你对方法 不满意 可以用方法 继续分析 web 认证的原理 编写自己的认证程序 其实搞清原理后 实现的方法更简单 更灵活 而且在 ISP 要求客户端定时发送 keep alive 包的情况下 也只能采取这种方法 我是这样做的      用网络分析软件(如 ethereal) 抓取正常认证过程的通讯包   在 windoze 下 用 ethereal 抓包 注意抓包时 除了 IE 不要启动其它产生网络通讯的程序 以免产生干扰数据 保存这些通讯包      分析所抓包的内容   只要看一眼 web 认证过程产生的通讯包 你就明白我为什么说这种方法更简单了 简单讲 web 认证方式实际是客户端用 协议向 ISP 发送用户名 密码和 IP 等内容的过程 客户端读取认证页面 将填写好认证页面表格发送到 ISP 的认证服务器 过程就这么简单      编写生成这些包的程序   用任意一个支持 协议的语言或工具 编写向认证服务器 POST 认证页面中 form 的程序即可 甚至读取认证页面都不需要 我用 curl 和 python 各做了一个 如果你略微了解 协议 只要找到认证页面中向服务器 POST 用户名 密码等数据的 form 然后转换为你采用语言的语法格式就可以了 根本不需要分析认证页面中繁杂的 Javascripts 对计时窗发出的 keep alive 包也采用同样的方法     例子   * 认证页面中的 form     
  action="">   type="hidden" name=connectname value="">   name="connecttype" type=hidden>   type="hidden">   value="192.168.000.000" name=localip type=hidden>   name="IsIndex" type=hidden> 用户名 密 码   name="password" type=password>   type="submit">       * 用 curl 写的一个脚本     #!/bin/bash  /etc/init d/myiptables start  dhcpcd eth     MYIP=`ifconfig eth |grep inet|sed s/^ *// |sed s/ /:/g |cut f d:`  echo $MYIP  UN=   SERVER=     curl trace trace txt A Mozilla d username=$UN&password= &localip=$MYIP&connectname=&connecttype=       说明 curl 是一个用 url 语法传输文件的命令行程序 支持 ftp 等协议 类似 wget   上例中 curl 的命令行参数 A 指明客户端的类型 这是服务器为了安全 需要指明 Mozilla 或 IE 都可以 我更愿意用 Mozilla d 是必需的 表示用 POST 方法 d 后的内容就是用户名 密码 IP 地址等信息 根据你的认证页面中 form 的 input 项目填写 内容与其保持一致 参数间用 & 分开 后面是认证页面的地址 执行这个脚本后 返回 OK 表示认证成功 否则 仔细检查 d 后的参数 cha138/Article/program/Oracle/201311/17065

相关参考

知识大全 Linux下通过C++语言代码来操作MySQL数据库

Linux下通过C++语言代码来操作MySQL数据库  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 你们现在一般都通过什么方式租房子呢

你们现在一般都通过什么方式租房子呢,关于在北京租房的问题---大家一般都是通过什么方式租房子的呢方式有很多,上网找、看报纸、找小区、朋友帮忙联系等其实现在大部分人都是先上网找的现在关于租房的网站还是比

知识大全 销售方把增值税发票作废了,购方在不知情的情况下还能验证通过吗

销售方把增值税发票作废了,购方在不知情的情况下还能验证通过吗功能上可以验证抵扣,但是行为上不建议去认证。因为如果认证了作废发票,次月月初会被国税风险系统提示出来。提示到认证方的税务局,然后找认证公司核

知识大全 本月收到一张供应商开的红字发票已在国税局网站认证通过,是否还必须需要再做进项转出

本月收到一张供应商开的红字发票已在国税局网站认证通过,是否还必须需要再做进项转出?你看下能否在认证的那里删除掉。如果不行就直接问专管员吧收到的红字发票不需要网上认证的但必须得做进项转出如果满意请采纳为

知识大全 在Linux下增加硬盘

在Linux下增加硬盘  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  问我使用的是Linux系统

知识大全 图解RedHat拨号上网

图解RedHat拨号上网  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  安装Linux    我

网上认证时返回认证信息的具体含义是什么?

含义有:  自动通过,校正通过:表示已经通过认证。  当月已认证:表示该发票在这个月已经通过认证,无需再认证。  认证未通过:表示该发票未能通过认证,企业可在核实修改信息后再次认证。  超过认证抵扣期

知识大全 使用eclipse调用.net web service

  以前我用的开发框架都是net现在换成javaEE框架和linux平台还需要一段时间的学习有时在测试工作中需要实现一些功能但是又不会用java实现怎么办呢?这里有一个方法使用net的框架开发webs

知识大全 在linux下安装0racle10g的艰难之旅

  在linux下安装oracle是一件令人生畏的事情其复杂程度远远超过安装linux操作系统本身如果能够进行成功的安装oracle那么同时也就顺便掌握了linux一些技术本文介绍在redhatlin

知识大全 在Linux下装配Oracle

在Linux下装配Oracle  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  由于Oracle自