curl介绍
注意,本文提供的操作网址只有东大校园网才能访问!
curl命令是一个功能强大的网络工具,在ubuntu、os x等的命令行里起着重要作用,大多数系统已内置curl。它能够通过http、ftp等方式下载文件,也能够上传文件。
其实curl远不止前面所说的那些功能,大家可以通过man curl
阅读手册页获取更多的信息。
类似的工具还有wget。
这里我要讲的是linux(ubuntu)命令行内的关于curl
命令的具体的一个应用。
应用背景
说起来真是羞愧,如今大三才想起这个问题:ubuntu在纯命令行模式下如何登录校园网网关?
再想到这个问题的时候,自然而然就像到了利用xxx提交html表单。于是上网搜索命令行具体用什么东西来实现这种操作。
很轻易的就搜到了curl
与wget
,当然还有其它一些方法:如某贴吧说用xxx软件,某论坛说用yyy软件,不过具体查了一下后发现这些软件或多或少都有bug,而且不助于了解bash,遂弃之。
curl基础命令
完成本次操作仅需如下基础命令,具体参考席飞剑的blog。
curl <url>
curl -d "p1=value1&p2=value2[&...]" <url>
curl -A "Mozilla/4.0"
具体解释如下:
- 第一行命令:若有网,则返回所写的url的html源码,否则返回
Empty reply from server
。如下:
- 第二行命令:当html表单提交方式为post时,使用这条命令模拟提交表单,具体描述参见具体实现。
- 第三条命令:模拟浏览器标识,防止访问被拒。
具体实现
本校校园网网址为:https://ipgw.neu.edu.cn。
于是第一次尝试:
curl https://ipgw.neu.edu.cn
,不幸的是,返回源码为302 found
,继续上网查,发现问题出在url重定向,有解决方法是直接代码解决,本人参考了另一种解决方式:利用chrome的控制台找到了实际url(后来发现浏览器访问后直接显示在url里了,囧)
第二次尝试:
curl https://ipgw.neu.edu.cn/srun_portal_pc.php?ac_id=1
,终于返回正常登录页面的源码了!接下来就是模拟html提交表单了,首先先看一下网页源代码:
注意画线地方,就是表单提交的东西,我们只要以post的方式提交表单就好了:
curl -d "action=login&ac_id=1&username=20154445&password=44554455" http://ipgw.neu.edu.cn/srun_portal_pc.php?ac_id=1
最后加上浏览器标识就完美了:
curl -A "Mozilla/4.0" -d "action=login&ac_id=1&username=20154445&password=44554455" http://ipgw.neu.edu.cn/srun_portal_pc.php?ac_id=1
同理,分析网关网页注销动作,得到命令如下:
curl -A "Mozilla/4.0" -d "action=auto_logout&user_ip=202.118.46.109&username=20154445" http://ipgw.neu.edu.cn/srun_portal_pc.php?ac_id=1&