1

经常用到nodejs下载资源的情况(简单的爬虫),可以考虑直接使用nodejs内置的http/https模块。

test.mjs

import https from 'https'
import fs from 'fs'
import URL from 'url'

let urlObj = URL.parse(url)
https.get({
    ...urlObj,
    rejectUnauthorized: false, // 忽略https安全性
    method: 'GET',        // 请求方式
    headers: {
        referer: '',    // 如果资源有防盗链,则清空该属性
    },
}, res => {
    //设置编码格式
    res.setEncoding('binary');
    let img = ''
    res.on('data', chunk => {
        img += chunk
    })
    res.on('end', chunk => {
        // 写到本地,(文件名,源文件,编码格式)
        fs.writeFileSync('./test.jpg', img, "binary");
    })
})

post数据


import http from 'http'
import URL from 'url'

async function post(url, dataStr) {
    let urlObj = URL.parse(url)
    return new Promise((resolve) => {
        const req = http.request({
            ...urlObj,
            method: 'POST',        // 请求方式
            headers: {
                'Content-Length': dataStr.length, // post必须填写大小
                'Content-type': 'application/x-www-form-urlencoded', // 编码格式
                referer: url,    // 如果资源有防盗链,则清空该属性
            },
        }, res => {
            //设置编码格式
            // res.setEncoding('binary');
            let data = ''
            res.on('data', chunk => {
                data += chunk
            })
            res.on('end', chunk => {
                resolve(data)
            })
        })

        // 发送数据
        req.write(dataStr);
        req.end();
    })
}

jsoncode
4k 声望786 粉丝

I'm jsoncode