目 录
第一章:截包知识,本章主要介绍用HttpWatch软件截取网络数据包的方法及技巧
第二章:发包知识,本章主要介绍数据包的构成
第三章:三大利器的使用,本章主要介绍vb使用xmlhttp对象、webbrowser控件、inet控件进行Post发包、Get发包的方法
第一章
本文要用到的截包工具是HttpWatch,其他软件使用方法都差不多这里不再阐述。
软件下载地址: download.csdn/source/2688506
<只要注册个CSDN号就能下载了没有积分要求的,下载后请注意压缩包内的httpwatch.lic为授权文件,安装完成后把httpwatch.lic复制到安装目录里面>
安装完成后打开IE-工具-HttpWatch(IE6的直接能在主界面看到不用进工具里了),打开该软件,如图所示:
点击右上角的,软件界面会分离出另外一个窗口
我来介绍下按钮的功能, 平常用到的就3个按钮,代表开始截取、停止截取、清除截取的数据
再来介绍下面的界面:
平常用到的是Qverview、Content、Stream,Qverview的可以查看Post过去的详细目标地址,Content查看请求回来的返回值,Stream查看数据包信息!
截取封包:在请求页面前按下按钮开始截取封包,请求完毕后按下按钮停止截取封包.想要清除截取的数据可以按下按钮.
数据查看:
选中的地址就是Post提交的目标地址
Content查看返回的网页源码
Stream查看数据内容,详细的数据结构将在下章介绍
第二章
先发一段数据,我们来分析它<登陆百度的包>
POST /?login HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-ms-application, application/x-ms-xbap, application/vnd.ms-xpsdocument, application/xaml+xml, */*
Referer: passport.baidu/?login&tpl=mn
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; QQDownload 663; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)
Host: passport.baidu
Content-Length: 236
Connection: Keep-Alive
Cache-Control: no-cache
Cookie:
tpl_ok=&next_target=&tpl=mn&skip_ok=&aid=&need_pay=&need_coin=&pay_method=&u=http%3A%2F%2Fwww.baidu%2F&return_method=get&more_param=&return_type=&psp_tt=0&password=123465&safeflg=0&username=sunshinebean&verifycode=&mem_pass=on
关于Http头的构成我不阐述,详见:
hi.baidu/absky_cxb/blog/item/f28065017032760a738da5cb.html
这里主要讲Post包的构成及比较重要的Http头参数
1. Http头里的Referer参数,简单的说就是来路,然后目标服务器能知道你这个Http请求是哪个页面请求过去的,有些服务器就是判断来路的所以这个参数比较重要
2. Http头里的Content-Type参数,提交的是网页信息可以是application/x-www-form-urlencoded,假如提交图片信息这个参数也会随之变成data
3. Post的包参数全部用&符号隔开的,=号后面的是参数的值。有些参数是固定不变的有些却是随机改变的,这些参数80%能在网页源码里到,10%能在cookie里到,10%能在JS里构造(这个比较麻烦要会分析JS),在上面这段数据里变动的就帐号跟密码,别的参数都是固定的,当然这个结论要多次分析获得。比如这里的包, username=sunshinebean,password=123465就对应百度的帐号跟密码
第三章
一:VB创建Xmlhttp对象
Private Function GetHtmlStr$(StrUrl$, switch%) '获取源码
Dim XmlHttp
Set XmlHttp = CreateObject("Microsoft.XMLHTTP")
XmlHttp.Open "GET", StrUrl, True
XmlHttp.send
stime = Now '获取当前时间
While XmlHttp.ReadyState <> 4
DoEvents
ntime = Now 'html frame获取循环时间
If DateDiff("s", stime, ntime) > 3 Then GetHtmlStr = "": Exit Function '判断超出3秒即超时退出过程
Wend
GetHtmlStr = StrConv(XmlHttp.ResponseBody, vbUnicode)
Set XmlHttp = Nothing
End Function
这个是我自己写的一个函数,主要作用是获取指定网页的源码
XmlHttp.Open "GET", StrUrl, True
"GET"是数据的请求方式,还有种就是POST提交数据写成"POST"
StrUrl是指定的网址,GET请求时写要GET的目的网址,POST时写提交的目的地址
True是异步,False是同步,区别就是同步是等待数据全部获取后再显示,所以会卡,而异步则不会卡,所以推荐用异步比较好
XmlHttp.setRequestHeader "Referer", RefUrl
指定来路,上章已经提到过Referer参数的重要性了, RefUrl就写截包截来的那个来路
XmlHttp.setRequestHeader "CONTENT-TYPE", "application/x-www-form-urlencoded"
这个上章也提到过,是类型,一般都是按截的包里面的写,网页的话直接写成这样就好:"application/x-www-form-urlencoded"
XmlHttp.send "XXX"
这里的XXX就是post的包内容,Get的话这个是空的,POST的话把包的内容写在这里
然后该函数返回POST的返回信息,我们一般可以在返回值里提取出特定的东西来判断执行某样东西是否成功
二:webbrowser
先看段代码:
Private Sub Command1_Click()
Dim URL$, Flags&, TargetFrame$, PostData() As Byte, Headers$
URL = "passport.baidu/?login"
Flags = 0
TargetFrame = ""
PostData = "tpl_ok=&next_target=&tpl=mn&skip_ok=&aid=&need_pay=&need_coin=&pay_method=&u=http%3A%2F%2Fwww.baidu%2F&return_method=get&more_param=&return_type=&psp_tt=0&password=123456&safeflg=0&username=sunshinebean&verifycode="
PostData = StrConv(PostData, vbFromUnicode)
Headers = "Content-Type: application/x-www-form-urlencoded" & vbCrLf
WebBrowser1.Navigate URL, Flags, TargetFrame, PostData, Headers
End Sub
Private Sub Form_Load()
WebBrowser1.Navigate "baidu"
End Sub
Webbrowser有个Navigate方法,参数是这样的:
object.Navigate URL [Flags,] [TargetFrameName,] [PostData,] [Headers]
拿出MSDN,查之,见下页:
URL:
Required. A string expression that evaluates to the URL, full path, or Universal Naming Convention (UNC) location and name of the resource to display.
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论