中间层概念
简单的一个数据发送接收流程:前端 < – -- > 后端 <- – -> 数据库
node中间层:前端 < – > node中间层 < – > 后端 < — > 数据库
文章:【探索】NodeJS中间层搭建——楔子
实战
今天抓取某素材网站资源下载资源链接时,源网站禁止访问,出现403提示。
就是将下载该文件的url路径新窗口打开复制访问。
很明显,该网站对访问的源头进行了校验,于是我进行了如下操作。
然后,下载弹框可以正常打开,对比了一下,是请求头中的referer导致的。于是就百度查看前端是否可以修改referer,但是未有发现。
还好之前学过node知识,想到了可以通过node中间层代理转发的同时修改请求配置信息来解决这个小问题。
用到的nodejs代理模块
npm i http-proxy --save
该npm包链接
看数据很明显用到人很多,所以选择了这个
var httpProxy = require('http-proxy');
const http = require('http')
var proxy = httpProxy.createProxyServer({}); // See (†)
const server = http.createServer(function(req, res) {
// 代理的地址
const url = 'https://down.51miz.com/'
// 将请求素材网站的referer替换为同域名
req.headers.referer = url
delete req.headers.host;
proxy.web(req, res, { target: url });
});
proxy.on('error', function(e) {
console.log(e);
});
server.listen(3001)
浏览器访问 http://127.0.0.1:3001/···/···/ 时,
实际访问的是 https://down.51miz.com/···/···/
这样就解决了同源的限制。可以正常爬取下载了~