目录

2638264600 的个人博客

记录精彩的程序人生

万能投票工具

同步: http://www.lupeng.org

继续上次的自动发帖工具继续开发.这次要扩展为万能投票工具,而且适合组织大规模的集体网络投票行动!

我们知道发帖也好,访问网页也好,网络投票也好,看起来很复杂混乱的业务,其实都遵循同样的网络交互模型.其区别仅仅是在HTTP协议固定格式下发送的数据内容的不同而已.

网上流传着各种投票工具,但都是基于特定的网页的,因为他们发送的数据大都是固定在程序里面的,无法修改.若要增加新的投票连接就需要修改程序.一个解决办法是用配置文件,将需要发送的数据信息保存到单独的文件中.这样修改文件就可以适应全部的投票工作(这需要设计很好的程序结构,因为有些投票程序复杂).如果能时时的自动更新配置文件,就可以组织大规模的网络投票了.

如下配置格式:

http://www.baidu.com/s get

我们继续优化. 使用上面的配置在与服务器交互的时候可能存在很大的传输的数据冗余.因为我们需要每次都下载所有的投票信息,因为这里面涉及投票数据的添加,删除,修改等等操作.对一个大规模的网投行动,可能需要时时的联系被控客户端.于是,我把以上的各种行为,添加投票信息,删除投票信息以及文本消息都抽象封装为为网络命令消息.通过服务器向各个客户端发送特定消息来完成各种操作.这个使用可以说是基于网络的命令模式.

令一个重要的内容,就是投票信息的构造,这主要是发送的数据了.有很多方法可以构建这些数据.

分析HTML源文件:

所有由WEB发送的数据本身都是由HTML形成的表单形成的.因而我们也就可以分析这些标签取得信息比如上个自动发帖工具.例如:代表一个文本框,当在该控件内输入master提交到服务器时,便形成一下格式数据 user=master.但是有部分数据可能经过了脚本的控制给分析带来困难.

以上方法还有一个必须解决的问题.那就是以上表单哪些需要填写或选择.(1)这个可以通过记录鼠标和键盘活动来跟踪,比如用户在某个单选按钮上按下时,可以通过鼠标位置取得对应的控件信息.不久前见过一个叫按键精灵的东西好像专门能记录这些东西.(2)另外一个就是让用户模拟提交一次数据,在页面要发送数据时挨个分析表单.

分析通信数据包:

目前所有的应用层协议都是建立在IP/TCP,IP/UDP上的,一般的数据传输都是明文传输的,因而只要截获这些数据就知道内部数据了如下图:

直接接受数据:

其实在条件允许的情况下我们有一个最方便,最准确的方法.我们知道WEB数据的形成完全不依赖于要发送的地址.于是我们只要更改HTML文档提交数据的页面,让数据发送到我们想要的地方,这样把得到的数据复制循环发送就OK了.

说到这里某些人可能会说哪里用的着这些方法我只要一看HTML文件便知道发送数据了.但是我们的用户可能或者说基本上不会有你这样的能力.我们要做的就是就是让没有任何WEB和网络知识的人都能使用他进行数据控制.

以下说明该软件系统结构(因为涉及多个程序和服务且称之为系统)

为了安全稳定的运行我们需要一个服务器,但是我只有WEB服务器,正好这足够了.我想你已经想到了使用Web Serverce.其实这不过是一个简单的解决方案,你完全可以仅仅通过HTTP来实现他而非在其之上的更时髦的SOAP.

该软件系统主要由三部分组成: WEB服务,控制客户端,受控客户端

WEB服务: 部署在WEB服务器上,主要是数据和控制命令转发,用户状态维护.

控制客户端: 控制整个系统的运行,他发出所有的控制命令通过WEB服务存储转发到各个受控客户,使被控者完成制定功能.

受控客户端: 接受WEB服务发来的命令完成制定功能,就提投票操作均由他完成

程序使用图解:

(1)管理员添加投票,输入制定信息

(2)点击生成数据,下载页面,修改数据发送地址到指定页面,用户输入数据提交.

(3) 服务器接受到提交的数据,返回给控制程序,现在可以看到发送的数据.然后点击添加按钮完成投票信息添加

(4)受控客户会定期连接服务器,检查新消息,自动完成添加投票,或显示消息等


标题:万能投票工具
作者:三学一心
地址:http://bk.isseeker.com/articles/2022/03/01/1646105891378.html