由于实验室项目要求,需要实现动态控制路由配置信息,我们知道,买到路由之后需要访问:http://192.168.1.1 页面进行路由配置。但是为了实现动态配置,不需要人手工操作,甚至定时任务配置的时候,就需要进一步研究对路由配置的相关操作了。
需要实现的目标是像一些商家提供的带web认证的Wifi服务,如飞机场的CMCC接入,你连接Wifi热点后还不能上网,他会自动跳转到web认证页面实施认证,通过之后才能实现上网。但是我们希望通过服务器主机自动更改添加web认证账户,比如像商户可以发放免费上网电子券,券上面有对应的账号。如果数量多的话,靠人工一个个添加配置是很麻烦的。如果可以电脑批量处理,那就是极其方便的。
下面按照实际方案过程和遇到的一些问题进行httplook抓取的过程描述,希望对以后遇到这方面问题的有部分帮助。之前是有两套方案:
1、用wiwiz搭建web认证,并通过其Wiwiz Auth API进行接入的控制。参考资料如下:
成本低廉的宾馆无线Wifi网络覆盖+Web认证方案;
Wiwiz Auth API参考手册与接口规范;
但是、、、后来发现wiwiz貌似免费版的话提供的服务真的很少!付费才能达到项目要的要求,于是把这个方案当做备选!
2、自带web认证的无线路由,调研后发现有自带web认证的无线路由,我选用的是磊科NR235W无线上网管理路由器。顺便吐槽下,七月底在某东买的时候是¥219.00,这几天再看是¥129.00 (降价通知)。。。还好不是花自己的钱,不然亏死了。(吐槽可忽略)
现在就进入重点部分,如何在主机端借助某些接口自动完成路由配置,下面找了很久才找到比较好的方法:
教您用命令行轻松玩转宽带路由(上),教您用命令行轻松玩转宽带路由(中)然后死活都找不到(下)的部分。。。学着边弄,最后才在翻了很多网页之后找到“高手论道 教您用命令行轻松玩转宽带路由 ”,命名能再统一规范点吗?而且在同一个网站不是连续的发文章,所以能找到最后一篇也算是幸运的。
一、curl工具:curl是一个使用URL语法来传送文件的工具,支持HTTP/HTTPS/FTP/ FTPS/DICT/TELNET/LDAP/FILE和GOPHER等协议,同时也具备比较高的安全性。也就是说我们可以通过curl命令实现对基于HTTP协议页面的互动。那么只要浏览器可以做到的操作,我们只要用curl模拟就可以做到。同理,对于一些网页需要抢票刷页面的,也是可以利用curl命令进行控制的。但是现在刷完之后那些抢票系统总是会弹出需要手动输入随机验证码的,也是作为一种手段来防止这种作弊行为。下载后建议把curl工具当前的路径添加到系统的PATH路径下,那么自信命令行之后就不用进到curl对应的路径下才能执行,系统会自动去环境变量PATH路径下收你输入的这些命令行命令并执行。
二、监控工具:为了模拟浏览器的动作,那么我们需要知道浏览器访问的地址以及对应的参数设置。于是又两款监视工具对页面信息参数进行抓取。其中遇到问题如下:
1、用httplook进行抓取时,只要启动抓取,我的IE就会崩溃,而用搜狗浏览器却只能抓到普通的页面、而抓不到路由配置页面的信息。
2、试用sniffer工具进行抓取,可以抓到,可是由于里面的相关信息复制不了,或者只能复制其ASCII码,还要对其进行转码。于是我直接照着其参数手打出来。但是在用这些抓到的信息进行命令行配置时,电脑经常死机。事实证明,电脑的很多编码形式呈现出的可视化的东西不是看到的就是那样的,除了一些外形相似的字符,还有包括半角还是全角等小细节的出入。所以这些信息的转移最好还是直接复制粘贴,不然宕机了自己都不知道什么回事。一开始我还以为是电脑硬件或者系统的问题,不放弃地不停尝试,然后就是不停的死机重启。差点重装系统。
最后抱着试一试的心态,把IE卸载了重装,然后用httplook重试,竟然抓到了,真有一种柳暗花明的感觉。对于浏览器的很多操作,用IE肯定是没错的,因为现在很多浏览器并不是使用IE内核的,很多也只是兼容而已。所以会出现这样或那样莫名的错误。而且很多时候你明明按照别人说的操作,可往往会出现跟别人描述的不一样的结果,那肯定就是有原因,每一个小步骤都可能出现问题。如果可以的话从头到尾分析一下都有哪些步骤,每一个步骤都尝试下能做的试错方案。最后能解决当然是很好的,如果尝试完所有能想到的,搜尽所有资料都不能解决,那只能说是缘分了。。。但是在这个过程,只要你想要完成,就不能停止尝试!!!一停你就输了,当然有时候停一下过后再看,可能很容易就解决,但是不能完全放弃!
那现在就要开始进入抓取信息的部分了,以在我使用的自带web认证的无线路由上进行过程介绍。
(一)、启动httplook:点击绿色箭头启动抓取,如下图:
(二)、浏览器操作:用IE打开路由配置页面并进行你想要的配置操作,我这里以要添加web认证账户为例,如下图:
添加成功后我们可以在web认证页面看到刚添加的账户:
(三)、httplook获取配置参数:我们这边按下绿色箭头右边第一个相邻的红色按钮停止抓取,如图我们可以看到httplook抓到的相关信息:
可以看到浏览器配置路由的时候是通过访问用post方法访问路由的“192.167.1.1//router/l7_web_auth_user_set .cgi”配置文件,并将如下参数post过去“action=0&enable=1&user=0&pass=0&name=&policy_group_id=&charge_mode=0&adv_type=0&auth_user_bind_mac_mode=0&auth_user_bind_mac=&count=1&idle_cut=1&auth_user_static_ip=&id=&deal=add”,其中我们注意到“user=0&pass=0”就是我们刚才设置添加账户所填写的账户名与密码。
(四)、curl命令行执行:完成抓取后就需要用curl工具进行命令行的调用实现。通过查询curl的使用方法,我们知道其访问带用户名及密码页面时的格式如下(就是我们进入路由配置页面时获取访问权限时输入的用户名与密码)格式为:curl -u 访问页面用户名:密码 -d “参数” http页面地址。很多访问路由页面用户名与密码默认是“admin”或“guest” 也可以自己修改的。本机用户名与密码都是“guest”。使用如下:
通过在命令行运行窗口中运行如上命令,可以看到如下信息,说明配置成功:
此时,再去看路由配置页面中web账户的列表,用户名与密码都为“123”的账户被添加了进去。同理,如果想要对其他页面做相关动作,也可以采取上述同样的方法进行操作。至此,我们用curl命令执行路由配置的相关操作就完成了。如果想要对无线Wifi热点进行控制还可以将命令写成“.bat”文件,然后设置系统中的定时任务功能来定时开启和关闭热点。如果需要像我上述的批量添加web认证账户,也可以使用其他语言对这个命令进行调用,只要改变其对应的user和pass参数就可以了。
只要浏览器能做到的,上述的办法就能做到。关键就是要“抓”。而在我们遇到问题在自己所能接触的知识库(包括自己的学识、周围的牛人资源、网上海量的资料牛人资源)中查询解决方案的时候,不能出现预定效果的时候,不管你知不知道原因,都要尝试地去在所有步骤中试错。甚至到最后你成功解决后还不知道原因,但是这个过程中你不能停止尝试。而很多人能顺利进行方案而不会跟你一样碰到这样或那样问题的时候,不要抱怨命运的不公,一件事的出现必定有他的原因。或许你现在可以不知道原因,但是不能停止尝试的步伐。
因为一停,你就输了!至于结果,还要看你自身的各种能力、、、和“缘”!