VBA-处理网基础一_第1页
VBA-处理网基础一_第2页
VBA-处理网基础一_第3页
VBA-处理网基础一_第4页
VBA-处理网基础一_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

#/15这时,我们先翻开FIDDLER,然后再按下网页的搜索按钮。这样,FIDDLER就可以捕捉到,执行搜索的 请求,还能截取到查询结果的响应消息。我们分阶段进展解析。〔一〕请求阶段如图操作,选择第一条记录,有时候就是发送查询命令的 请求。选择左边|②Statstics1畿In^ectars|②Statstics1畿In^ectars|'去AutoRespanderCompaser3JFiddlerScript|口Firberg|j]Lag-Tmeine氏13ct『3 TcxWewSyntasd/iEWWebFormsHtxVicwt"th Cuakes||月昌加 |JSDNXMLWcb宴号skj111sl m丈# R...Prct... htostURL厩120口HTTP 1优川内典田…应后POSThtt口:1 .与口三,cici-unrlN HTTP/1,1Hoscs依■冒出‘・三口三・门口中.2nUser-Agent;Mozilla/5.0fwindowsHT5.1^rv;14.D)^ccko/ZD1001D1.Firefox./14,0.1Accept:texc/html,appllication;xhtmli-xml,apEJlicatiiDn/xinT;3=0.9,.-/™;q=O.SAccapt-Languageszh-cn.zh;q=0.en-us;q=O.£.engq=U.MAccept-Encoding:gz^ip.def1ateDNT:1 - -Cannection:Iceep-alivsRefertr:h七二p.『.产哈木%「।5q三・q口।er/"InFEtp用工nfDide?te七h口dndbkCQO-k.1e:JSz5SICMD12=C0002DKpAp,.IXALWl¥.'HVJOVSQ\GUf:L6f5u5£dl;JSE5510hID=?J000g^T^XnmfflVXKZZ\Coneent-Type:application/x-^w-form-urlerneo-ded "Coneent-Length:27searchTyp^^^ke^o^ds=3ioii50009097&z|Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language:zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3Accept-Encoding:gzip,deflateDNT:1Connection:keep-aliveCookie:JSESSIONIDlz=00002DNpApMXAw1wHVO0vSgVGuf:16f9u5edl;JSESSIONID=0000g4T4RXnmmvxkZ2Vi0rZy3fM:132eapo0dContent-Type:application/x--form-urlencodedContent-Length:37searchType=2&keyWords=9792实际情况中,有可能会看到一系列的发包记录,那实际的获取数据的发包请求

