我正在尝试创建一个漫画抓取网站作为个人项目,就在我完成整个网站时,我知道图像无法被我的网站抓取或查看,当我尝试转到图像的链接时,我收到 1020 错误,指出访问被拒绝,有什么方法可以绕过该错误,而无需从网站所有者那里获取授权令牌,
如果答案是否定的,那么任何人都可以解释一下 cloudflare 如何保护图像免遭抓取,因为据我所知,前端的所有内容都可以被抓取。
编辑:这是其中之一image https://s61.mkklcdnv61.com/mangakakalot/u1/uh918990/chapter_0_prologue/31.jpg我想抓取,但当我在浏览器上打开时,它给出 1020 访问被拒绝错误
通过该网站,为了下载类似的图像this one https://s61.mkklcdnv61.com/mangakakalot/u1/uh918990/chapter_0_prologue/1.jpg,您在 http 请求中需要此标头:
Referer: "https://mangakakalot.com/"
添加该标头,然后它成功返回所需的图像。删除该标头,您会收到错误(在本例中为 403)。
这是一个简单的测试应用程序:
const got = require('got');
const url = "https://s61.mkklcdnv61.com/mangakakalot/u1/uh918990/chapter_0_prologue/1.jpg";
const options = {
headers: {
Referer: "https://mangakakalot.com/",
}
}
got(url, options).then(result => {
console.log(result);
}).catch(err => {
console.log(err);
});
仅供参考,如果您想知道我是如何得出这个结果的,我访问了包含此图像的网页。我查看了 Chrome 调试器的“网络”选项卡,找到了浏览器下载该特定图像的引用。然后,我查看了向服务器发出的获取此图像的请求,并查看了请求中的其他标头。我添加了两个简单的(Referrer
and User-Agent
)以更准确地模仿浏览器。这将响应从 403 更改为 200。然后,我尝试看看是否可以删除这些标头中的任何一个,并且它仅适用于Referrer
header.
我猜测这里的 403 错误和您在浏览器中直接访问该链接时看到的 1020 错误之间的区别可能与所使用的 http 版本有关(浏览器比我的 Nodejs 脚本更高级)。但是,重点是您现在可以下载上述脚本中的图像。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)