关于从美之图网站爬图片
自从妹子图网站倒了后(懂的都懂,不懂的也请不要举报,技术交流嘛),我找到了一个代替网站“美之图”,以下是链接:https://mmzztt.com/photo/
在这个网站看图的时候,发现在地址栏的网址不变的情况下,点击主图部分进行下一张查看,我用开发者模式F12看了一下,在figure→img标签下,会有图片的路径变化。
但是遇到这种网址不变,只有点击“下一张”才会出现下张图路径的情况,我该怎么抓取,不想老是(F12打开开发者模式→寻找img标签→右键图片路径→在新tab中打开→图片另存为→F12关闭开发者模式→点击下一张)这样重复操作。
各位大佬有没有代码或者思路能便捷抓取套图,或者生成一个按钮,让我在遇到想收藏的图片时可以读取当前的img获取图片。
看xhr https://www.hualigs.cn/image/62c620df5adc7.jpg 南归 发表于 2022-7-7 07:55
我在开发者模式的console中试过_0x21b6b5,以及其他_0x开头的,都没有返回数组列表,求大佬再指点迷津{:9_221:} https://xibi.tv/ 要不这个aHR0cHM6Ly94aWJpLnR2Lw==
base64 如果您刚开始入门,个人首先建议考虑更换一个目标:对这个站点图像加载的行为进行解析和模拟是相对困难的。
整体把握, 3 楼的方式应该是正解,此变量名来源于页面加载的脚本,应该是随机的,需要识别其出现模式并进行提取,依靠猜测是无法解决问题的。不幸的是似乎包含这一变量名的文件名称同样是随机的,您也许可以通过搜索字符串CryptoJS来辅助定位此文件。
这些信息根本上来源于页面 HTML 末尾的大段注释中的十六进制字段,这一字段按照某种规则取子串后解码为二进制并进行 Base64 编码,利用另外脚本部分的密钥、初始向量等进行解密(应该是AES算法)即得到 3 楼中截图的 JSON 。也可以考虑像这样利用已知位置的信息模拟脚本行为来自行完成解码和解密,代价是更大的工作量。
另外一个可能的解决方案是劫持 CryptoJS 的解密函数,令其在返回前导出其解密结果。可以利用浏览器的文件加载替换等功能,或者利用 Violentmonkey 等工具进行。 dolly_yos2 发表于 2022-7-7 21:48
如果您刚开始入门,个人首先建议考虑更换一个目标:对这个站点图像加载的行为进行解析和模拟是相对困难的。 ...
大佬,我是没系统学过编程,网页等知识,所以您的解释我看的也是一知半解,但我发现我看过的图片文件会存在Sources→top→mmzztt.com→p.iimzt.com→2022/06这个路径下边,那我能不能用python从这个路径把图片提取出来? 平心而论如果想达到用网页 URL 作为输入使用 Python 直接下载页面对应的图集在这个站点上是相当困难的,其随机性比较出色的复杂化了对模式的识别。不过如果能够接受在浏览器中打开页面时可以自动导出页面的图集标题和图片链接的话,简单写了一段代码可供参考,此代码实现的是先前评论中给出的最后一个思路:
// ==UserScript==
// @name download helper -- mmzztt.com
// @namespace 415c1050-02fc-4853-b14d-866818d37c84
// @match https://mmzztt.com/photo/*
// @grant none
// @version 1.0
// @author -
// ==/UserScript==
;(()=>{
const oldDecrypt = CryptoJS.AES.decrypt;
CryptoJS.AES.decrypt = (...args) => {
const result = oldDecrypt(...args);
const base = document.querySelector('figure img').src.match(/(.+)\/.+/);
alert(JSON.stringify({
title: document.getElementsByTagName('h1').innerText,
images: JSON.parse(result.toString(CryptoJS.enc.Utf8)).map((item) => (`${base}/${item}`)),
}));
return result;
};
})();
将这段代码添加到浏览器插件 Violentmonkey 中,当打开图集(写真集)时将会弹出对话框给出包含当前页面图集的标题和图片链接数组的 JSON 字符串,可以将其复制到如 Python 中进行解析处理和下载。同时此脚本(应该)不会影响原有页面功能。
注意如果要使用脚本批量下载图片需要添加一个 HTTP header
Referer: https://mmzztt.com
同时适当调整 UA ,否则会被服务器拒绝响应(返回 403 )。
声明:此代码和猜测分析仅供学习交流使用,请用于合法用途,确认您获取数据的行为得到了数据所有者的明确同意。本人不对不当用途及造成的后果负责。
另:在本论坛中先前看到过一些帖子介绍有一个 Python 库可以模拟浏览器行为如点击等,可能也有一定参考价值。 dolly_yos2 发表于 2022-7-11 11:04
平心而论如果想达到用网页 URL 作为输入使用 Python 直接下载页面对应的图集在这个站点上是相当困难的,其 ...
感谢大佬!
页:
[1]