代码改变生活——利用路由器的“MAC地址过滤功能”限制别人的网速

来源:互联网 发布:中国的选举制度 知乎 编辑:程序博客网 时间:2024/05/12 18:36

最近遇到点小小的烦心事:通过一个无线家用路由器,两个人共用2M的宽带。网速已经很苦逼了,更苦逼的是别人一看电视,我这边的网速就接近0啊,2M网络,平均下载速度应该200KB/S左右,两个共用时,一个人分到100KB/S我也满足了啊,蛋疼的是,我这边的迅雷速度接近于零(枉费了我开迅雷会员,居然抢不过人家的上网本*_*),好一点的时候有六七十的速度,于是,作为一个程序员就开始思考程序员的解决方案了。。。。

路由的管理权限当然在我这儿,可是这款两三年前买了的TPLink家用无线路由没有那么丰富的功能,不能限制某个主机的网速。唯一有点的关系的功能就是“MAC地址过滤”,可以让指定的MAC地址的机器禁止访问Internet,(但是能连上路由)

 

 

当点击 “使所有条目生效后”,迅雷的网速像打了鸡血一样,迅速回到正常值。但是,让别人禁止访问外网,一来不厚道,二来别人也答应啊!肿么办?很简单,用个小程序,不断的去帮你点击“使所有条目生效”、"使所有条目失效",每个几秒钟来回切换一次,这样一来既不会断网,也不可能独占带宽,从而实现”平均分配“。

=======开工!=======

1.首先要早到路由器管理页面上对应的两个按钮的后台代码,发现IE自带的开发者工具还是挺好使的,三↓5÷二就找到最终的url

(1)F12调出开发者工具,点击最左边的指针按钮,然后在页面上点击需要查看的元素就能迅速定位到对应的html代码,一眼就能看出调用的js函数,doAll(),参数是EnAll(Enable All,命名还是很容易懂的大笑)。

(2)继续跟踪这个函数.

 

tab页上选择脚本,在右侧的搜索框需要的函数"doAll",立刻找到doAll的实现代码,val是之前传入的EnAll,curPage不知道是啥?来个断点调试一遍,一切再无神秘!

接下来就开始写代码了。

2.这是一个工具类的小程序,功能需求就一个,运行平台windows,用C#开发最合适不过了,配合VS2012这么优秀的IDE,很快就能搞定的。

 具体细节不再描述,虽然对.Net类库不熟悉,遇到问题上网百度下,也很快就能解决。

 碰到的问题:

 (1),登录的路由器管理的页面会有身份认证(浏览器弹出个框,输帐号),如何程序不加处理直接访问,返回401,程序抛出异常。

         找到一篇博客,地址如下

                访问需要HTTP Basic Authentication认证的资源的C#实现

(2),关于定时器,WPF(我的小程序用的wfp,不管是用设计器拖界面还是手写xaml,都比winform来的方便)中的定时器和winform的貌似不太一样,

    有种中定时器

       System.Timers.Timer  和  System.Threading.Timer都是从线程池中回调的,为了简单,应当采用System.Window.Threading.Timer,这里涉及到应当是非UI线程对界面元素的访问。

给个链接  c# wfp的三种timer

 ====================================

从idea的诞生到最后实现,也就一两个小时的时间,还是挺顺利的。

嗯,界面是粗糙了点,现在需要的基本功能是有了,有时间有兴趣的时候再去完善吧。

1.路由器太慢,如果访问的频率过高,路由器就不响应了,像死机一样,太悲催可怜

2.网络访问应该改成异步的,现在发Http请求的时候界面会小卡一下,具体由路由器的响应速度决定。

3.完善功能,至少能对单独的MAC启用定时的禁止访问网络。

4。。。。

 

原创粉丝点击