自动保存图片"/>
FiddlerScript自动保存图片
Fiddler 真的是一款相当不错的数据包分析工具,从数据包截取,分析,改数据,可编程规则 等方方面面 真的可以说的上数一数二的好工具了。
本次事件的由来是由于在微信中很多推广网站&页面,都对微信&手机进行了识别,非微信&手机情况下,网页不可访问。
有朋友想获取网页内容和相关图片所以拜托我来解决。仔细想了想这种情况,感觉没有必要重头编写一个程序去模拟,因为要解决很多的问题,模拟手机、模拟微信,最麻烦的可能还要模拟的token 获取过程。
而且受规则一旦发生变化,未来的代码维护也变的不可预见的麻烦。
所以采用代理方式,让终端正常操作,对流经的所有内容进行过滤,保存,效果应该最好。遵循这个思路,立刻就想到了 Fiddler。
(曾经用过Fiddler 帮朋友破解过直播网站免费看小视频。-,.-! 好吧,我也看了~)
这里分享我用的Fiddler 4.6.3 中文汉化版 链接: 提取码: jufr
可能会被提示有病毒,可以忽略误该报提示。文件夹里还有 fiddlersyntaxsetup.exe 源码编辑扩展的下载。(原版亚马逊云的下载需要咳血上网,另外好像这几天咳血上网也无法下载)
大体解决思路为,利用Fiddler 的 规则-> 自定义规则 (c#代码)来实现对内容的分析、过滤、保存过程。
1、打开Fiddler ,找到 规则(Rules)-> 自定义规则(Customize Rules) 打开 规则代码。
2、定位并找到 static function OnDone(oSession: Session) 处。(该部分代码默认情况下是注释状态,)
static function OnDone(oSession: Session) {//检查Content-Type if (oSession.ResponseHeaders["Content-Type"]!=null || oSession.ResponseHeaders["content-type"]!=null){//避免不规范标头var contentType=oSession.ResponseHeaders["Content-Type"];if (String.IsNullOrEmpty(contentType) )contentType=oSession.ResponseHeaders["content-type"];//判定请求是否图片if (contentType.Contains("image")){//确定文件名(保存用)var fileName="";var fileIndex = oSession.RequestHeaders.RequestPath.LastIndexOf ("/");if (fileIndex>0)fileName = oSession.RequestHeaders.RequestPath.Substring (fileIndex+1);//如果文件名非法(名称含非法字符)if(fileName.IndexOf('?')>0 || fileName.IndexOf('&') )fileName=String.Empty;//输出日志(在Fiddler 主窗口,日志处输出)//FiddlerObject.log("Content-Type:"+ contentType +" RequestPath:"+oSession.RequestHeaders.RequestPath);//如果文件名为Null,自行创建一个文件名(Guid)if (String.IsNullOrEmpty( fileName)){fileName=Guid.NewGuid().ToString();var extName= contentType.Replace("image/","");fileName=fileName+"."+extName;}//太小的图片不要,比如站位图片(自行调节)if (oSession.ResponseBody.Length>100){//指定保存位置var saveDir="d:\\Temp\\";//不存在则创建文件夹if (!System.IO.Directory.Exists(saveDir))System.IO.Directory.CreateDirectory(saveDir);//保存响应流oSession.SaveResponseBody(saveDir+fileName);//写日志FiddlerObject.log("[文件保存]:"+fileName)}}}}
转载至.html
更多推荐
FiddlerScript自动保存图片
发布评论