20081011

使用Shell控制家用路由器的连接和断开(可以达到刷网站的效果)

关于怎么刷网站,估计各个站长都有自己的高招把,我只来说说原理,应用的大家都明白拉。

家用路由器连接的时候无非是点一个按钮,而从http协议来说就是一个GET或者POST(多数就是GET),所以知道了原理来用Shell给192.168.1.1发送一个GET并不是很难的,用curl是很简单的。
但是需要知道的是GET的内容,所以还得借助Linux下的sniffer工具tcpdump,可惜我对TCP方面的东西不太感冒,tcpdump又是命令行的,所以我只好用Ethereal(Wireshark)代替了。反正只要能得到你点“连接”或者“断开”按钮时候包里GET的数据就行了。
具体使用方法可以看看Ref里的内容,我就不罗嗦了。

我用的Tp-link的路由器,当断开路由的时候GET的内容是(%B6%CF%20%CF%DF是“断 开”的ASCII码)
http://192.168.1.1/userRpm/StatusRpm.htm?Disconnect=%B6%CF%20%CF%DF&wan=1

在这里提醒一下,一开始我通过看http://192.168.1.1/userRpm/StatusRpm.htm页的源码,得到的GET的内容里面是“断开 ”而不是ASCII码的形式,可是通过Shell进行GET的时候怎么也不成功,后来才知道得用ASCII才行。

当然我就可以使用这样的命令来使路由器断开拉。
curl -u admin:admin "http://192.168.1.1/userRpm/StatusRpm.htm?Disconnect=%B6%CF%20%CF%DF&wan=1" > /dev/null


使用-u参数是因为curl访问这个页面的时候需要密码验证。
当然如果你想使用curl进行路由器的连接也是同理拉。
最后给出我的刷网站的脚本:
#!/bin/bash
# Renew IP, then wget the website, then again, so refresh the website!

for (( i = 0; i <= 100; i++ )) do curl -u admin:admin "http://192.168.1.1/userRpm/StatusRpm.htm?Disconnect=%B6%CF%20%CF%DF&wan=1" > /dev/null
curl -u admin:admin "http://192.168.1.1/userRpm/StatusRpm.htm?Connect=%C1%AC%20%BD%D3&wan=1" > /dev/null

wget http://www.xiaomao101.com -O index.tmp -o wget.log -b > /dev/null

ping -c 5 127.0.0.1 > /dev/null
done

#/sbin/shutdown now







Ref:
教您用命令行轻松玩转宽带路由器(上)(中)(下)
借助sniffer诊断Linux网络故障

没有评论:

发表评论