潇潇 发表于 2012-3-2 22:26:19

易语言+HttpWatch分析并编写Discuz! X1.51论坛管理器第一课

课前准备:
1 、易语言编程工具;
2、HttpWatch网页分析工具;
3、当然还有Discuz! X1.51论坛程序了,由于潇潇编程综合教学网所用的论坛程序已经升级到2.0,所以在
http://wgbcwsoft.web-108.com/1.51 为大家演示。
注意:目前演示站的链接为:http://demo.wgbcw.com/dzx151gbk/forum.php

第一,打开IE浏览器,输入http://wgbcwsoft.web-108.com/1.51 打开网页,并在IE菜单栏的“工具”里运行HttpWatch工具,如图:



运行HttpWatch后如图:



此时先单击“Record” 按钮让HttpWatch工具开启记录——开始截取网页数据状态。

在论坛的登陆窗口把账号和密码输入登陆框并单击登陆(测试账号和密码都是wgbcw1),HttpWatch在记录的同时,论坛弹出验证码窗口,如图:





第二、HttpWatch是分析Http协议或称数据的工具,那么我们来看下上图中的第一条POST数据,在上图第一条蓝色选中的行中单击右键并选择“Copy Row” ,如图:



把单前行数据复制出来

+ 0.000                0.430      1084      1057      POST      200      text/xml; charset=gbk      http://wgbcwsoft.web-108.com/1.5 ... submit=yes&inajax=1      

从上面图中及我们复制出来的数据中不难看出这数据通信的方法为POST(POST方法要求被请求服务器接受附在请求后面的数据,常用于提交表单)。下面我们来看下,这条数据下的几个关键数据,
分别是“Headers”、“Query String”和“Post Data”,当然“Content” 和“Stream”也可以看下,我看把这些数据分别复制出来。

Headers:
(Request-Line)      POST /1.51/member.php?mod=logging&action=login&loginsubmit=yes&infloat=yes&lssubmit=yes&inajax=1 HTTP/1.1
Accept      image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave-flash, application/x-ms-application, application/x-ms-xbap, application/vnd.ms-xpsdocument, application/xaml+xml, */*
Accept-Encoding      gzip, deflate
Accept-Language      zh-cn
Cache-Control      no-cache
Connection      Keep-Alive
Content-Length      61
Content-Type      application/x-www-form-urlencoded
Cookie      CookieZJWFANGDAOLIAN=182.241.82.4#2012-03-02-21#wgbcwsoft.web-108.com; uO1v_2132_seccodeSG1G2=4bb8bs9ZJ7T3xKKrX8VGC2IzCOr2C60kIVc9%2FTEYq%2FfANwQg1SBBT6%2FA%2BteeJD%2B8D9SSjst1%2BS1DUac; uO1v_2132_sid=LQ1K7B; uO1v_2132_lastvisit=1330688698; uO1v_2132_lastact=1330695507%09home.php%09misc
Host      wgbcwsoft.web-108.com
Referer      http://wgbcwsoft.web-108.com/1.51/forum.php
User-Agent      Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.1.4322)

Query String:
action      login
inajax      1
infloat      yes
loginsubmit      yes
lssubmit      yes
mod      logging
Post Data:
handlekey      ls      12
password      wgbcw1      15
quickforward      yes      16
username      wgbcw1      15
Content:
<?xml version="1.0" encoding="gbk"?>
<root><!]></root>
Stream:(包括两个部分)
POST /1.51/member.php?mod=logging&action=login&loginsubmit=yes&infloat=yes&lssubmit=yes&inajax=1 HTTP/1.1
Accept: image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave-flash, application/x-ms-application, application/x-ms-xbap, application/vnd.ms-xpsdocument, application/xaml+xml, */*
Referer: http://wgbcwsoft.web-108.com/1.51/forum.php
Accept-Language: zh-cn
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.1.4322)
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
Host: wgbcwsoft.web-108.com
Content-Length: 61
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: CookieZJWFANGDAOLIAN=本地外网IP#2012-03-02-21#wgbcwsoft.web-108.com; uO1v_2132_seccodeSG1G2=4bb8bs9ZJ7T3xKKrX8VGC2IzCOr2C60kIVc9%2FTEYq%2FfANwQg1SBBT6%2FA%2BteeJD%2B8D9SSjst1%2BS1DUac; uO1v_2132_sid=LQ1K7B; uO1v_2132_lastvisit=1330688698; uO1v_2132_lastact=1330695507%09home.php%09misc

username=wgbcw1&password=wgbcw1&quickforward=yes&handlekey=ls

