保函网—专业的保函办理平台!(最快5天可以出函)

    当前位置: 主页 > 知识与问答

    保函网

    投票作弊软件-网络投票作弊的技术实现(纯技术交流,请勿用于其他目的!!)

    来源:网友投稿 | 栏目: 知识与问答 | 发布时间: 2023-05-31 23:46:03

    领导测试软件测试网

    免责声明:纯技术交流,请勿用于其他目的!!

    文中讨论的技术的应用范围似乎比较广,不仅为这些相对否定的应用投票,还可以完成手动填表、手动申请邮箱、网站注册等功能。

    这里提供了两种方式:

    方式一:通过IE控件提供的COM套接字实现。这些方法都是通过来编辑web表单(有时要修改web代码),然后触发提交web页面的风暴。因为这些方法使用的是IE控件,所以打开网页时会下载很多与应用无关的数据,比如图片等(其实IE中可以关闭图片等选项),效率很低,你必须为每一票投票。打开一个IE控件,如果你的机器比较差,等着按Reset~~。另外,这些方法编码比较多,很烦人。

    方法二:通过API实现表单提交工作。这些方法比上述技术要复杂得多,不仅执行效率高、资源消耗少,而且具体实现也比前一种简单。

    这两种方法描述如下:

    方法一:通过IE控件提供的COM套接字实现

    1、我的程序是基于对话框的,没有用到,所以我必须先在对话框上放一个IE控件(上面有web浏览器),并给这个IE控件起个名字,比如。另外,记得添加头文件,来自IECOM套接字的所有东西都放在上面。如果没有,请添加它。

    2、使用响应加入风暴,这样页面下载完成后,就可以做填表等工作了。其实你也可以在这样的风暴中进行这种操作,但是接下来你要判断网页是否快要下载到合适的位置了。如果想省事,直接用就行了。

    3、下一步就是使用这个控件打开目标网页。您可以决定何时打开它。我在上面打开它。代码如下:

    vaUrl="";

    .(&vaUrl,&,&,&,&);

    其中哪个用作默认参数。

    4、 然后是主要操作。这个操作就放进去了,为了方便,我写了几个函数来完成具体的功能。在具体说明中执行的操作之前,我先解释一下这些功能。

    //功能:判断网页中是否有指定元素

    //:: 网页中所有元素的集合

    //: 网页中元素的id或名称

    布尔(开*,)

    {

    ;

    ->item((),((long)0),&pDisp);

    如果(pDisp==NULL)

    错误的;

    别的

    真的;

    }

    //功能:在网页的文本框中输入字符串

    //:: 网页中所有元素的集合

    //: 要编辑的文本框的 id 或名称

    //: 在文本框中写什么

    无效(开*,,)

    {

    显示;

    ->item((),((long)0),&pDisp);

    ;

    如果(pDisp==NULL)

    {

    (+"未找到!");

    }

    别的

    {

    =pDisp;

    ->(.());

    }

    }

    //功能:为网页提交表单

    //:: 网页中所有元素的集合

    //: 可以提交Form的按钮的id或者名称(也可以直接提交Form)

    无效(开*,)

    {

    ;

    ->item((),((long)0),&pDisp);

    ;

    如果(pDisp==NULL)

    {

    (+"未找到!");

    }

    别的

    {

    =pDisp;

    ->点击();

    }

    }

    //功能:选择其中一个网页(当然是点击)

    //:: 网页中所有元素的集合

    //: 要选择的 id 或名称

    无效(开*,)

    {

    显示;

    ->item((),((long)0),&pDisp);

    ;

    如果(pDisp==NULL)

    {

    (+"未找到!");

    }

    别的

    {

    =pDisp;

    ->点击();

    }

    }

    使用这些功能可以轻松完成投票操作。下面列出的代码。

    还假设投票页面是,数据提交到/vote2.asp

    空白::()

    {

    //TODO:在此处添加您的代码

    开*=空;

    *=空;

    ,;

    =.();//获取当前网页的URL

    如果(。())

    ;

    =(*).();//从控件中获取插座针

    ->(&);//获取网页所有元素的集合

    //因为这个函数会在所有页面下载完成后执行,所以消息的来源页面必须根据URL来确定

    如果(=="")

    {

    ;

    if((,"")==true)//投票选项所在的表格

    {

    ->item((""),((long)0),&pDisp);

    ;

    如果(pDisp==NULL)

    {

    //获取套针失败,程序结束,不做额外处理。原因见下文。

    (IDOK);

    ;

    }

    别的

    {

    //如果投票结果是在新窗口中打开,网页代码要改成在这个控件中显示结果

    =pDisp;

    ->(("_self"));//等价于="_self"

    ->(("投票2.asp"));//等价于="投票2.asp"

    }

    (,"chk2");//在表格中选择chk2的id

    (,"vote");//提交网页,vote是按钮的id或者名字

    }

    }

    (=="")

    {

    (IDOK);//如果投票处理页面已经下载,则结束程序,原因见下。

    }

    }

    既然已经投了票,但是看完流程,你可能会疑惑,为什么要在投票后结束流程或者中间有错误,而不是继续投票呢?事情是这样的,有些网站只能投一票,并且在创建一个IE控件并连接到服务器后(用它),设置了key的种类(一家之言),所以如果你继续使用这个 IE 控件进行投票,服务器会告诉你已经投票了(其实如果投票程序写的很笨,忽略这个会容易很多)。本来想通过分析API的运行过程来处理这个问题,觉得很麻烦,于是就用了一个很笨但是很简单的方法:把投票程序当成程序,然后另一个程序调用这个投票程序,在投票过程结束后,主程序再次运行投票过程,以此类推。至于投票程序数量限制之类的,使用共享显存段是最简单的(一家之言),这里就不多说了。

    方法二:通过API实现表单提交

    这些方法实现的代码量非常小,但是因为不需要下载太多无用的数据(比如图片等),而且表单所在的页面也不需要下载,所以效率是高得多。另外,实现代码是一个函数,非常适合使用。在线程中。

    使用这些技术的关键是知道应该向服务器提交哪些数据。如果你自己看网页文件,那么分析哪些数据应该提交给服务器。如果网页很简单投票作弊软件,几乎是一样的。. 既然不是考试,我们就不会那样做。现在有一个更简单的方法,就是使用下面的网络监视器手动投票,看看有哪些数据提交到服务器。这样我们就可以复制属于HTTP合约的部分数据了。直接从监视器复制的数据不能使用,因为监视器显示的部分文本中的回车换行等字符被小数点替换,这部分必须改回原来的回车和换行。(HTTP后面的部分可以忽略,只要你能区分边界)。另请注意,提交信息中可能存在-此信息。如果更改了提交数据的内容,并且数据宽度发生了变化,那么-item的值也必须相应的改变。比如-原来的值为100,数据中有一个数据“1”,你现在改成“12”,那么-一定要改成101,否则服务器会报错。

    下面列出了投票功能:

    ()

    {

    ;

    .++;//用于记录投票线程数

    尝试

    {

    *=.("");//网站服务器

    *pFile=->(::,"vote2.asp");//直接提交数据到投票处理页面

    //在下面提交的数据中添加HTTP头,可以通过网络监视器获取

    pFile->(":image/gif,image/x-,image/jpeg,image/pjpeg,/vnd.ms-,/vnd.ms-excel,/,*/*");

    pFile->(":");

    pFile->("-:zh-cn");

    pFile->("-Type:/form-data;=----------------------------");

    pFile->("-:gzip,");

    pFile->("用户代理:/4.0(;MSIE5.01;NT5.0)");

    pFile->("-:1351");

    pFile->(":Keep-Alive");

    pFile->("缓存-:无缓存");

    //真正的数据应该在HTTP头的旁边,要提交的数据在下面。服务器处理返回的信息在pFile中

    pFile->(NULL,0,..(0),..());//提交所有数据

    //虽然这里的投票已经结束了,但是如果想看结果,可以分析返回的页面,获取一些数据

    char[11001];//用来存放返回的处理页,多大视实际情况而定。其实也可以动态分配,如果不是太累的话

    =pFile->Read(,11000);//读取返回的内容,虽然是投票结果页面的html代码

    [nLen]=0;

    =;//其实用的有点过头了,不过用起来很方便,呵呵~

    pFile->Close();//读取数据后,关闭所有应该关闭的东西

    ->关闭();

    p文件;

    ;

    。关();

    //下面的代码是用来分析HTML代码得到你感兴趣的数据的投票作弊软件,跟投票无关,就不详细解释了。

    =.Find("选项 A");

    诠释=nPos;

    如果(nPos==-1)

    {

    .--;

    0;

    }

    nPos=.Find("=100>",nPos)+36;

    int=.Find("票",nPos);

    =atoi(.Mid(nPos,-nPos));

    nPos=.Find("

    1

    ");

    nPos=.Find("=100>",nPos)+36;

    =.Find("票",nPos);

    =atoi(.Mid(nPos,-nPos))-;

    ++;

    }

    抓住(...)

    {

    }

    .--;

    0;

    }

    如您所见,关键代码只有几行。如果不分析投票结果,比一技能少很多,但看起来没有一技能那么乱。不过,这些方法也有方法一中提到的那种重复问题。当我尝试时,新打开的线程也会重复。所以恐怕Key的种类是根据ID来确定的(一家之言,欢迎大家讨论)。但是,如果同时启动N个线程,则所有N个线程都可以成功投票,而不用说“你已经投票了”。恐怕因为这个信息是同时提交的,服务器在处理一个似乎已经投票的消息时并不知道。不知道是不是这个原因,大家可以讨论一下。

    这就是两种投票方式。我的水平真的很一般,所以如果文章有错误,请不要嘲笑他们。我将强调错误并一起讨论。另外,希望大家讨论一下文章中提到的问题。

    另一个小广告:呵呵~~

    峰会亮点

    上一篇:快播修复工具-U盘难以识别怎么办?有什么软件可以修复U盘问题?推荐U盘补丁软件

    下一篇:可牛在线制作-使用可牛免费拼图

    投标保函 履约保函 预付款保函 民工工资保函 质量保函 银行保函

    免责声明:本站内容仅用于学习参考,信息和图片素材来源于互联网,如内容侵权与违规,请联系我们进行删除,我们将在三个工作日内处理。
    联系邮箱:303555158#QQ.COM (把#换成@)

    Copyright © 2023 格特瑞咨询-保函网 版权所有

    网站备案号:黔ICP备19002813号

    微信号:13278852333

    微信号已复制

    打开微信添加好友