Puppeteer node.js:下载镜像时拒绝访问



我正在尝试使用fs.createWriteStream函数下载一个映像。我可以下载图像,但它已损坏。我收到一条错误消息,上面写着:"访问被拒绝您没有访问";https:"在这个服务器上";

我在headless:false模式下使用puppeteer,我还将用户代理设置为:"Mozilla/5.0(Windows NT 10.0;Win64;x64(AppleWebKit/537.36(KHTML,类似Gecko(Chrome/61.03163.100 Safari/537.36〃(

我调用的下载文件的函数如下:

const https = require("https");
const http = require("http");
const fs = require ("fs");
const path = require("path");
const URL = require("url").URL;
function download (url, filepath,callback,){
const userURL = new URL (url);
const requestCaller = userURL.protocol === "http:" ? http : https;
const filename = path.basename(url);

const req = requestCaller.get(url, function(res){
const fileStream = fs.createWriteStream(path.resolve(filepath,filename));
res.pipe(fileStream);
fileStream.on("error", function(err){
console.log("Error writing to the stream.");
console.log(err);
});
fileStream.on("close",function(){
callback(filename);
});
fileStream.on("finish", function(){
fileStream.close()
});
});
req.on("error", function(err){
console.log("Error downloading the file.");
console.log(err);  
});

};
module.exports.download = download;

我试图下载的图像的URL是这样的:

https://www.vrisko.gr/logos/775165.jpg

我似乎被服务器阻止了,但我不知道除了设置用户代理和不在无头模式下运行puppeteer之外,还能做什么。有什么想法吗?

[编辑]

显然CORS政策存在问题。我检查了网络呼叫,看到了以下内容:

推荐人政策:交叉来源时严格来源sec提取站点:无

而当我简单地从浏览器手动导航时,我会得到以下信息:

推荐人策略:不安全的urlsec提取站点:同源

非常感谢!

我使用npm模块CORS修复了CORS策略的所有错误。使用"npm Install cors"安装它并执行以下操作:

const cors = require('cors');
const app = express();
app.use(cors());
app.options('*', cors());

最新更新