HTTP/1.1 200 OK
Connection: close
Date: Fri, 02 Mar 2012 13:58:38 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
Set-Cookie: CookieZJWFANGDAOLIAN=本地外网IP#2012-03-02-21#wgbcwsoft.web-108.com; expires=02-03-2012 23:59:59; path=/;
X-Powered-By: PHP/5.2.9-2
Set-Cookie: uO1v_2132_lastact=1330696718%09member.php%09logging; expires=Sat, 03-Mar-2012 13:58:38 GMT; path=/
Set-Cookie: uO1v_2132_invite_auth=deleted; expires=Thu, 03-Mar-2011 13:58:37 GMT; path=/
Expires: -1
Cache-Control: no-store, private, post-check=0, pre-check=0, max-age=0
Pragma: no-cache
Content-type: text/xml; charset=gbk

<?xml version="1.0" encoding="gbk"?>
<root><!]></root>

先来看下Headers(协议报头数据):
(Request-Line):请求连接地址及Http版本;
Accept:请求报头域用于指定客户端接受哪些类型的信息;
Accept-Encoding:请求报头域用于指定可接受的内容编码;
Accept-Language:请求报头域用于指定一种自然语言;
Cache-Control:用于指定缓存指令;
Connection:普通报头域允许发送指定连接的选项;
Content-Length:实体报头域用于指明实体正文的长度,以字节方式存储的十进制数字来表示;
Content-Type:实体报头域用于指明发送给接收者的实体正文的媒体类型;
Cookie:服务器为了辨别用户身份、进行定时跟踪而储存在用户本地电脑上的数据(通常经过加密)。
Host:表示合法的Internet主机域名或者IP地址,发送请求时,该报头域是必需的。
Referer:header的一部分,当浏览器向web服务器发送请求的时候,告诉服务器我是从哪个页面链接过来的,服务器借此可以获得一些信息用于处理和参考。
User-Agent:请求报头域用于服务器获取操作系统、浏览器和其它属性的信息。

从Query String、Post Data和Stream数据中不难看出POST方法所用到的关键数据为:
/1.51/member.php?mod=logging&action=login&loginsubmit=yes&infloat=yes&lssubmit=yes&inajax=1

username=wgbcw1&password=wgbcw1&quickforward=yes&handlekey=ls
下面我们用易语言工具写段简单的代码看看POST这数据会返回啥,由于我这里新安装的易语言工具,打开支持库配制把互联网支持库加载进来,这时我们便可用此支持库下的“HTTP读文件”命令来实现POST方法: .版本 2
.支持库 internet

.子程序 _按钮1_被单击
.局部变量 返回的数据, 字节集
.局部变量 RequestLine, 文本型
.局部变量 PostData, 文本型
.局部变量 Host, 文本型

Host = “http://wgbcwsoft.web-108.com”
RequestLine = Host + “/1.51/member.php?mod=logging&action=login&loginsubmit=yes&infloat=yes&lssubmit=yes&inajax=1”
PostData = “username=” + 编辑框1.内容 + “&password=” + 编辑框2.内容 + “&quickforward=yes&handlekey=ls”
返回的数据 = HTTP读文件 (RequestLine + “&” + PostData)
调试窗口.编辑框1.内容 = 到文本 (返回的数据)
用命令"HTTP读文件"返回下面一段内容:
<?xml version="1.0" encoding="gbk"?>
<root><![CDATA[<h3 class="flb"><em>提示信息</em><span><a href="javascript:;" class="flbc" title="关闭">关闭</a></span></h3>
<div class="c altw">
<div class="alert_error">location_login<script type="text/javascript" reload="1">if(typeof errorhandle_ls=='function') {errorhandle_ls('location_login', {'type':'1'});}</script><script type="text/javascript">showWindow('login', 'member.php?mod=logging&action=login&auth=617camztapsSx3qJnuz94SLXtH0V%2BMLmcyLfEEFOwvwEG7ZzO2VLx0lRogA&referer=http%3A%2F%2Fwgbcwsoft.web-108.com%2F1.51%2F.%2F')</script></div>
</div>
<p class="o pns"><button type="button" class="pn pnc"><strong>关闭</strong></button></p>
]]></root>

这段内容到有啥用呢,明天再继续写……

补充:

在数据没分析完时记得单击Save保存所截取到的数据,打开时直接双击自己所保存的文件便可以。如下图所示:


漏网之鱼 发表于 2012-4-17 09:43:26

支持楼主 谢谢分享

南水无鱼 发表于 2012-5-4 00:32:28

能提供源码下载不?

潇潇 发表于 2012-5-4 10:42:22

南水无鱼 发表于 2012-5-4 00:32 static/image/common/back.gif
能提供源码下载不?

源码已经提供可下载参考,感谢支持本站。

花心胡萝卜 发表于 2012-6-20 15:19:40

支持一下!

chn88 发表于 2013-3-2 23:19:49

支持一下!

ls1231xx 发表于 2013-4-8 10:22:12

写的挺好,我需要

12121 发表于 2013-6-24 13:32:26

如何获得下载点啊

12121 发表于 2013-12-27 21:49:35

不能下砸了吗
页: [1]
查看完整版本: 易语言+HttpWatch分析并编写Discuz! X1.51论坛管理器第一课