现在很多公司和企业都连接了自己的网络,特别是对于那些规模不大,员工不多的小型企业来说申请高容量的光纤带宽是没有必要的,所以使用ADSL成为众多领导的选择。整个公司只需要购买一个宽带路由器然后经过简单的配置即可完成公司的网络需求。 但是由于宽带路由器内部硬件非常简单,功能不发达,难以和企业级路由器或三层交换机相比。因此在管理和限制员工上网方面功能欠缺,特别是在基于时间的管理方面就显得更加力不从心了。例如公司要求在上班时禁止某些员工的上网,而在休息时间则没有限制,由于大部分宽带路由器都没有基于时间的设置,所以唯一可行的就是在上班前由公司的网络管理员手动配置宽带路由器限制员工,在休息时再由他再次设置取消限制。
每天都要反复的登录和配置宽带路由器,每次配置都需要通过浏览器访问宽带路由器的管理界面,操作上非常不方便,而且也在一定程度上加重了网络管理员的工作。那么有没有一种方法能够让计算机实现自动连接宽带路由器并在上班前添加限制,在下班后释放限制呢?
上面那个自动化问题的解决关键就是实现命令行下对宽带路由器的设置,如果能通过一条条命令修改宽带路由器的参数的话,那么我们完全可以通过批处理文件 计划任务的办法来实现修改设置的自动化功能。
在讲解如何在命令行下控制宽带路由器之前我们需要先了解CURL这个工具。在“用命令行玩转宽带路由器(上)”中我们主要介绍CURL的使用方法和命令,只有熟悉了CURL的使用才能在“用命令行玩转宽带路由器(中,下)”中实现修改宽带路由器内部参数的自动化功能。
一、什么是CURL:
Curl像HTML一样是一种文本标记语言,它既是文本又是一种支持多重继承的面向对象编程语言。Curl不利的一面是:单一的形式破坏了由 HTML, CSS ,Javascript 带给我们的内容信息、形式和行为的分离。以上是对CURL的专业性解释,虽然在LINUX及其他操作系统中CURL应用广泛,但是在windows操作系统中他的用武之地也逐渐被人们所关注。
如果仅仅从简单意义上说,那么curl是一个使用URL语法来传送文件的工具,支持HTTP/HTTPS/FTP/FTPS/DICT/TELNET/LDAP/FILE和GOPHER等协议,同时他具备比较高的安全性。也就是说我们可以通过curl命令实现对基于HTTP协议页面的互动。
CURL命令已经在苹果机上成为内置的命令行工具之一了,可见其重要性。
二、CURL的简单使用:
首先我们下载CURL,然后将他解压缩到任意目录中,通过桌面“开始->运行->输入CMD”进入命令行模式,将当前目录修改为CURL的解压缩目录。(如图1)
图1:选择解压缩目录
小提示:
我们可以通过CD\回到磁盘根目录,以及使用cd curl进入CURL目录。
CURL支持很多参数,我们可以通过curl -help来获得。只需要进到CURL目录中输入curl -help后回车。(如图2)
图2:进入CURL目录
二、CURL的简单使用:
首先我们下载CURL,然后将他解压缩到任意目录中,通过桌面“开始->运行->输入CMD”进入命令行模式,将当前目录修改为CURL的解压缩目录。(如图1)
图1:选择解压缩目录
小提示:
我们可以通过CD\回到磁盘根目录,以及使用cd curl进入CURL目录。
CURL支持很多参数,我们可以通过curl -help来获得。只需要进到CURL目录中输入curl -help后回车。(如图2)
图2:进入CURL目录
我们这里只为各位读者介绍几个用得到的,掌握了这几个参数就可以在“用命令行玩转宽带路由器(下)”中实现修改宽带路由器内部参数的自动化功能了。
(1)输出页面信息参数:
我们在CURL后直接跟页面地址就可以在命令行模式中显示相应页面的源代码。
curl www.sohu.com
//将把www.sohu.com的页面全部代码内容显示在命令行模式中(如图3)
图3:输出页面信息参数(点击看大图)
(2)保存相应页面:
如果我们想直接通过CURL命令保存某个页面全部内容的话命令如下
curl www.sohu.com >softer.htm
//将www.sohu.com这个页面保存到softer.htm中,这样在命令行模式当前路径中就会出现一个新的名为softer.htm的文件,打开他对应的就是www.sohu.com页面的信息。保存会花费一定的时间,当%列显示100说明全部完成。(如图4)
图4:保存相应页面(点击看大图)
小提示:
实际上不使用>而直接使用CURL的-o参数也可以实现上面的功能,在CURL内置有一个option参数,用curl -o softer.htm http://www.sohu.com也可以将www.sohu.com页面保存成softer.htm文件。
(3)访问基于用户名和密码验证的页面:
如果你要访问的页面需要输入用户名和密码来验证的话,同样可以通过CURL命令的-u参数解决。比如说我们要访问http://192.168.1.1这个地址,这个地址的真实内容只有在你输入了正确的用户名和密码之后才能查看。(如图5)
图5:访问http://192.168.1.1
如果你没有输入用户名和密码或者输入的是错误的,页面将会显示错误信息。(如图6)
图6:错误信息
这里假设我们的用户名是admin,密码是198029,要访问的页面地址是http://192.168.1.1,那么完全可以通过CURL实现真实页面的输出和保存。
curl -u admin:198029 http://192.168.1.1
//访问192.168.1.1页面,当需要用户密码验证的时候输入用户名admin,密码是198029。然后将把通过验证后的页面信息显示在命令行模式中。(如图7)
图7:通过验证信息(点击看大图)
(4)基于代理的访问:
也许有的时候我们访问某个页面需要通过代理服务器才行,没有设置代理服务器直接用curl -o保存的页面是错误的,那么完全可以通过-x参数来实现。
这里假设依然访问192.168.1.1但是需要使用代理服务器10.91.30.1:8080这个地址才行。CURL命令如下——
curl -x 10.91.30.1:8080 -o softer.html http://192.168.1.1
//通过代理服务器10.91.30.1:8080访问http://192.168.1.1这个页面,并将页面信息保存到softer.html文件中。
(5)修改useragent:
很多时候我们访问某个站点时都会出现错误信息,在这些错误信息中有一类是因为使用浏览器种类不符造成的。也就是说页面会读取访问者浏览器的 useragent信息,如果这个信息不在该页面授权浏览器范围内则无法访问。在通过手机 笔记本访问无线网络时这种情况最为常见,我们用IE浏览器和 MAXTHON等工具都无法浏览,只能通过注册表修改useragent来迷惑对方,实现访问的目的。当然在命令行curl中也可以使用-A参数来实现。
通过-A参数可以指定你的浏览器的种类和版本。例如curl -A "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" -x http://www.sohu.com。
这样服务器端接到访问的要求,会认为你是一个运行在Windows 2000上的IE6.0,其实也许你用的是苹果机。而-A后跟"Mozilla/4.73 [en] (X11; U; Linux 2.2; 15 i686"则可以告诉对方你是一台PC,操作系统为Linux,用的是Netscape 4.73浏览器。
(6)CURL也能防盗链:
服务器端常用的限制方法,就是检查http访问的referer。比如你先访问首页,再访问里面所指定的下载页,这第二次访问的referer 地址就是第一次访问成功后的页面地址。这样,服务器端只要发现对下载页面某次访问的referer地址不是首页的地址,就可以断定那是个盗链了。当发现是盗链后我们的访问就失败了。
实际上我们可以通过curl给我们提供的设定referer的参数-e来解决这个棘手问题。
curl -e "mail.sohu.com" -o softer.html http://www.sohu.com
//说明我们访问www.sohu.com是通过在mail.sohu.com页面上点链接完成的。从而绕过了服务器端防盗链的限制,将该页面保存到softer.html文件中。
(7)页面互动参数:
很多时候服务器页面都是基于CGI或PHP以及ASP等动态语言建立的,这样就加大了访问者和页面信息之间的互动性,也就是说不同的用户名和密码对应不同的内容。我们如何通过curl实现这种互动呢?
小提示:
说白了我们访问宽带路由器的管理界面然后更改各种参数也是一种互动行为,只要我们找到修改的参数和互动的行为,用CURL模拟出这些操作,就可以实现在命令行下管理宽带路由器的目的,当然具体操作会在“用命令行玩转宽带路由器(下)”中为大家介绍。
与HTTP页面进行互动以及提交表单主要有两种方式,一是GET操作,另一个是POST操作。
如果你使用GET操作那么什么参数都不用加,直接把变量写在后面的URL地址中即可。例如curl http://192.168.1.1/login.cgi?user=softer&password=198029,那么访问http: //192.168.1.1/login.cgi这个页面时就会将该页面对应的user和password这两个参数的信息依次设置为softer和 198029,从而实现登录功能。
而post模式的参数是-d。使用post模式后上面的GET操作命令就演化成curl -d "user=softer&password=198029" http://192.168.1.1/login.cgi,相当于向这个站点发出一次登录请求。到底该用GET模式还是POST模式,就要看服务器端程序的设定了。一般来说我们两种模式都尝试下,都会有一个可以行得通。
总结:
CURL的参数还有很多,他的功能也很强大。当然本篇文章介绍的这些参数和指令只是为了帮助我们在“用命令行玩转宽带路由器(中,下)”文章中更好的理解CURL命令行的意思,只有掌握了本篇介绍的基本理论和准备知识才能让我们在命令行下玩宽带路由器更加自如。(责任编辑:liucl)