您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 如何免费下载百度文库的收费文档(下载分析)
如何免费下载百度文库的收费文档-下载分析。所以,要想在上面下载许多文档,是不现实的。对于收费的文档,想想缓存里应该有的吧。找了,没找到。感觉挺神奇的,用flash/flex显示word内容。用httpwatch看一下。链接:找到2个跟flash相关的链接://wenku.baidu.com/play/e76593c3d5bbfd0a795673a6?pn=1&rn=5第一个,是阅读器。第二个是文档内容从阅读器开始吧。用SothinkSWFDecompiler打开跟显示的很像,应该就是这个了。看一下as代码吧。packagereader_fla{importflash.display.*;importflash.events.*;dynamicpublicclassMainTimelineextendsMovieClip{这个类用来,处理进度条的。不管了。packagebaidu.iknow{importflash.display.*;importflash.events.*;publicclassmainextendsSprite{找到加载的主函数了。packagebaidu.iknow{importflash.display.*;importflash.events.*;publicclassReaderextendsSprite{privatevar_firstPagesNum:int;privatevar_normalPageNum:int;privatevar_bookmark:String;privatevar_toolBar:ToolBar;privatevar_docURL:String;privateconstBG_COLOR:int=8890837;privatevar_bg:Sprite;privateconstBORDER_COLOR:int=5668272;privatevar_docViewer:DocViewer;privatevar_loading:Loading;上面的读取类,明白了不?_docURL,文档地址BG_COLOR,背景色出来了下面分析下DocViewer,以及这个url,怎么个展示法了。。。在DocViewer中找到这样一段。。。正好证明了上面的第2个跟flash相关的链接(这样写,是为了防止文档页数越界,到最后一页,自动返回第一页)=1&rn=5上面的这个地址,就是由main.as和DocViewer.as两个类生成出来的。e76593c3d5bbfd0a795673a6,文档编号pn=1,已经加载了第1页,当前显示的是第1页rn=5,一共5页注意,pn=5读下来,怎么处理的呢?才成功显示成我们需要的文档的呢?varbinaryLoader:*=newURLLoader();binaryLoader.dataFormat=binary;binaryLoader.addEventListener(ProgressEvent.PROGRESS,this.binaryLoading);binaryLoader.addEventListener(Event.COMPLETE,this.binaryLoadComplete);binaryLoader.addEventListener(IOErrorEvent.IO_ERROR,this.binaryLoadError);数据处理varbinaryRequest:*=newURLRequest(tmpURL);读取数据binaryLoader.load(binaryRequest);if(this._showLoading){dispatchEvent(newEvent(SHOW_LOADING,true));}this._inLoading=true;用binaryLoader加载读过来的数据,并设置,正在加载的提示状态。下面,主要看binaryLoader的几个监听事件了。ProgressEvent.PROGRESS,this.binaryLoading正在加载的处理事件Event.COMPLETE,this.binaryLoadComplete加载完成的处理事件IOErrorEvent.IO_ERROR,this.binaryLoadError加载出错的处理事件设置进度条,没什么好看的。有点长,下面还有。。不拿过来了。。这里就是处理下载的内容的。看一下,下载的内容什么样。。先。。在httpwatch中看一下,content和streamServer:Lighttpd,好熟悉。。先不谈这个,均衡用的。页数出来了下面应该是内容。Content里显示不是可显示的flash格式,肯定不是了。(268039bytes),不用说了,这么大200多KB,差不多了,写到这,我看了一下,我写的这个文档大小。哈哈,,有可能,是把文档内容直接给下载完了哦。。不说了。。直接分析下载结束后的处理代码。代码,还是贴一下吧。。好写注释。privatefunctionbinaryLoadComplete(param1:Event=null):void{var_loc_11:ByteArray;var_loc_12:int;trace(binaryLoadComplete...);Console.log(binaryLoadComplete...);if(this._noDoc){if(this._noDoc.parent){this._noDoc.parent.removeChild(this._noDoc);}this._noDoc=null;}this._loadPercent=0;var_loc_2:*=URLLoader(param1.target);var_loc_3:*=_loc_2.data;this._byteArray=[];var_loc_4:Array;var_loc_5:int;var_loc_6:*=_loc_3.length;while(_loc_5_loc_6){if(_loc_5+3_loc_6){if(_loc_3[_loc_5]==67||_loc_3[_loc_5]==70&&_loc_3[_loc_5+1]==87&&_loc_3[_loc_5+2]==83&&_loc_3[_loc_5+3]==9||_loc_3[_loc_5+3]==10){_loc_4.push(_loc_5);}}else{_loc_4.push(_loc_6);break;}_loc_5++;}var_loc_7:*=_loc_3.readMultiByte(_loc_4[0],utf-8);trace(_loc_7);Console.log(_loc_7);var_loc_8:*=JSON.decode(_loc_7);this._pagesAll=Number(_loc_8[totalPage]);if(!this._pagesLoaded){this._pagesLoaded=0;}this._pagesLoaded=this._pagesLoaded+(Number(_loc_8[toPage])-Number(_loc_8[fromPage])+1);this._fromPage=Number(_loc_8[fromPage]);this._toPage=Number(_loc_8[toPage]);trace(pagesall:+this._pagesAll+,frompage:+this._fromPage+,topage:+this._toPage);Console.log(pagesall:+this._pagesAll+,frompage:+this._fromPage+,topage:+this._toPage);this._pagethLoading=Number(_loc_8[fromPage])--;var_loc_9:int;while(_loc_9_loc_4.length--){_loc_11=newByteArray();_loc_12=_loc_4[_loc_9+1]-_loc_4[_loc_9];_loc_3.readBytes(_loc_11,0,_loc_12);this._byteArray.push(_loc_11);_loc_9++;}trace(...............这一次加载了多少页:+this._byteArray.length);Console.log(...............这一次加载了多少页:+this._byteArray.length);this._hasConvertPages=0;this._allConvertPages=Math.min(this._byteArray.length,this._toPage-this._fromPage+1);if(this._allConvertPages0){this.byteArr2DisplayObj(this._hasConvertPages);}else{trace(blankdocument...);this.processNoDoc();this._loadPercent=0;dispatchEvent(newEvent(STOP_LOADING,true));this._inLoading=false;}return;}//endfunction先留着,哪位有兴趣,写个程序哦?提示:模拟请求后,打开这个页,将内容,下载。Httpclient+selenium或htmlutil,可以完成收费文档下载了。。。别忘了,互相转换cookies,session什么的。。待续。。。Mail:gaoqs1984@gmail.com上官伯阳2010-3-26下载flashpaper,自己转换一下文档成swf说明了,是由flashpaper做成的swf,再显示的
本文标题:如何免费下载百度文库的收费文档(下载分析)
链接地址:https://www.777doc.com/doc-7948161 .html