《作弊器编程》实战系列(二)利用TNMHTTP实战Fun-lotto
*********************************************************************************
各位好,呵呵,客套话先说一句了。
今天我们开始实战中的第二步,利用TNMHTTP控件完成一个Fun-Lotto的模拟器。
当然,在以往的教程中,并没有过多谈论一些技术上的问题,仅对实现的方法和理论进行了一些论述,在此,
特别郑重宣布,本模拟教程在未指明的情况下,编程工具为DELPHI,针对的对象是有一定编程能力,对DELPHI
有一定了解的人;因此,为节省篇幅,针对DELPHI的一些技术特性在此不用多讲,如果你不懂,请参考相关书籍,
我这里不教DELPHI(想学的话多交点学费也可以,MM收半价优惠,PLMM可全免^_^)
好了,这里因为要用到TNMHTTP控件,先对TNMHTTP控件的方法和属性做一简单介绍:
我们这里用到的TNMHTTP属性和方法有:
HOST:主机名,要联接的对象
PROXY:代理服务器IP地址,常用到的 PROXYPORT:端口,因不一定是80或8080
HEADER:得到分解的HTTP头信息,用外还是很大,严格的网战对它要尔很不错的
BODY:网页正文,返回的具体内容
HEADERINFO:发出去时的HTTP头信息,极为重要
GET方法:在本文中主要使用此方法与网战交互,我不太会用POST方法,但POST能做的GET也能做到,当然,
更复杂的提交方法还是用POST,不过在本文中GET方法足够用了,所以,本文不讲其它方法,想知道的话请参考其
它相关书籍;问我的话可是先要收费的#%$$%$#%#%%(我打,你这个财迷.....!!!!)
好了,了解了TNMHTTP控件的方法后,我们开始往下讲。
TNMHTTP控件是DELPHI自带的第三方控件,它主要用于在程序中与WWW网站进行交互,取得网页内容等;我们取
得网页的原始内容后,可根据内容进行相应处理,不难做出一个自己的IE浏览器。当然,需要对WWW有深入的了解
才行。由于它得到的是网页的原始内容,因此你可以很容易地控制网上的流量(很多图片呀,不重要的东西你可以
不下载),这样的做法比用TWEBBROWSER当然速度快多了,当然,还有其它方法能更深入控制网络,我们的教程也
是如此,从TWEBBROWSER->TNMHTTP->TCLINETSOCK->WINSOCK这样的教学方式来的,层次越来越高,控制的层次
越来越低,这样的教学很不错吧,想当初%…¥%¥%…%¥%…(大量西红柿、臭鸡蛋呼啸而来...)。
废话少说,我们先到FUN-LOTTO去看一下:
FUN-LOTTO是一个MAKE CASH网站(废话),它的方法是:选取七个数字,提交,返回另七个数字,如果其中有
相同的数字,呵呵,三个以上就中奖了,奖金多少?我这里就不知道了,不过,如果七个数字全对,呵呵,记得
分我一点$,不要多了,一、两百万够了(我打,哟哟哟哟哟,轻点)。就这样,如有不明白的地方,到它的网
站去看看就明白了。
好了,拿出我们的法宝来。太上老君急急如律令......!!!!!CashSoldier......给我力量吧!!!!
用上次我们的代理程序,准备就绪(什么,代理程序没带来!!!!去去去,到我主页上去取来,方法请见
《作弊器编程》实战系列(一)截包实战)
清除所有不需要的垃圾,先到FUN-LOTTO的主页上去,先要LOGIN(这都不懂吗?当然要从最前面做起呀!!什么?
你没申请帐号!!!!!我倒....)。
第一步,LOGIN,好了,代理中出现这样的内容,大家看好(对了,到主页上去后截到的内容没什么意思,可以不管
了!???你怎知没用????我说了没用就没用!!!!!你再不住口,我不讲了!!!):
先进入"WIN $250,000 Instanly"这一关(什么这一关,PLAY GAME?),有了LOGIN的内容,当然,填好用户名,
密码,再清除垃圾(不然一大堆看死你)。OK,LOGIN。从代理中得到的内容:
POST [url]http://www.fun-lotto.com/InstantWin/id.php[/url] HTTP/1.0
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */*
Referer: [url]http://www.fun-lotto.com/InstantWin/instant.php[/url]
Accept-Language: zh-cn
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)
Host: [url]www.fun-lotto.com[/url]
Content-Length: 71
Proxy-Connection: Keep-Alive
Pragma: no-cache
__COMMAND=login&location=instant&username=cashsoldier&password=xxxxx
................省略若干内容,骗稿费可以加上^_^
不用依次解释,我们可看到HTTP头的内容很清楚,要注意的是这几个:
POST [url]http://www.fun-lotto.com/InstantWin/id.php[/url] HTTP/1.0
Referer: [url]http://www.fun-lotto.com/InstantWin/instant.php[/url]
Host: [url]www.fun-lotto.com[/url]
__COMMAND=login&location=instant&username=cashsoldier&password=xxxxx
POST不用我多说了,提交内容 ,REFERER表示我现在正在[url]http://www.fun-lotto.com/InstantWin/instant.php[/url]
填的表,向网站提交,HOST就更不用说了,下面的内容是什么,我也不知道(不知道你干什么来了?管
你什么事?)。从字面意思猜,命令是LOGIN,当前在INSTANT,用户名,密码;这么笨,不就行了。
写一个程序,完成:
function Tfrm_main.LoginWebHost(const Username,PassWord:String;Var LocationUrl:String):Boolean;
Var
Str:String;
begin
Result :=False;
//__COMMAND=login&location=instant&username=cashsoldier&password=xxxx
NMHTTP.Host :='www.fun-lotto.com';
NMHTTP.HeaderInfo.Referer := 'http://www.fun-lotto.com/InstantWin/instant.php'; //呵呵,我也在这里了,骗它的嘛
NMHTTP.HeaderInfo.Cookie :='Test=Pass; Seen=True'; //这是什么,
NMHTTP.Get(Format('http://www.fun-lotto.com/InstantWin/id.php?login&location=instant&username=%s&password=%s',[Username,Password]));
NMHTTP.HeaderInfo.Cookie :=Format('usernameID=%s; passwordID=%s; Test=Pass; Seen=True',[UserName,PassWord]);
Str :=NMHTTP.Body;
if POS('Please enter the the right username and password',Str) > 0 then
Begin
Result :=False;
Exit; //用户名或口令错
end;
if POS('It seems that you have reached the maximum number of tickets for this game for today',Str) >0 then
Begin
Result :=False;
Exit; //最大值
end;
LocationUrl :=GetClickUrl(NMHTTP.Body);
if LocationUrl <> '' then
Result :=True;
end;
有人问了,呵呵,这样就行了?当然,你试试,看看返回的信息:
HTTP/1.1 200 OK
Date: Tue, 22 May 2001 03:55:21 GMT
Server: Apache/1.3.12 Cobalt (Unix) PHP/4.0.4pl1 mod_ssl/2.6.4 OpenSSL/0.9.5a mod_auth_pam/1.0a FrontPage/4.0.4.3 mod_perl/1.24
X-Powered-By: PHP/4.0.4pl1
Set-Cookie: usernameID=deleted; expires=Mon, 22-May-00 03:55:20 GMT
Set-Cookie: passwordID=deleted; expires=Mon, 22-May-00 03:55:20 GMT
Expires: Mon, 26 Jul 1997 05:00:00 GMT
Last-Modified: Tue, 22 May 2001 03:55:21 GMT
Cache-Control: no-cache, must-revalidate
Pragma: no-cache
Set-Cookie: usernameID=cashsoldier
Set-Cookie: passwordID=xxxxxx
Connection: close
Content-Type: text/html
<script language="Javascript">document.location = "http://www.fun-lotto.com/InstantWin/instant.php?ts=990503721";</script>
A
内容不用我多讲,要求再取一个页面,其地址为[url]http://www.fun-lotto.com/InstantWin/instant.php?ts=990503721[/url],这个有什么用?你可多试试LOGIN,可以发现它后面的990503721是常变的,有什么用呢,看下面。
填写七个数字,提交:
POST [url]http://www.fun-lotto.com/InstantWin/InstantWin.php[/url] HTTP/1.0
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */*
Referer: [url]http://www.fun-lotto.com/InstantWin/instant.php?ts=990503721[/url]
Accept-Language: zh-cn
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)
Host: [url]www.fun-lotto.com[/url]
Content-Length: 277
Proxy-Connection: Keep-Alive
Pragma: no-cache
Cookie: usernameID=cashsoldier; passwordID=xxxxxx
balls_drawn=7&max_number=49&ad=%3C%21--DIRNAME--%3E&fromsite=%3C%21--DIRNAME--%3E-%3C%21--SPONSORID--%3E&dirname=%3C%21--SPONSORID--%3E¤tpicks=+&emailaddress1=cashsoldier&favorites=&numbers=2%2C+12%2C+19%2C+21%2C+27%2C+35%2C+47%2C+&WinningNumbers=Generate+Winning+Numbers
看到了吗,看到了吗?
Referer: [url]http://www.fun-lotto.com/InstantWin/instant.php?ts=990503721[/url]
有用吧,好像是有一点用,不过我看它用得多的时候还是对它的广告有用。
再试一次,
POST [url]http://www.fun-lotto.com/InstantWin/InstantWin.php[/url] HTTP/1.0
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */*
Referer: [url]http://www.fun-lotto.com/InstantWin/instant.php[/url]
Accept-Language: zh-cn
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)
Host: [url]www.fun-lotto.com[/url]
Content-Length: 278
Proxy-Connection: Keep-Alive
Pragma: no-cache
Cookie: usernameID=cashsoldier; passwordID=xxxxx
balls_drawn=7&max_number=49&ad=%3C%21--DIRNAME--%3E&fromsite=%3C%21--DIRNAME--%3E-%3C%21--SPONSORID--%3E&dirname=%3C%21--SPONSORID--%3E¤tpicks=+&emailaddress1=cashsoldier&favorites=&numbers=11%2C+18%2C+26%2C+29%2C+30%2C+40%2C+42%2C+&WinningNumbers=Generate+Winning+Numbers
不一样了吧,好像没用,不过,第一次LOGIN后就有的了,(这里网站做的挺简单的,作弊真容易)