又是哪一条呢?一般不用一个个记录去看,我们可以选取结果页面的一个标识语句〔例如“搜索结果〃啊,“注册成功〃啊,这样的标示语句〕,在FIDDLER界面按住CTRL+F,会出现查找功能的界面,然后键入我们要查找的标识,如图,就可以搜索出到底是哪条记录。KesultProtocolHostURL1200HTTPwww.fiddler2.conn/Fiddler2/updatecheck.asp?ieBet;200HTTPvjwvj.baidu.conn/目斗05国74J8邺N101.giFD.pnqgs.gif3.0.giFDslJis/honrie-l.Dal/js/kangram-1.giFD.pnqgs.gif3.0.giFDslJis/honrie-l.Dal/js/kangram--r/js/u-l31,j5>方法URL或URL的路径局部 协议版本>头部字段>回车换行》消息主体下面按照该格式的每个条目进展解释:1、首行的方法,就是请求的方法,总共有5种,但是常用的就GET和POST,GET是索取数据的请求,要求效劳器返回URL指定的文档容,或返回URL指定的数据处理过程的结果所指向的文档,是最常见的。POST是向效劳器提交数据的请求,要求效劳器接收并利用随附的消息主体的数据,来执行某个程序或获取文档,通常用于浏览器向效劳器发送表单数据,例如提交注册信息,或者进展数据查询等。所以,如果采用GET方式,一般消息主体为空,采用POST方式的话,一般就有相应的消息主体。请注意,并不意味着采用GET方式就不能携带数据了,上一节我们说了,URL是可以携带我们需要传递给效劳器的参数的。例如baidu./s?wd=苹果。可有多个参数,用“&〞符号隔开,每个参数的名和值用“=〞符号隔开。那既然6£1方式也可以携带参数,那两者区别又是什么呢?一是平安性,GET方式参数就在URL,提交的是密码等私密资料就不适宜用GET;二是,GET方式提交的数据最多只能有1024字节,而POST那么没有此限制。三是,GET一般不能改变效劳器的数据,而POST可以改变效劳器的数据,例如注册了个用户,效劳器就多了数据条目。2、头部字段,头部字段主要描述的是我们的请求的容,绝大局部是可选的。格式为“字段名称:字段值〞,以以下举几个常用又比拟重要的头部字段吧,其他请自行参阅 协议:host字段:该字段指定请求资源的Intenet主机和端口号,即URL的域名局部, /1.1请求必须包含该字段。Referer字段:Referer字段值,就是我们发起 请求时的那个页面URL,是用来控制盗链的一种方式。User-Agent字段:该字段的容包含发出请求的用户信息〔浏览器和系统等消息〕。有时候也会作为放盗的一种方式,更多用来效劳器判定依据不同用户系统情况,返回不同的兼容文档。Cache-Control字段:用来指定请求遵循的缓存机制。包括no-cache、no-store、max-age、max-stale、min-fresh、only-if-cached等。Cookie字段:这是比拟重要的请求头信息之一;这个我们后面详细说,先跳过。If-Modified-Since字段:所请求的页面在客户端的缓存中的最近更新时间;Pragma字段:指定“no-cache〃值表示效劳器必须返回一个刷新后的文档,即使它是代理效劳器而且已经有了页面的本地拷贝;Content-Type字段:在使用POST方式的时候,这个字段非常关键,用来标识后附的消息主体的类型。作为抓包爱好者,理解不了就算了,写程序的时候,直接抄袭抓包软件看到的,例如上面例子的是“application/x--form-urlencoded"。一般POST方式,这句较少省略,如果不附上,就得不到正确的数据结果。Content-Length字段:表示 请求的消息主体的文本长度f-None-Match字段:后面储存的是客户端读取的缓存中页面的缓存检验值,后面缓存中再讲;〔3〕当采用POST方式,就会携带消息主体了,这时,头部和主体之间的回车换行的标示符号,就必不可少了。主体就是请求通信传递的数据,上例中的主体容“searchType=2&keyWords=9792〃就是传递我们查询所需的注册号和查询方式〔按注册号查询〕等参数,和GET方式一样,可有多个参数,用"&"符号隔开,每个参数的名和值用“="符号隔开。请注意,发包的整个过程,例如消息主体,都不支持英文和数字以外的字符,如果要写入中文或特殊字符,就需要URLENCODE的函数进展转码了。后话,心急的读者自行百度,VBAURLENCODE。〔二〕响应阶段当我们发送请求后,效劳器处理完我们的请求,就会向我们的浏览器,发送响应消息了。FIDDLER中,响应消息就在请求消息的下面,一样看RAW标签,如图:TraisfarniErHeaders:|TeurtWew ImmgeMekHesViewWebWewAuthCachingCaohes|RswJSONXMLHTTP/1„O2DQOKDatessun卜22Jul2012 airServer:匚利_HTTP/erverContent-L-ength:日292Content-Ty'pe:teKt/html;chsr5£t-JTF-BContent-Languaqe:zh-ChAqe:312X-Cache:Ml55from^ebAuditConnEcfion;kesp-alive/1.0200OKDate:Sun,22Jul201206:46:31GMTServer:IBM__ServerContent-Length:8292Content-Type:text/html;charset=UTF-8Content-Language:zh-CNAge:312X-Cache:MISSfromWebAuditConnection:keep-alive<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""./TR/xhtml1/DTD/xhtml1-transitional.dtd">响应消息的格式如下所示:>状态行>头部字段>回车换行>实体容状态行=协议[空格]状态码[空格]状态解释[回车换行]状态码常见的就是,200成功、400错误请求〔一般我们是发送的请求有问题〕、500效劳器错误,其余不说明了,自行搜索百度哈。头部字段响应阶段的头部字段主要描述的是效劳器响应的情况。最常见的头部字段如下:Content-Type:表示后面的文档属于什么类型;Expires:指明应该在什么时候认为文档已经过期,从而不再缓存它。Last-Modified:文档在效劳器上最后更新时间。同缓存一起保存这个值,当再次访问该页面,在请求的头部字段的If-Modified-Since中再次携带这个时间值发送至效劳器,如果效劳器此时的文档更新时间晚于该时间,返回新页面数据,否那么返回一个304〔NotModified〕状态,并加载缓存数据进展显示;Set-Cookie:效劳器向客户端发送的cookie,cookie后面简析。ETag:一段文本,一般也是用于缓存是否更新的判断的校检值,当首次访问页面时候,获取这个值,同缓存一起保存,当再次访问时候,请求阶段的If-None-Match字段就会再次携带这段校检值发送至效劳器,效劳器判断ETag校检值是否变化,变化那么返回新的页面数据,无变化那么返回304,读取缓存数据显示。和请求阶段一样,头部和实体之间用回车换行符间隔,后面的实体,就是效劳器返回的网页的源代码了。视效劳器文档情况,大局部情况是html格式的,这个东东,我们第二节课再讲咯。〔三〕初识cookie和session由于第一节讲了,网络通讯是静态的, 协议是无状态的。它对于我们之前的所有通讯都没有记忆能力。那出现的问题是,如果后续处理需要前面的信息,那么它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,就难以验证用户的权限和登录问题。于是,两种用于解决机制就产生了,就是Cookie和Session。Cookie是通过客户端记录通讯情况,其是由效劳器发给客户端的特殊信息,以文本文件的方式存放在我们的电脑上〔WINDOWS系统哈,浏览器会将这些信息存放在[系统盘]:\DocumentsandSettings'[用户名]\Cookies目录中〕,然后我们的浏览器每次向效劳器发送请求的时候就会带上这些特殊的信息。例如,当我们登录时,效劳器会发送一段cookie给我们,这就是我们在上面的响应阶段所说的Set-Cookie头部字段的功能,后续的通讯,在请求阶段,就会使用cookie请求字段,发送这段文本,效劳器收到了这段文本,就知道我们已经登录了。Request.Ru号pcmse另外一个解决方案是5。$$1。4它是通过效劳器来记录通讯情况。Session指的是效劳器端为客户端所开辟的存储空间,在其中保存的信息就是用于保持状态。当我们的浏览器首次访问或者登录效劳器时,效劳器就创立一个session,效劳器会为该Session生成唯一的Sessionid,这个sessionid将从URL或者从cookie返回客户端,以后的请求,从cookie或者URL附上Sessionid,效劳器承受到请求之后就会依据Sessionid找到相应的Session,这样,用户的状态也就记忆了。〔四〕初识缓存〔cache〕缓存(cache)保存在客户端上的。当我们首次访问某个页面时,浏览器会自动保存这个页面的局部容,例如html页面,图片等,当下一次再次访问时,缓存直接使用之前保存的数据响应访问请求,而不是向效劳器再次发送请求。这样大大的节约了访问的时间。一般缓存判断的常见流程如下:客户端首次访问效劳器后,效劳器会返回该页面的Last-Modified或ETag字段值,客户端将该页面数据保存在cache中,并记录这两个属性。当客户端再次访问这个页面,请求阶段的消息,会在If-Modified-Since〔对应Last-Modified〕或If-None-Match〔对应ETag〕两个字段中携带之前在cache中保存的Last-Modified或ETag的属性值。效劳器通过判断这个两个属性,判断页面是否发生变化,如无变化,客户端不需要重新下载,返回304响应。其他的判断方式还有使用Expires的头部字段,该字段给了一个文档的有效期,过了这个有效期,就必须重新下载。三、如何模拟 请求〔一〕在FIDDLER中模拟在第二节的第一点,我们抓取了,用注册号,查询企业注册信息的 请求,我们怎么模拟它呢?可以在FIDDLER中进展模拟,首先复制一下,第二节第一点中,我们在INSPECTORS选项卡中ROW标签得到的请求,然后选择composer选项卡RAW标签或者PARSED标签,填入我们所要发送的 请求,之前也所过了,很多字段其实是可选的,经过删减测试,最终必须的字段如以下图:OptionsPOST |http;/.□n/hjtipsInfo.doPmeihod-doSeardi HTTP/1.1 ▼RequestHeaders: [Upl口ud JContent-T>pe;applicaton/x-www-forni-urlencDdedHost!www.EContent4enaiti:37Requ?stBodysea-chT'/pe=2SkEyWDrck=310115OO09D9792

ParsedRawOptonsParsedRawOptonsPO5Thttp:/,sgs,gov,cn/lz/etpslnfia,dQ?method=daSearchHTTP/1,1Content-Type:applicatjon/M-ft'ww-form-urlencx)dedHast:www.sgs.g&v.tTiContent-Length:37seardiType=23keyWords=310115000909792然后按右上的EXECUTE按钮,就可以发送请求了,然后继续在左边界面和INSPECTORS选项卡中观看是否成功。〔二〕VBA中模拟当在FIDDLER中模拟成功后,我们就可以把相关的 请求,在VBA中,套用在XML 对象上。后面的课程会详细讲这些对象的属性和方法,本次仅是演示,代码如下:OptionExplicitSubtest()WithCreateObject("Microsoft.XML").setRequestHeader"content-type","application/x--form-urlencoded".SEND"searchType=2&keyWords=9792"Debug.Print.responsetextEndWithEndSub上述代码,仅仅模拟了 请求的过程,在立即窗口输出的是网页的源代码,后面还需加工处理,以后我们的课再说,其他有一定根底的同学,可以运用正那么等对象或文本处理函数,进展相关处理,获取我们所需的东东。还有转码的东西,不要急,后面也会说。还有,我们的浏览器,是怎么把这一大堆源代码,翻译成直观的东西的,下节课就会说了。不要小看上面这些通讯原理,没有他们,是肯定没法学好后面的容的,特别是,网页数据防盗的破解的。最后,小技巧,POST和GET不一定是绝对的,嘿嘿,有时候,POS

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论