精华内容
下载资源
问答
  • JSP网页代码(电影投票系统)

    热门讨论 2010-05-18 21:33:11
    这是一个网页投票系统的源代码。。。还包含了一个ACCESS数据库。下载的朋友把数据库的路径改下。
  • 关于网络投票刷票神器的代码编写今天我抽空来跟大家说下网络投票刷票神器的代码编写问题,因为最近有太多的小伙伴都是因为不知道怎么编写网络投票刷票神器的代码找到我,都想从我这里咨询到这些相关的问题,那么这里...

    关于网络投票刷票神器的代码编写

    今天我抽空来跟大家说下网络投票刷票神器的代码编写问题,因为最近有太多的小伙伴都是因为不知道怎么编写网络投票刷票神器的代码找到我,都想从我这里咨询到这些相关的问题,那么这里我直接把已知的一些网络投票刷票神器的代码分享给大家吧,这样大家就可以直接借鉴下了,就不需要一直来问我了

    7b30e5e0bfa8d4e85aaa51a946356d96.png

    cout += 1;

    tempmax = cout / total

    if tempmax > maxn:

    maxn = tempmax;

    pos = noi

    if pos == 8 or pos == 3:

    ret = “0”

    break;

    ret = ret + str(pos);

    return ret

    def DownloadImage():

    urimg = urllib2.urlopen(“http://info.zjnu.edu.cn/zqtp/imgchk/validatecode.asp”).read()

    img = Image.open(StringIO.StringIO(urimg))

    img.save(r”.\20.jpeg”)

    def Submit(cc):

    post_data = urllib.urlencode(

    {“161”: “161”, “170”: “170”, “185”: “185”, “164”: “164”, “157”: “157”, “validatecode”: cc, “post”: “post”,

    “vote_type”: “1”, “Submit”: “%C8%B7%B6%A8”});

    #print post_data

    path = “http://info.zjnu.edu.cn/zqtp/check.asp”

    req = urllib2.Request(path, post_data)

    conn = urllib2.urlopen(req)

    txt = conn.read()

    print txt.decode(“gbk”)

    def ChangeIp(x):

    os.system(“WindowsApplication1\\” + str(“%03d” % x) + “.bat”)

    if __name__ == “__main__”:

    print “程序开始运行”.decode(“utf-8″)

    os.system(r”WindowsApplication1\001.bat”)

    for x in range(2, 250):

    print “开始修改IP…”.decode(“utf-8”), str(“%03d” % x) + “.bat”

    ChangeIp(x)

    print “IP修改成功!”.decode(“utf-8”)

    cj = cookielib.CookieJar()

    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))

    opener.addheaders = [(‘User-agent’, ‘Opera/9.23’)]

    urllib2.install_opener(opener)

    while True:

    try:

    DownloadImage()

    except Exception, ex:

    cc = 0

    break;

    cc = CheckCode()

    print cc;

    if int(cc) != 0:

    break;

    if cc == 0:

    print “IP修改有误,不准备投票,直接跳过….”.decode(“utf-8”)

    continue

    print “准备开始投票”.decode(“utf-8”)

    print “|——————————————————-|”

    Submit(cc)

    print “|——————————————————-|”

    print “程序运行结束”.decode(“utf-8”)

    版权说明:文章均为海王信投票专家原创,转载本文请注明出处和附带本文链接:https://www.aivtp.com/4280.html

    展开全文
  • 投票系统代码

    2012-08-22 10:01:43
    vote文件夹,投票小系统!php代码投票网页
  • jQuery选中图片打勾投票代码基于jquery-1.9.1.js制作,简单实用,投票图片中显示姓名、票数。
  • 投票代码

    2012-01-10 11:13:49
    投票的小代码,可以参考一下,里面的代码比较简单。
  • 投票倒计时(可以设置计时和颜色,纯网页代码
  • 网页投票系统

    2014-12-21 14:37:13
    主要运用了Java以及标准MVC架构,标注了里面的最主要的代码以及完成页面。
  • jQuery投票征名代码.zip

    2019-05-23 15:35:36
    jQuery投票征名代码基于jquery.1.4.2.js制作,鼠标经过投票项目动态显示征名释义。
  • 网络投票系统投票界面代码分享

    千次阅读 2018-09-05 22:12:50
    用户登录界面的具体代码如下 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&...

    投票界面包括用户的登陆,所有投票题目的呈现,每个投票信息的具体呈现
    用户登录界面的具体代码如下

    <!DOCTYPE html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="viewport" content="initial-scale=1.0,width=device-width" />
    <title>用户登录</title>
    <script type="text/javascript" src="js/jquery.min.js"><http://www.aivtp.com/>

    <link rel="stylesheet" href="css/add.css" type="text/css" media="screen" />
    <link rel="stylesheet" href="utilLib/bootstrap.min.css" type="text/css" media="screen" />
    <style type="text/css">
    @media screen and (max-width:768px){
        .div_from_aoto{
            padding:6em 0 0 1em;
            width:100%;
            margin:100px auto;

        }
    }
    </style>
    </head>
    <body>
    <div class="div_from_aoto" style="width: 300px;">
        <FORM action="logincheck.php" method="post" enctype="multipart/form-data" name="form1" id="form1">
            <DIV class="control-group">
                <label class="laber_from">用户名</label>
                <DIV  class="controls" ><INPUT class="username" name="username" type=text placeholder=" 请输入用户名"><P class=help-block></P></DIV>
            </DIV>
            <DIV class="control-group">
                <LABEL class="laber_from">密码</LABEL>
                <DIV  class="controls" ><INPUT class="passwd" name="passwd" type=password placeholder=" 请输入密码">
                <P class=help-block></P></DIV>
            </DIV>

            <DIV class="control-group">
                <LABEL class="laber_from" ></LABEL>
                <DIV class="controls" ><button class="btn btn-success" style="width:120px;" >登录</button></DIV>
            </DIV>
      </FORM>
    </div>
    </body>
    </html>

    这里涉及到一个账号登陆问题,这里包括一个普通用户的登陆进入投票列表界面,还有一个是管理员进入后台管理系统(进入后台管理系统的代码见之后的文章)。账号密码的登陆,首先账号密码要匹配才能登陆,其次是防止通过url直接跳过账号密码的检测进入后台管理系统,解决方法是先对$_SESSION['user']'和$_SESSION['name']初始化为null,再对账号密码进行检测,然后再对管理员身份进行检测。具体代码如下:

    <?php
        include("../sqlsafe.php");
        include("../conn.php");
        $_SESSION['user'] = $_SESSION['admin'] = NULL;
        $username = $_POST['username'];
        $passwd = $_POST['passwd'];

        $sql = "select * from users where username='$username' and passwd='$passwd';";
        $result = $db->query($sql);
        if($result->num_rows > 0){
            $rank = $db->query("select * from users where username='$username' and admin='1'");
            @session_start();
            if($rank->num_rows > 0){
                $_SESSION['admin']=true;
                $_SESSION['user']=false;
                $_SESSION['name']=$username;
                echo "<meta http-equiv=\"Refresh\" content=\"0;url=../index.php\">";
            }else{
                $_SESSION['user']=true;
                $_SESSION['admin']=false;
                $_SESSION['name']=$username;
                echo "<meta http-equiv=\"Refresh\" content=\"0;url=../list.php\">";
            }

        }else{
            echo "<script>alert('账户或密码错误')</script>";
            echo "<meta http-equiv=\"Refresh\" content=\"0;url=login.html\">";
        }

    ?>


    而防止通过url跳过检测的方法是通过session检测是否已经登陆过,若没有,则会跳转到登陆界面

    <?php
        @session_start();
        if( !isset($_SESSION['admin']) || !isset($_SESSION['user']) || ( $_SESSION['user']!== true && $_SESSION['admin']!== true ) ){
            echo "<meta http-equiv=\"Refresh\" content=\"0;url=login.html\">";
            exit();
        }

        1
        2
        3
        4
        5
        6

    其中conn.php的作用是链接数据库,具体代码为

    <?php

        $db = new mysqli('127.0.0.1','root','lrwje520','simplevote1');
        $db->query("SET NAMES utf8");
        if(mysqli_connect_errno()){
            echo "据库连接失败";
            exit();
        }
    ?>

     

    投票页面的呈现,这其中的难点就是多个投票标题的呈现,解决方法就是对数据库的提取,即$result_name = $db->query ( "select * from votename" );这是对整个表的提取,接下来是对表中每一行数据的提取这里用$row_name = mysqli_fetch_assoc ( $result_name ),当然 mysqli_fetch_assoc可以改成mysqli_fetch_array,作用是将以一个普通的关联数组的形式返回一条结果记录,用while语句对其进行判断,每次读取一行,直到读取完全部投票题目,就能实现把所有投票题目呈现出来,具体代码如下:

        <?php
        include("conn.php");

        @session_start();
        header("Cache-control:private");
        if( $_GET['do'] ){
            if($_GET['do']=="logout"){
                unset($_SESSION['user']);
                unset($_SESSION['name']);
                @session_destroy();
            }
        }
        $result = $db->query("select * from sysconfig");
        $row = mysqli_fetch_assoc($result);
        $username = $_SESSION['name'];
        $result1 = $db->query("select * from users where username = '$username'");
        $row1 = mysqli_fetch_assoc($result1);
    ?>
    <!DOCTYPE html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="viewport" content="initial-scale=2.0,width=device-width" />
    <title></title>

    <script type="text/javascript" src="admin/js/jquery.min.js"></script>
    <link rel="stylesheet" href="main1.css" type="text/css" media="screen" />

    </head>
    <body>
    <div class="main">
        <div id="header" >
            <div >
            <?php if( !isset($_SESSION['user']) || $_SESSION['user']!==true ){ ?>
                <a href="admin/login.html">登录投票</a>
            <?php }else{ ?>
                <span>你好,<?php echo $row1['name']; ?></span>
                <a href="admin/index.php">&nbsp;查看投票数据</a>
                <a href="admin/alter_password.html">&nbsp;修改密码</a>
                <a href="index.php?do=logout">&nbsp;登出</a>
            <?php } ?>
            </div>
        </div>
        <form action="index.php" method="get">
        <div class="content">
            <div>
                <h1><?php echo $row['vote_name']; ?></h1>
                <div class="description">
                    <?php echo $row['description']; ?>
                </div>  
            </div>

            <?php
                $num = 0;
                $result_name = $db->query ( "select * from votename" );
                while ( $row_name = mysqli_fetch_assoc ( $result_name ) ) {
                $num += 1;
                $a = $row_name['question_name'];
            ?>
            <div class="mcontent">
            <a class="list-link" href="index.php?question_name=<?php echo $a ?>">
            <span  name='question_name' id="question_name">
            <h2><?php echo $num.".".$row_name['question_name']; ?></h2>
            </span>
            </a>
                </div>
                <?php } ?>
                <div style="clear:both;"></div>
            </div>
            <?php if($result_name->num_rows > 0){
            ?>
            <?php }else{ ?>
                <h1>当前没有投票</h1>
            <?php } ?>
            <br>
        </div>
      </form>


    </div>
    </body>
    </html>

     

    这当中if( !isset($_SESSION['user']) || $_SESSION['user']!==true ){ ?>
    <a href="admin/login.html">登录投票</a>的作用也是防止通过url跳过检测,当然也是使用了session来判断是否已经登陆,若还未登录则跳转到登陆界面。
    当实现了对所有投票题目的呈现后,就要考虑每一个投票的具体呈现,这里涉及到每个投票内容与该投票题目的匹配问题,所以在上述的代码中,我将每一个投票题目设置了<a>标签,并且让其跳转页面的url设置href="index.php?question_name=<?php echo $a ?>"当中的$a就是该投票题目,这样一来在每个投票题目具体的呈现页面中我就可以通过解析该url来获取它的投票题目,进而获取该投票题目的全部内容,具体代码如下:

        <?php
        include("conn.php");

        @session_start();
        header("Cache-control:private");
        if( $_GET['do'] ){
            if($_GET['do']=="logout"){
                unset($_SESSION['user']);
                unset($_SESSION['name']);
                @session_destroy();
            }
        }
        $result = $db->query("select * from sysconfig");
        $row = mysqli_fetch_assoc($result);
        ?>
    <?php
        $url = $_SERVER["QUERY_STRING"];
        $test = parse_url("$url");
        $name = $test[path];
        $start = strrpos($name, '=');
        $unquestion_name = substr($name , $start+1);
        $question_name=urldecode($unquestion_name);
        $username = $_SESSION['name'];
        $result1 = $db->query("select * from users where username = '$username'");
        $row1 = mysqli_fetch_assoc($result1);
    ?>
    <!DOCTYPE html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="viewport" content="initial-scale=2.0,width=device-width" />
    <title></title>

    <script type="text/javascript" src="admin/js/jquery.min.js"></script>
    <link rel="stylesheet" href="main1.css" type="text/css" media="screen" />

    </head>
    <body>
    <div class="main">
        <div id="header">
            <div >
            <?php if( !isset($_SESSION['user']) || $_SESSION['user']!==true ){ ?>
                <a href="admin/login.html">登录投票</a>
            <?php }else{ ?>
                <span>你好,<?php echo $row1['name']; ?></span>
                <a href="admin/index.php">&nbsp;查看投票数据</a>
                <a href="admin/alter_password.html">&nbsp;修改密码</a>
                <a href="index.php?do=logout">&nbsp;登出</a>
            <?php } ?>
            </div>
        </div>

        <form action="vote.php?question_name=<?php echo $question_name ?>" method="post">
        <div class="content">
            <div>
                <h1><?php echo $row['vote_name']; ?></h1>
                <div class="description">
                    <?php echo $row['description']; ?>
                </div>
            </div>

            <?php
                $result_cid = $db->query ( "select * from votename where question_name = '$question_name'" );
                $row_cid = mysqli_fetch_assoc ( $result_cid ) ;

            ?>
            <div class="mcontent">
                <h3><?php echo $question_name; ?></h3>
                <?php
                    $result_option = $db->query ( "select * from voteoption where upid='" . $row_cid ['cid']. "';" );

                    while ( $row_option = mysqli_fetch_assoc ( $result_option ) ) {
                ?>
                <div class="obox">
                    <?php
                        if($row_cid['votetype']=="0"){
                            echo '<input name="'.$row_cid['cid'].'" type="radio" value="'.$row_option['cid'].'">'.$row_option['optionname'];
                            ?>
                            <br>
                            <?php
                            $result_image = $db->query ( "select * from ccs_image where upid='".$row_option['cid']. "';" );
                            $row= mysqli_fetch_assoc ( $result_image);
                            if($row[filename]){
                                ?>
                                <h2><?php echo "$row[description] "?></h2>
                                <?php   
                                echo "<img src=\"admin/upload/lk/".$row[filename]."\"><br>";
                            }

                             ?>
                        <?php  }else if($row_cid['votetype']=="1"){
                            echo '<input name="'.$row_cid['cid'].'" type="checkbox" value="'.$row_option['cid'].'">'.$row_option['optionname'];
                        }
                    ?>

                </div>
                <?php } ?>
                <div style="clear:both;"></div>
            </div>
            <?php if($result_cid->num_rows > 0){
            ?>


            <div class="votebu">
                <input  type="text" name="code_num" maxlength="4" />
                <img  onClick="this.src='img.php'" src="img.php"  alt="看不清,点击换一张">
                <input  name='question_name' id="question_name" type="submit" value="投票"  >
                <input name="num" type="hidden" value="<?php echo $num; ?>">
                <div ></div>
            </div>
            <?php }else{ ?>
                <h1>当前没有投票,请先登陆</h1>
            <?php } ?>
            <br>
        </div>
      </form>
      </div>
    </body>
    </html>

       

    上述代码中获取url的方法为
    $url = $_SERVER["QUERY_STRING"];//获取完成url
    $test = parse_url("$url");//将url转变成数组
    $name = $test[path];//提取url中path项,即question_name=$a
    $start = strrpos($name, '=');
    $unquestion_name = substr($name , $start+1);//获取乱码的question_name
    $question_name=urldecode($unquestion_name);//解析乱码的question_name
    在选项的呈现中包括一个是单选或者是多选的问题,在数据库中对单选或多选的题目设置了标签,votetype是0则为单选,1为多选所以有个判断语句判断但单选还是多选,而选项的呈现则和所有投票题目呈现的原理一样。
    这里还包括对应照片的呈现,我的方式是将照片的信息存储在数据库中,而照片则存储在指定文件夹,通过寻找数据库中对应照片的名字到指定文件夹寻找该照片并呈现出来,输出照片的代码echo "<img src=\"admin/upload/lk/".$row[filename]."\"><br>"。

     

    展开全文
  • 主要介绍了JSP实现的简单Web投票程序代码,较为详细的分析了JSP实现投票功能的具体步骤与相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
  • 破解网页投票的方法

    2014-01-17 14:15:00
    转载的这篇有点技术含量,是利用网站的漏洞抓数据包来破解的,网页代码是PHP,转过以后再看懂它。 转自http://www.sharejs.com/codes/html/6826 针对限制ip的投票网站作弊方案,这个方法利用了投票网站监测远程...

    前段时间班里有十佳的投票,看到其他学院的把票神奇地刷了很高,所以自己百度了一下破解的方法,下次有需要再用。

    一般都是换IP,用代理之类的。

    转载的这篇有点技术含量,是利用网站的漏洞抓数据包来破解的,网页代码是PHP,转过以后再看懂它。

    转自http://www.sharejs.com/codes/html/6826

     

    针对限制ip的投票网站作弊方案,这个方法利用了投票网站监测远程ip的一些漏洞来实现,并没有真正的伪造ip地址,http是建立的tcp之上的第七层,是不可能伪造真实ip地址的

    最近朋友需要一个投票软件,我最近也就研究了一下这个投票网站,这个投票网站有验证码,每个IP限制为一票,看起来是标准的投票网站。我先研究了一下验证码:

    这个投票网站的验证码开始很简单,标准位置的标准四个数字,很好识别。后来变态到位数不一定,而且还有字母,而且还位置上下不一定,这下验证码的识别,不但是软件很难识别,就连人工识别都困难。山穷水尽疑无路,柳暗花明又一村,请看下段分解!

    在我不断的分析和研究发现他的验证码检查有漏洞,发现了这个漏洞,这个验证码已经形同虚设,无需识别,无需验证码,直接就绕过去了,因为他只在投票选项页设置检查验证码是否为空的 js代码,js代码是运行在客户端,这种验证的效果为零,一般JS这种验证只是为了方便用户来使用的,做为投票网站只使用这一种验证方式,在投票处理动态页面竟然不检查验证码是否为空,实在是不敢恭维,给网站的安全带来极大的隐患。

    对于验证码的问题,我已经了解了破解方法,只要在投票的时候不直接访问验证码文件,那么验证码就是为空,既然他的动态页面不检查验证码是否为空,所以只要在post的时候验证码参数为空就可以了。

    那么还有一个问题就是这个投票网站检查IP,限制一个IP只允许投票一次,那么只有使用代理,或者通过不停的断网和拨号才能实现。我实在想不到其他好办法,后来这个朋友找到了一个可以极速在这个网站投票的程序,我对这个程序的IP解决方案很好奇就问朋友要来想分析一下。

    首先我是采取对这个投票软件进行抓包的方式来研究,准备好了之后,打开投票程序“刷!提示软件冲突!”晕,不会吧,那我就关掉一些程序,都关完了只留一个抓包程序还提示冲突,呵呵,原来这个程序竟然还知道有人可能会分析他的软件,竟然遍历进程名称,检查是否有可疑的程序,如果有程序对他进行分析或者抓包,他就拒绝运行。呵呵,目前我知道他限制的软件有易语言编程软件,还有 WSockExpert_Cn 抓包软件。呵呵,关了易语言,把 WSockExpert_Cn 名称改一下,顺利通过软件的自身安全检测,运行成功。


    以下是我在使用过程中他投票是的数据包:

    <!--该代码片段来自于: http://www.sharejs.com/codes/html/6826-->

     

    POST /vote/view.php?sid=33&act=vote HTTP/1.1
    Accept: */*
    Referer: http://www.qdnfy.gov.cn/vote/vote.php
    Content-Type: application/x-www-form-urlencoded
    X-Forwarded-For: 218.20.218.200
    CLIENT_IP: 218.20.218.200
    VIA: 218.20.218.200
    REMOTE_ADDR: 218.20.218.200
    Accept-Language: zh-cn
    Accept-Encoding: text
    User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506)
    Host: www.qdnfy.gov.cn
    Cookie: PHPSESSID=pldjnb6scereodjm5niqb9q990
    Content-Length: 49
    Connection: Close

    X-Forwarded-For 发现了这个http头参数 后面跟着IP,呵呵,这个参数肯定有来头,原来我一直不知道,呵呵,赶紧百度一下。

    下面是百度后的一篇说明文章,说得很好,大家看看。


    --------------------------------------------------------------------------------

    伪造HTTP头中的X-Forwarded-For字段来伪造IP
    百度了一下X-Forwarded-For的原理,这东西出来好长时间了.我还第一次听说
    X-Forwarded-For:简称XFF头,它代表客户端,也就是HTTP的请求端真实的IP,只有在通过了HTTP 代理或者负载均衡服务器时才会添加该项。
    它不是RFC中定义的标准请求头信息,在squid缓存代理服务器开发文档中可以找到该项的详细介绍。
    标准格式如下:
    X-Forwarded-For: client1, proxy1, proxy2
    从标准格式可以看出,X-Forwarded-For头信息可以有多个,中间用逗号分隔,第一项为真实的客户端ip,剩下的就是曾经经过的代理或负载均衡的ip地址,经过几个就会出现几个。
    wiki 的X-Forwarded-For解释 http://en.wikipedia.org/wiki/X-Forwarded-For
    分析:
    既然是要伪造客户端IP,那我们先看看一般是怎样获取客户端IP地址的(以php为例).这段代码是在百度搜索到的.大部分网站可能都用这段代码

    <!--该代码片段来自于: http://www.sharejs.com/codes/html/6826-->

    $user_IP = ($_SERVER["HTTP_VIA"]) ? //是否使用了代理 
    $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"]; 
    //获取失败则从REMOTE_ADDR获取
    $user_IP = ($user_IP) ? $user_IP : $_SERVER["REMOTE_ADDR"]; 
    ?>

    首先判断HTTP_VIA头是否存在,HTTP_VIA头代表是否使用了代理服务器.如果没有那就从REMOTE_ADDR字段获取客户端的IP地址,如果有那就从X-Forwarded-For获取客户端I

    我估计很多程序员都是从百度来的代码吧.asp也类似

    然后我们来测试一下.

    服务端代码

    //输出HTTP_X_FORWARDED_FOR 
    echo "HTTP_X_FORWARDED_FOR:".$_SERVER["HTTP_X_FORWARDED_FOR"]; 
    //输出REMOTE_ADDR echo "REMOTE_ADDR:". $_SERVER["REMOTE_ADDR"]; 
    ?>

    可以看到获取到的客户端ip地址是不一样的.REMOTE_ADDR为真实地址
     所以一个网站如果是从X-Forwarded-For来判断客户端IP地址的话,那么我们就可以利用这个逻辑漏洞刷票

     

    转载于:https://www.cnblogs.com/weili-wu/p/3523113.html

    展开全文
  • 如何利用C#编写网页投票器程序|如何使用代理来投票|代理IP来投票 一、前言 看个图,了解下投票的过程。 提交投票信息 投票页 ――――――――>投票信息处理页 反馈投票结果 (请求页)――――――...
    如何利用C#编写网页投票器程序|如何使用代理来投票|代理IP来投票

    一、前言
    看个图,了解下投票的过程。
    提交投票信息
    投票页 ――――――――>投票信息处理页
    反馈投票结果
    (请求页)<―――――――(响应页)
    一般情况下,填写投票信息,然后点提交按钮发送到响应页,这样来完成一个投票。这过程繁琐,还不能多次投票。有时,手工投票达不到所期待的效果。
    曾帮朋友弄过几次投票,坛里有朋友也PM说要看看源代码。投票器应该说没有一个固定的框架,一些处理方法上需要视响应页做针对性的改动。
    自己写的源代码太杂乱,放出来怕丢人。10.1放假窝在家里写了点心得,与大家分享一下。看过之后,你也可以写。不当之处请指正。

     制作投票器,最关键的二样东西是获得投票信息和找到响应页。也就是说通过请求页访问(提交)响应页时,提交了什么信息,并且这个响应页是什么。找到了这两样,投票器完成了一大半。
    二、编写投票器所需要的一些HTTP知识
    1、 最好是写过一些网页。看某网页的源文件,可以很快找到哪些是form表单、BUTTON提交按钮、INPUT文件框等内容。
    恶补网站:
    http://www.lib.tsinghua.edu.cn/chinese/INTERNET/HTML/Normal/html_design.html
    http://www.w3.org/TR/REC-html40/index/elements.html
    http://www.w3.org/TR/REC-html32.html

    2、了解一个HTTP的消息头由哪些内容组成。如下是一个表单提交后,向网站发送的消息头内容:

    POST /redsky/temp/whu_tp/vote.asp HTTP/1.1 //定义HTTP是一个POST动作
    Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */*
    //响应页可以使用的媒体类型
    Referer: http://pmc.whu.edu.cn/redsky/temp/whu_tp/whu_tp.asp //请求页的网址
    Accept-Language: zh-cn //指定的字符集类型
    Content-Type: application/x-www-form-urlencoded
    Accept-Encoding: gzip, deflate
    User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; mxie; .NET CLR 1.1.4322)
    Host: pmc.whu.edu.cn
    Content-Length: 46 //提交数据的长度
    Connection: Keep-Alive
    Cache-Control: no-cache
    Cookie: ASPSESSIONIDQSCDRSCC=NHNDPPNDPJJFBBJMLBAOMHOD //提交时所传送的Cookie值。

    voted=25&voted=30&voted=35&Submit=%CD%B6%C6%B1 //提交时,所传送的数据

    恶补网站:
    http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14

    小结: WIN form 、WEB FORM两样都得精通,这是师傅2002年说的。


    三、辅助软件
    查看HTTP消息头的软件,专门的软件有HTTP Watch(
    http://www.hanzify.org/index.php?Go=Show::List&ID=4384)或IEWatch,
    也可以用 CommView (这些天www.ttdown.com上的软件没法下载:-()之类抓包的软件。


    四、手工分析投票过程
    先说说手工操作时一个正常的投票过程(以武汉大学的这个投票为例)
    http://pmc.whu.edu.cn/redsky/temp/whu_tp/whu_tp.asp
    选择被投票人石云霞(在姓名前面打勾),然后点“投票”,响应页接收被投票人的姓名并记录投票数记录投票人的IP,然后返回投票成功或重复投票的信息。
    这一过程很简单,但我们不知道点投票后,浏览器向网页发送了什么信息。在这里,先别急着用软件来看,尝试手工分析,这有助于一些复杂情况的解决。
    回到投票的网页,查看源文件(前面所提到的http基本知识派上用场了),
    a)首先找响应页是什么,也就是接收处理投票信息的网页。在记事本中按Ctrl+f,查找’<form’字符串。通过搜索,找到这么一行:
    <form name="form1" method="post" action="vote.asp">
    Form表单的名称name=form1,方法method=post,动作action=vote.asp 。vote.asp是我们所关心的,这个就是响应页的地址。
    整理地址得到:http://pmc.whu.edu.cn/redsky/temp/whu_tp/vote.asp
    b)查找被投票人的信息。被投票人的选择是通过一个多选框来完成,那么在源文件里查找’<input’字样。通过搜索,找到了以下内容。
    <input type="checkbox" name="voted" value="25">
    <a href="whu_tp_more.asp?id=25" class="index" target="_blank">
    石云霞</a> <b><font color="#FFFF00" size="2">  </font></b>

    <input type="checkbox" name="voted" value="26">
    <a href="whu_tp_more.asp?id=26" class="index" target="_blank">
    李义天</a> <b><font color="#FFFF00" size="2">  </font></b>
    ………………………….
    从这一大串内容中可以看出,石云霞的编号为25,李义天的编号为26 ,input元素的名称为voted。 整理一下voted=25这是被投票人的信息。
    查找input的时候需要注意,看是否有hidden类型的input元素。隐藏一定数量的input元素,可以起到一定的防范作用。
    在源文件里一直看下去,只到</form>为止。在</form>前还有两个按钮,
    <input type="submit" name="Submit" value="投票">
    <input type="reset" name="Submit2" value="重置">
    组合一下 submit=投票 submit2=重置(这个内容可以忽略)。
    c) 最后整理一下,得到一个完整的网址
    http://pmc.whu.edu.cn/redsky/temp/whu_tp/vote.asp?voted=25& submit=投票
    在浏览器中访问一下这个地址,看有什么提示??,提示“投票成功“。再次访问提示“你的IP已经投过一次了^_^”。这说明这个网址就是真正的投票网址。只要不断地访问这个网址,就可以达到投票的目的。

    小结:没写过网页也没关系,通过辅助软件也可以分析出这一网址。


    五、软件分析投票过程
    安装HTTPWATCH后,重启机器,可以在IE标准按钮栏中找到它的图标(没有的话,从菜单‘查看’->‘浏览器栏’中选择),单点图标后如图,IE窗口下半部分显示出HTTPWATCH的工作窗口。
    http://bbs.et8.net/bbs/attachment.php?attachmentid=339392&stc=1
    图中显示的内容是选择点击‘投票’按钮后,IE与网站之间的数据流。上半部分记录了IE访问了哪几个网页,下半部分是访问某个网页时,具体的数据流。
    (HTTPWATCH的使用方法在这里不细讲了。)
    我们在正常浏览网页时,IE一般的动作都是GET。而投票过程中,IE需要将你的选择(被投票人的姓名)提交给投票的网址,访问这个网址时,IE将产生一个POST动作。查看HTTPWATCH的记录,URL=http: //pmc.whu.edu.cn/redsky/temp/whu_tp/vote.asp时,IE的动作是POST。那么http: //pmc.whu.edu.cn/redsky/temp/whu_tp/vote.asp就是投票的响应页。这和前面手工分析时找到的响应页是一致的。
    找到了响应页,接下来找投票的信息,也就是IE提交了什么数据。这里看HTTPWATCH窗口的下半部分。
    下半部分是一个TAB PANEL,看重要的几个标签。
    HEADERS:提交到响应页的HTTP HEADER的内容。
    Cookies:提交时,Cookies的内容。
    POST DATA:提交时,IE向响应页发送的数据。
    STREAM:提交时,本地机器与网站之间的传输的数据流。
    http://bbs.et8.net/bbs/attachment.php?attachmentid=339393&stc=1
    显而易见,POST DATA是我们要找的内容。看到这个标签,左边是两个参数名voted 和submit ,右边是两个参数的值,‘25’和‘投票’。整理一下得到:
    Voted=25 submit=投票
    将这两个参数值与前面找到的网址整理一下,得到
    http://pmc.whu.edu.cn/redsky/temp/whu_tp/vote.asp?voted=25& submit=投票

    六、编写投票器
    找到了真正的投票URL,用C#做投票器就简单了,无非是做到:如何循环地访问这个网页。
    看下面的这个过程。

    ………
    using System.Net;
    ………

    public int GotoURL( out string message,string url,int timeout,string proxyurl,string keyword,out int rate,bool proxyed)
    /*
    Message:返回的信息
    Url:需要访问的地址
    Timeout:超时时间
    Proxyurl:代理的地址
    Keyword:判断投票成功的标志
    Rate:访问url所花费的时间
    Proxyed:是否使用代理
    */
    {
    byte[] gbyte=new byte[1024];
    string strInput;
    int iret=3;
    int i,len=0;
    DateTime dtBegin=DateTime.Now;
    message="正在访问中。。。";
    try
    {

    url=@"http://pmc.whu.edu.cn/redsky/temp/whu_tp/vote.asp?voted=25& submit=投票";
    WebRequest myWebRequest=WebRequest.Create(url);
    myWebRequest.Timeout=timeout;//设置超时时间=15000毫秒

    if (proxyed)//是否使用代理功能
    {

    WebProxy myProxy=new WebProxy();//实例化一个WebProxy类,这个类设置WebRequest的Proxy属性,这样可以通过代理来访问url。
    myProxy=(WebProxy)myWebRequest.Proxy;
    string proxyAddress= proxyurl;
    Uri newUri=new Uri(proxyAddress);
    myProxy.Address=newUri;
    myWebRequest.Proxy=myProxy;
    }
    WebResponse myWebResponse=myWebRequest.GetResponse();//实例化一个WebResponse类,用于接收WebRequest的响应内容,依据内容来判断投票是否成功。
    Stream streamResponse=myWebResponse.GetResponseStream();// 实例化一个Stream类,从WebResponse接收数据流。

    i=streamResponse.Read(gbyte,len,1024);
    len+=i;
    while(i!=0)
    {
    i=streamResponse.Read(gbyte,len,1024);
    len+=i;
    }

    strInput=System.Text.Encoding.GetEncoding("gb2312").GetString(gbyte);
    i=strInput.IndexOf("成功");
    Console.WriteLine(i);
    if (i==-1)
    message="访问成功";
    else
    message="访问失败";// 将数据流转换成字符串,并从中判断投票是否成功。
    iret=0;
    streamResponse.Close();
    }

    catch (System.Net.WebException we)
    {
    message="NetError"+we.Message;
    }
    catch (System.IO.IOException ie)
    {
    message="IOError"+ie.Message;
    }
    catch (System.Exception ex)
    {

    message=ex.Message;


    }

    TimeSpan ts=DateTime.Now-dtBegin;
    rate=(int)ts.TotalMilliseconds; //获取访问的时间。
    return iret;
    }

    过程很简单,就是使用System.Net中的两个类来访问网页。
    创建实例:WebRequest myWebRequest=WebRequest.Create(url);
    访问网页:WebResponse myWebResponse=myWebRequest.GetResponse();
    流StreamResponse视响应页的处理方法,可能没有任何返回内容。
    Stream streamResponse=myWebResponse.GetResponseStream();

    考虑到一个IP只能投票一次的限制,过程加了使用代理的功能
    WebProxy myProxy=new WebProxy();
    这样即可以当投票器来使用,也可以用于检测代理的有效性。

    接下来的事,就容易多了。找代理,循环调用这个过程。循环速度感觉慢的话,可以用多个线程一起来跑。


    小结:直接访问响应页就能投票,这是最常见的投票方式。网页设计人员没有在响应页做防范处理,从而为投票器创造了的条件。
    防范措施通常有以下几种:
    1、 对HTTP HREADERS里的REFERER做判断,为空表示没有访问过投票页(提交页)。这样绕开请求页,直接访问响应页是无效的。
    2、 访问投票页时,在headers里的cookies里设置某种标志,提交时,响应页对这个标志做判断。没有这个标志,直接访问响应页是无效的。
    3、 访问投票页时,随机生成N位数字验证码,响应页对验证码做判断。
    4、 生成图形验证码。响应页对验证码做判断。
    第1、2种方法容易处理,研究出规律,设置WebRequest的headers属性。
    第3种方法需要多加个过程,首先访问投票页得到验证码,然后与其他data组合一同post给响应页。
    第4种无解,和和。不过,还没发现哪种投票会用上图形验证码这措施。手工投票不仅麻烦,同时也关闭了自己、他人的方便之门。


    结言:
    不管投票方式如何,投票所需填写的内容有多复杂,最终它还是要提交给响应页做处理。多看看http watch。
    不会编程也没关系,找代理软件,利用代理检测的功能,投票。

    展开全文
  • 具体如下:一、js柱状投票图效果图:实现代码:js柱状投票图body { font-weight:bold; color:#fff; font-size:16px; font-family:Arial, Helvetica, sans-serif; background-color:#000000;}.zhu { ...
  • 说明:showvote.asp 为显示结果页面 vote.asp 为接收参数并入库页面 html投票表单代码.htm 为投票表单html代码
  • 利用C#编写网页投票器程序

    千次阅读 2012-11-05 11:26:54
    一、前言 看个图,了解下投票的过程。 提交投票信息 投票页 ――――――――>投票信息处理页 ...曾帮朋友弄过几次投票,坛里有朋友也PM说要看看源代码投票器应该说没有一个固定的框架,一些处理方法上需
  • 网页form及input按钮的读写以及自动提交form 定时器的使用 图形数字识别 投票结果查看网址: http://www.scient.com.cn/picCountrywide.asp?province=&city;=&page=1 默认投票对象是: 照片编号:630 姓 名...
  • 网上投票系统刷票代码

    千次阅读 2014-10-16 09:56:02
    下面的代码就是利用curl扩展来伪造ip地址 达到无限制投票; $times = $_POST['times']; //投票次数 $url = $_POST['url']; //投票地址[某个选手下方投票按钮的链接] while ($times) { $ip1 = 'X-...
  • javaweb投票统计模块源代码,该代码用javaweb做了一个投票模块,要做和该模块相关的可以参考下
  • 微信投票软件制作代码

    千次阅读 2018-09-22 13:14:10
    当下微信投票热,大家都比较喜欢进行刷投票,那么是否可以用微信投票软件来操作呢?...投票软件,制作教程及源代码分享 BeautifulSoup+selenium +firefox from bs4 import BeautifulSoup from selenium import w...
  • 第三方投票自动化刷投票脚本代码

    千次阅读 2018-09-18 19:31:36
    第三方投票自动化刷投票脚本代码 主要内容 分析网站 表单提交 构造代理IP池 分析网站 由于每个网站需要提交的信息都不一样,那么首先我们需要对目标网站进行相对应的分析,找出他们的表单接口(也就是URL或者叫...
  • 源自:3-1 使用JS实现删除分享功能...padding: 0;}ul{list-style: none;display: table;}i.close{position:absolute;display:none;font-style: normal;background-color: gray;padding: 5px;cursor: pointer;margi...
  • 使用方法:1、head引入css文件2、body引入部分投票公布50%50%红队投票数:0蓝队投票数:0window.onload = function () {//获取div1及下面的divvar oDiv = document.getElementById('div1');var aDiv = oDiv....
  • 投票美化后PHP代码 这篇文章是根据《PHP动态网站开发实例教程》所学课程所编译,运行与腾讯云开发者平台 若有看不懂的请私信或加vx了解 代码如下 <html> <head> <meta ...
  • 15.4.3网页投票器 本处设计一个网页投票器,它访问“www.zhiliaowang.com”上的服务程序“/toupiaoceshi.asp”,并通过...代码15-16网页投票器(节自/code/chapter15/http1.c) #include <comlib.h> char b...
  • 详细的介绍了投票模板该使用的地方,以及投票模板制作的格式,同时还给出了投票模板制作的范例。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,258
精华内容 4,103
关键字:

网页投票代码