使用 curl 一句话完成投票机

    [晴 November 13, 2007 13:51 | by ]

来源:乌托邦|感动中国
最近网易搞了个什么《IT 前台 MM 选美大赛》。好事者把消息转贴到了公司内部论坛,在大家的忽悠之下,有个前台小姑娘终于报名了 ……

当然,这些都不是这篇 blog 文字的重点,重点在于,怎么完成那个前台小姑娘委托的投票机任务 ……

要写投票机自然要了解投票机制如何的。简单看了一下投票页面,发现只是访问一下 http://go.tech.163.com/mm/vote.jsp?id=1270 就可以投票,网易并没有做什么图片验证码之类的东西。呵呵,看样子这个投票机用 curl 就可以完成了。

首先是用 curl 实现投票,当然,我们要定制一下我们提交的信息,避免服务器端把我们识别出来 —— 主要就是 referer 和 user-agent 字段。
curl http://go.tech.163.com/mm/vote.jsp?id=1271 –referer “http://go.tech.163.com/mm/detail.jsp?1271″ –user-agent “Mozilla/5.0 (Windows; U; Windows NT 5.2; zh-CN; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9″
其中 –referer 是指定 curl 向服务器提交请求时把引用页面也提交到服务器,而 –user-agent 就是让 curl 把我们指定的浏览器信息提交给服务器。这样服务器就很难把我们从正常的客户端请求中揪出来了~ 经过测试,发现上面的代码一切工作正常。当然,网易的记票程序也不是什么过滤都没有,他们规定了每个 IP 每天只能对一个 MM 投票一次。不知道网易是怎么计算来源 IP 地址的,如果是直接调用某些 API 的话,会把 X-Forward-For 字段提供的信息当成源地址。如果这样的话,我们就只要提供虚假的 X-Forward-For 字段给服务器就可以不停的用同一个 IP 地址投票了。
curl http://go.tech.163.com/mm/vote.jsp?id=1271 –referer “http://go.tech.163.com/mm/detail.jsp?1271″ –user-agent “Mozilla/5.0 (Windows; U; Windows NT 5.2; zh-CN; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9″ –header “X-Forward-For: 209.123.111.23″

事实验证,网易的记票程序并没有这样的“漏洞”可钻 …… ^_^!!那剩下的就只有一招了,从网上搜索一个代理服务器列表,利用这个列表中的代理服务器不停的投票,每次投票都更换一个代理服务器的 IP 地址。下面是我们的代理服务器列表(虚假的,只是展示格式):proxy.txt
————华丽的分隔线————
127.0.0.1:8080
127.0.0.1:3128
127.0.0.1:80
————华丽的分隔线————

有了上面那个代理服务器列表之后,我们就可以开始投票了(需要在 proxy.txt 所在目录执行):

FOR /F “tokens=1″ %i in (proxy.txt) do @curl http://go.tech.163.com/mm/vote.jsp?id=1271 –referer “http://go.tech.163.com/mm/detail.jsp?1271″ –user-agent “Mozilla/5.0 (Windows; U; Windows NT 5.2; zh-CN; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9″ –proxy %i

yeah,–proxy 指定了 curl 所使用的代理服务器,而 “FOR /F “tokens=1″ %i in (proxy.txt) do” 会每次把文本文件 proxy.txt 里面的一行取出来作为环境变量 %i 丢给 do 后面的命令。呵呵,果然投票成功,不过似乎这样太慢了,单线程,而且要等超时。我们再来改造一下~
FOR /F “tokens=1″ %i in (proxy.txt) do @curl http://go.tech.163.com/mm/vote.jsp?id=1271 –referer “http://go.tech.163.com/mm/detail.jsp?1271″ –user-agent “Mozilla/5.0 (Windows; U; Windows NT 5.2; zh-CN; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9″ –proxy %i

呵呵“start /b”可以让后面的程序在后台运行,在 Windows 的任务栏里面看不到,这样就是并发咯。不过要小心,proxy.txt 如果行数太多的话 …… curl 会同时起 nnn 个…… 系统直接就 :S

嗯,回显太乱了~我们还是不看回显好啦~

FOR /F “tokens=1″ %i in (proxy.txt) do @start /b curl http://go.tech.163.com/mm/vote.jsp?id=1271 –referer “http://go.tech.163.com/mm/detail.jsp?1271″ –user-agent “Mozilla/5.0 (Windows; U; Windows NT 5.2; zh-CN; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9″ –silent –proxy %i

用 –silent 把 curl 的回显关掉~ 呵呵,这下都好了~

Technology | Comments(2) | Trackbacks(0) | Reads(18303)
December 16, 2007 13:23
fear听说是用俺的网鸡刷的
阿黛黛
November 13, 2007 16:55
2个月之前我在天天当人工刷票机。一天2000多票。还是有验证码的。哎。当时怎么没工具
Pages: 1/1 First page 1 Final page
Add a comment
Emots
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
Enable HTML
Enable UBB
Enable Emots
Hidden
Nickname   Password   Optional
Site URI   Email   [Register]
               

Security code Case insensitive