惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

C
Check Point Blog
GbyAI
GbyAI
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 叶小钗
U
Unit 42
Engineering at Meta
Engineering at Meta
aimingoo的专栏
aimingoo的专栏
Y
Y Combinator Blog
Google DeepMind News
Google DeepMind News
Vercel News
Vercel News
美团技术团队
雷峰网
雷峰网
Recent Announcements
Recent Announcements
有赞技术团队
有赞技术团队
D
DataBreaches.Net
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Apple Machine Learning Research
Apple Machine Learning Research
J
Java Code Geeks
罗磊的独立博客
MyScale Blog
MyScale Blog
博客园_首页
IT之家
IT之家
F
Fortinet All Blogs
博客园 - Franky

博客园 - 李佩亮

Windows 上免费安装 HEVC 视频编码器。 20210913 代码抓取的淘宝所有商品分类-到品牌 2016年度,这40项IT技能年薪轻松超过10万美元 云开发听说过没? Compilr 屌爆的在线开发工具 -_-# 中美互联网生存现状对比报告(给老外看的) C# Winform控件对透明图片重叠时的解决方法 一山容二虎,支持最新版Log4Net 的模板引擎-NVeloCity 页面路径修正,ResolveUrl - 李佩亮 - 博客园 [摘抄]江湖经验:喝酒时玩的游戏大全! 做生意的10条规则,新手老鸟都可参照。 关于 linux 分区[转自ubuntu中文论坛] Flex中Image加载图片出错显示默认图片 - 李佩亮 - 博客园 分享C#高端视频教程 .net 下操作鼠标滚轮的事件 以及换算方法 总是忘记的oracle 函数 磁盘IO性能监控(Linux 和 Windows)[转] Background Intelligent Transfer Service 服务错误(BITS服务失败) 的修复解决方案 在XML中嵌入一个图片,一般采用转换为Base64 的做法(含转出代码) 才疏学浅,见识到一个没见过的数组转换类型方式(byte[] -> sbyte[]),特此拜祭一下。
Fiddler 自动保存图片及相关内容
李佩亮 · 2020-03-26 · via 博客园 - 李佩亮

Fiddler 真的是一款相当不错的数据包分析工具,从数据包截取,分析,改数据,可编程规则 等方方面面 真的可以说的上数一数二的好工具了。

本次事件的由来是由于在微信中很多推广网站&页面,都对微信&手机进行了识别,非微信&手机情况下,网页不可访问。

有朋友想获取网页内容和相关图片所以拜托我来解决。仔细想了想这种情况,感觉没有必要重头编写一个程序去模拟,因为要解决很多的问题,模拟手机、模拟微信,最麻烦的可能还要模拟的token 获取过程。

而且受规则一旦发生变化,未来的代码维护也变的不可预见的麻烦。

所以采用代理方式,让终端正常操作,对流经的所有内容进行过滤,保存,效果应该最好。遵循这个思路,立刻就想到了 Fiddler。

(曾经用过Fiddler  帮朋友破解过直播网站免费看小视频。-,.-! 好吧,我也看了~)

这里分享我用的Fiddler 4.6.3 中文汉化版 链接: https://pan.baidu.com/s/17F6s8hsMNdhSqXc7OeLnbQ 提取码: 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)
                }
            }
        }
    }

我写代码一般备注比较多,所以在此不再赘述。

保存后,Fiddler 会自动加载并应用此规则。

自此,本机或通过代理过来的 访问中如果有图片的,均会自动保存在d:\temp 文件夹下。

不过微信和不少网站都需要https 连接,默认情况下,代理会出现证书问题,需要配置相关的根证书。

关于Fiddler 如何配置HTTPS 和如何配置代理,请参考我另外一篇博文。