记录使用fiddler抓取小程序图片的步骤和问题

  1. 安装Fiddler
  2. Tools-options配置
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    问题一:如果无法抓取到PC微信小程序
    解决办法:打开小程序,任务管理器找到所在位置,删除文件内容
    一般路径为\Tencent\WeChat\XPlugin\Plugins\WMPFRuntime
    删除runtime下所有文件夹
    重启微信

拦截图片请求转存到本地方法,修改FiddlerScript文件
1、点击菜单Rules->Customize Rules
在这里插入图片描述
将如下代码复制到 static function Main() 的上方,然后ctrl + s .然后开始浏览相册,即可将图片保存至目录
(一定要有当前设置的目录)

保存之后,运行小程序即可

static function OnDone(oSession: Session) {
    FiddlerObject.log(oSession) 
    //判断host请求避免下载其他图片
    if(oSession.RequestHeaders["Host"] == "a0.cdn.xiaoenai.com"){
      //检查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)
          }
        }
      }
    }
  }
  
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Fiddler是一个流行的网络调试工具,常用于抓取HTTP和HTTPS流量,帮助开发者理解和调试Web应用。在抓取微信小程序的数据时,由于微信小程序采用了特殊的通信协议(如WXML, WXSS, JavaScript Bundle等)和加密机制,直接使用Fiddler可能会遇到一些挑战: 1. **跨域限制**:微信小程序默认是不允许跨域请求的,你需要配置微信开发者工具的“安全域名”设置,才能允许特定域名的请求被Fiddler截获。 2. **加密处理**:微信提供了自家的加密套件,如TLS 1.3和随机数生成,这可能使Fiddler难以直接解析响应内容,你可能需要解密工具或者了解微信的安全策略。 3. **特殊接口**:微信小程序的数据请求可能通过微信提供的API或者其他自定义接口,这些接口通常是隐藏的或有权限限制,Fiddler可能无法直接跟踪。 4. **调试工具**:微信提供了微信开发者工具,其中内置了调试网络的能力,你可以尝试在开发工具中查看和调试小程序的数据交互。 **步骤概述**: - 配置微信开发者工具:确保你已经设置了正确的安全域名,并开启调试模式。 - 使用微信开发者工具的网络面板:在模拟器或真机上查看小程序的数据请求。 - 如果需要抓取,可以在开发者工具的请求日志中找到相关请求,然后在Fiddler中设置代理服务器(比如127.0.0.1:8888)来拦截并分析请求。 **相关问题**: 1. 如何在微信开发者工具中设置安全域名? 2. 微信小程序的加密套件具体是什么? 3. Fiddler如何设置代理服务器来拦截微信请求?
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值