通过Fiddler 批量爬取小程序图片,开发微信小程序的时候,看到别人的小程序中某个图标或者图片好看想用, 下面小编给大家分享一下批量下载微信小程序中的图片。

第一步、安装 Fiddler

打开软件后,我们会在主界面看到这么一个弹框,我们点击【no】。解释已在下面给出。

1656486866-b798abe6e1b1318

1656486866-b798abe6e1b1318

第二步、在软件菜单栏中打开【File】——【Capture Traffic】抓取数据

第三步、我们先尝试入点击某一个请求,你会发现请求的内容是一堆明显不对的文字,然后该请求的左边是一个锁的样式,联想到https加密,你会发现原因可能是没有配置Fiddler。然后解释一下右边的默认返回内容,第一句是”这是一个CONNECT隧道,加密的HTTPS流量通过该隧道流动”,就证实了我们的猜测,果然是因为https加密的原因。所以我们需要安装证书!
1656486922-b798abe6e1b1318

第四步、配置FIddler来解析这些加密的请求呢?方法一是查官网的安装文档,二是我来教你吧:点击软件中的菜单栏中的【Tools】——【options】——【Https】,将【Decrypt HTTPS CONNECTs】勾上。

  • 7.勾选购会弹出框框。点击【Yes】

1656486866-b798abe6e1b1318-1

1656486867-b798abe6e1b1318

  • 点击【是】

  • 点击【是】

1656486867-b798abe6e1b1318

  • 最后点击【Yes】,证书安装成功!

1656486867-b798abe6e1b1318-1

1656486867-b798abe6e1b1318-1

第五步、证书安装成功后,重启软件。然后我们再来请求资源,重新打开之前准备好的小程序。然后在【Fiddler】软件中会显示数据。可以看出,这里是获取成功的。

第六步、如果无法抓取到PC微信小程序
解决办法:

打开小程序,任务管理器找到小程序所在位置,删除文件内容
一般路径为\Tencent\WeChat\XPlugin\Plugins\WMPFRuntime
删除runtime下所有文件夹
(删除不了就关闭微信再删除)

拦截图片请求转存到本地方法,修改FiddlerScript文件
1、点击菜单 Rules -> Customize Rules 替换文件里面的 OnDone 方法

一直下拉或搜索找到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="C:\\Users\\Administrator\\Desktop\\images\\";
					//不存在则创建文件夹
					if (!System.IO.Directory.Exists(saveDir))
						System.IO.Directory.CreateDirectory(saveDir);
                    
					//保存响应流
					oSession.SaveResponseBody(saveDir+fileName);
					//写日志
					FiddlerObject.log("[文件保存]:"+fileName)
				}
			}
		}
	}
  
注意图片保存的路径,要转义:
C:\\Users\\Administrator\\Desktop\\images\\
请以实际目录操作

关闭,保存。然后重启fiddler,enjoy~

我们随便找了个图片小程序做测试,可以看到fiddler中有抓到图片包,然后自动把图片保存到C:\\Users\\Administrator\\Desktop\\images\\目录下。

注:电脑版微信小程序在这:

以上内容是将某两篇文章实操合并而成!

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。