node.js抓取网络图片保存到本地,node.js抓取防盗链网络图片保存到本地

使用模块request、fs,request模块在npm里平均月下载量超过3000W次,那是相当的牛逼。

node版本8.0+,如果版本是8.0以下调用的时候就直接用promise。

封装

common.js
let request = require("request");
let fs = require("fs");class Ut {/*** 下载网络图片* @param {object} opts */static downImg(opts = {}, path = '') {return new Promise((resolve, reject) => {request.get(opts).on('response', (response) => {console.log("img type:", response.headers['content-type'])}).pipe(fs.createWriteStream(path)).on("error", (e) => {console.log("pipe error", e)resolve('');}).on("finish", () => {console.log("finish");resolve("ok");}).on("close", () => {console.log("close");})})};
}module.exports = Ut;

测试普通网络图片

test.js 下载csdn自己的头像
let Ut = require("./common");(async () => {try {let url = "http://avatar.csdn.net/1/A/1/3_zzwwjjdj1.jpg";let opts = {url: url,};let path = "./1.jpg";let r1 = await Ut.downImg(opts, path);console.log(r1);}catch (e) {console.log(e);}
})()

运行

node test.js


测试防盗链图片

http://i.meizitu.net/thumbs/2018/01/117406_24c17_236.jpg
let Ut = require("./common");(async () => {try {let url = "http://i.meizitu.net/thumbs/2018/01/117406_24c17_236.jpg";let opts = {url: url,};let path = "./2.jpg";let r1 = await Ut.downImg(opts, path);console.log(r1);}catch (e) {console.log(e);}
})()

执行node  test.js得到的不是原图,原图是个妹子图片

这个时候就要分析原网站防盗链的方法,这个网站需要在头部加上 Referer:http://www.mzitu.com/
let Ut = require("./common");(async () => {try {let url = "http://i.meizitu.net/thumbs/2018/01/117406_24c17_236.jpg";let opts = {url: url,headers: {'Referer': 'http://www.mzitu.com/',}};let path = "./2.jpg";let r1 = await Ut.downImg(opts, path);console.log(r1);}catch (e) {console.log(e);}
})()

再次运行node test.js 就会得到原图

完成。

意外金喜的博客:http://blog.csdn.net/zzwwjjdj1

node.js抓取网络图片保存到本地,node.js抓取防盗链网络图片保存到本地相关推荐

  1. 文章抓取显示盗链 php,web资源盗链与防盗链技术解析

    摘要:什么是资源盗链?简单的说,就是某些不法的网站,通过在其自身网站程序里未经过许可非法调用其他网站的资源,然后在自己的网站上显示这些调用的资源,达到了填充自身网站显示的效果,但是浪费了调用资源网站的 ...

  2. 构建node.js基础镜像_我如何使用Node.js构建工作抓取网络应用

    构建node.js基础镜像 by Oyetoke Tobi Emmanuel 由Oyetoke Tobi Emmanuel 我如何使用Node.js构建工作抓取网络应用 (How I built a ...

  3. node.js开源文件服务器,本地node.js服务器搭建

    本地node.js服务器搭建并通过浏览器访问服务器 1 2 3 github下载express https://github.com/expressjs/express 1.首先 检查是否安装了nod ...

  4. python可抓取数据包括什么_Python对JS型数据抓取有什么特别好的方法吗,pythonjs型抓取,想写一个爬虫,但是需要抓...

    Python对JS型数据抓取有什么特别好的方法吗,pythonjs型抓取,想写一个爬虫,但是需要抓 想写一个爬虫,但是需要抓去的的数据是js生成的,在源代码里看不到,要怎么才能抓到呢? 最好是用pyt ...

  5. js和css被屏蔽了,是否屏蔽蜘蛛抓取JS和CSS文件

    做网站的人都知道,在查看日志的时候,会发现JS.CSS文件被蜘蛛抓取的频率特别高,于是有人便考虑在robots.txt屏蔽蜘蛛抓取js和css文件,节省蜘蛛时间给其他页面.是否屏蔽蜘蛛抓取JS和CSS ...

  6. Node.js (v19.1.0npm 8.19.3) vue.js安装配置教程(超详细)

    Node.js (v19.1.0npm 8.19.3) vue.js安装配置教程(超详细) 目录 一.安装Node(npm)需要的环境和版本发布信息 (1).Node版本和npm版本关系 (2).支持 ...

  7. 爬虫Spider 05 - 代理参数-proxies | 控制台抓包 | requests.post() | 动态加载数据抓取-Ajax

    文章目录 Spider 04回顾 requests.get()参数 常见的反爬机制及处理方式 Spider 05笔记 代理参数-proxies **控制台抓包** **requests.post()参 ...

  8. 非常【刑】又可【拷】的fiddler抓包实战 涵盖使用教程/下载安装/抓取手机app

    Fiddler是一款非常强大的网络抓包工具,可以帮助我们分析HTTP/HTTPS协议的流量,从而深入了解网站的运行机制,发现安全风险和性能问题.下面是Fiddler工具的基础使用方法. 视频教程:非常 ...

  9. node/js 漏洞_6个可用于检查Node.js中漏洞的工具

    node/js 漏洞 Vulnerabilities can exist in all products. The larger your software grows, the greater th ...

最新文章

  1. 指针应用-----链表二
  2. HTML5手机端弹窗、提示框、loading加载(多功能xwPop弹窗升级版)
  3. gets scanf以及缓冲区域的问题
  4. 在继承类中,父类在子类中初始化问题,已解决
  5. log4j2 无垃圾模式
  6. Codeforces 914D - Bash and a Tough Math Puzzle 线段树,区间GCD
  7. 第一百五十三期: 云迁移可能失败的5种方式以及成功的5种方式
  8. 【转】3.5(译)构建Async同步基元,Part 5 AsyncSemaphore
  9. CSS性能优化:可以试一试内联CSS?
  10. 关于SpringBoot场景启动器
  11. 中本聪主题系列NFT收藏品在OpenSea发售,于26秒内售罄
  12. Ubuntu安装gcc失败的那些事儿
  13. 数据统计分析(SPSS)【1】
  14. 邮箱注册哪个好?哪家的邮箱最好用呀
  15. 使用Frida hook 获取native层代码的返回值
  16. xstart下远程报错已拒绝X11转移申请的解决方法
  17. 删除你的所有计算机文件的英文,删除Download和DataStore文件夹中的所有文件
  18. m3u8链接加密源码
  19. 【K8S系列】第四讲:kubadm部署k8s时service-cidr网络和pod-network-cidr的地址如何定义
  20. signature=cf2a4ebb3fc32cddedd659609006f5f5,Таджикистан. Трудныйпутьразвития...

热门文章

  1. js生成图片的多边形科技感效果
  2. jQuery Validation Engine验证模拟的下拉列表非select
  3. 手机和汽车将是未来最有爆发力的两种消费品
  4. 射灯安装方法图解_嵌入式射灯更换安装方法图解
  5. [干货]“真传奇”遍地走,游戏开发者们该如何破局?
  6. Python基础(转载)
  7. Unity - PS4/XBox360 双摇杆控制 - 设置好你的ProjectSetting-Input
  8. int与char类型间的相互转化
  9. 超次元大海战如何用电脑玩 超次元大海战手游PC电脑版教程
  10. linux-----压缩解压缩文件夹、文件命令详解