小程序里的图也能Python一下
- 先配置Fiddler。[alert class=”danger”]网上关于配置证书、降低微信APP版本等方法,经测试均无效,不要再去折腾啦!那些方法适用于早期的版本[/alert]正常情况下,你打开Fiddler,再打开小程序,是抓取不到小程序里的内容的,因为数据已经被微信小程序加密传输了。
- 菜单Rules->Customize Rules,找到static function Main() 代码,复制如下代码至上方,保存。
[reply]评论可见的内容
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="g:\\Temp\\";
//不存在则创建文件夹
if (!System.IO.Directory.Exists(saveDir))
System.IO.Directory.CreateDirectory(saveDir);
//保存响应流
oSession.SaveResponseBody(saveDir+fileName);
//写日志
FiddlerObject.log("[文件保存]:"+fileName)
}
}
}
}
}
[/reply]
[alert class=”success”]再去刷新小程序,即可找到相应图片链接。根据图片链接,用Python批量处理即可。
部分资源比较方便,譬如常州地图集,直接是JPG格式,但如上海小程序,是256×256像素的图片碎片,需要抓取后通过python的Pillow模块拼接,大概每张图约3~4MB。[/alert]
(Visited 69 times, 1 visits today)
额沙美岛
额 山东地图集