如何使用PHP来编写一个自动投票程序

凝雪紫衣88

凝雪紫衣88

2016-01-29 13:23

如何使用PHP来编写一个自动投票程序,如何使用PHP来编写一个自动投票程序

 ***********************************************************************************
* 版权声明
* 此文章为ocean所有,版权归ocean所有,任何网站
*和 媒体转载必须包含此段声明,否则将视为侵权,作者将
* 保留一切权力。此声明为此文章中不可或缺的一部分。
* 作者网名:ocean
* 作者email:ocean@forever.net.cn
* 作者网站:http://www.oceanstudio.net
* http://sps.oceanstudio.net
* 作者blog:博客园,http://www.cnblogs.com/ocean
* 此文章发表时间:2005年2月1日
* 此文章源: http://www.cnblogs.com/ocean/archive/2005/02/01/100445.html
************************************************************************************
我经常去网站抓些东西,有时也做一些自动填写表单的事情。最近接手了一个投票的任务,也即需要编写一个程序自动投票,从而也引发了如何编写自动投票程序和如何编写投票程序(投票程序怎么样防止自动投票)的话题。正所谓道高一尺、魔高一丈。自动投票和投票程序本身就是一种对弈状态。
如何编写投票程序,大致分为这么几步:

1:手动投票,分析中间出现的每一个页面的代码,找出投票规律。

2:捕获提交页面的时候所post的信息。

3:编程模拟这个手动过程。

我以我刚写的这个自动投票程序为例。在此我不会给出网址链接(保密),也不会给出真实数据和截图。

首先手动投票,是一个多选投票,点击投票按钮后,会弹出一个网页,这个网页会问你是确认还是放弃,点击确认后,返回投票成功的提示。当在此点击投票按钮的时候提示已经投过一票,不能重复投票。关闭所有浏览器窗口,打开一个新窗口,投票,仍然可以投票成功。根据如下行为,可以得出如下结论:

1:投票需要有两次和服务器的交互,第一次向服务器提交投票结果,第二次交互向服务器提交是否确认此结果。

2:此两页面之间的session是有联系的,也即同一个session下不能投两次票。当关闭浏览器,重新开启刘拉尼后,因为相当于新开了一个session,所以仍然会投票成功。

知道了这个后,就开始抓去两次交互的HTTP头信息(Header信息)

第一次交互的信息如下(点击投票按钮):

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

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://xxxxx/xxxxxxxxxxxxxxxxxxxxxxxx
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; MyIE2; .NET CLR 1.1.4322)
Host: xxx.xxx.xxx.xxx
Content-Length: 167
Connection: Keep-Alive
Cache-Control: no-cache

checkvalue=32&bbb=%CD%B6%C6%B1&ilc=0&kkk=22

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

从网页源代码中可以分析出来,数据是post上去的,post的数据为"checkvalue=32&bbb=%CD%B6%C6% B1&ilc=0&kkk=22",其中checkvalue=32即为投票选中的复选框的值,bbb为投票按钮的名称,"%CD% B6%C6%B1"为"投票"两个汉字的转码。ilc=0和kkk=22是两个隐藏域中信息,作用还不明确。

从网页源代码中可以分析出来,数据是post上去的,post的数据为"checkvalue=32&bbb=%CD%B6%C6% B1&ilc=0&kkk=22",其中checkvalue=32即为投票选中的复选框的值,bbb为投票按钮的名称,"%CD% B6%C6%B1"为"投票"两个汉字的转码。ilc=0和kkk=22是两个隐藏域中信息,作用还不明确。
然后接收到的Header如下:

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

Date: Wed, 05 Jan 2005 12:45:10 GMT
Server: Apache/1.3.27 (Win32)
X-Powered-By: PHP/4.1.2
Set-Cookie: ilc=22
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html

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

可以看到里面有一个关键的地方Set-Cookie : ilc = 22,也即设置了一个cookie,这个cookie值为22,也即post上去的kkk的值,猜测这是此次投票的编码。

可以看到里面有一个关键的地方Set-Cookie : ilc = 22,也即设置了一个cookie,这个cookie值为22,也即post上去的kkk的值,猜测这是此次投票的编码。
从返回的源代码中可以分析出来checkvalue=32这个值并没有写在第二个页面的隐藏域中,那么它就只能记录在session中。从第二次交互的信息中也可以证明。

第二次交

展开更多 50%)
分享

猜你喜欢

如何使用PHP来编写一个自动投票程序

PHP
如何使用PHP来编写一个自动投票程序

使用PHP来完成的一个自动登陆程序

PHP
使用PHP来完成的一个自动登陆程序

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

一个简单的PHP投票程序

PHP
一个简单的PHP投票程序

一个投票系统的源程序(coveryourasp.com)

ASP
一个投票系统的源程序(coveryourasp.com)

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

用VB编写一个简单的登录程序

编程语言 网络编程
用VB编写一个简单的登录程序

编写一个JAVA小程序取得IP地址

编程语言 网络编程
编写一个JAVA小程序取得IP地址

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

另类代码应用 PHP在安全方面的使用窍门

另类代码应用 PHP在安全方面的使用窍门

vb 常量声明

vb 常量声明
下拉加载更多内容 ↓