node下载图片失败,但能在浏览器正常访问
发布于 9 年前 作者 zhou-yg 4248 次浏览 最后一次编辑是 8 年前 来自 问答

示例: u1和u2,两个链接都是百度的图片,在浏览器中均能正常打开,curl也正常

用下面的代码, u2是能正常下载,还有其它一些也是能正常下载的。 但个别像,u1就会碰到302错误,重定向到百度的一个错误提示页面。 http://error.baidu.com/errorname.html?url=&fr=space-hiphotos

好纠结,求大神解答。

    http = require 'http'
    fs = require 'fs'

    f1 = 'a.jpg'
    f2 = 'b.jpg'
    u1 = "http://g.hiphotos.baidu.com/baike/w%3D268/sign=dbae9cd8d339b6004dce08b1d1503526/00e93901213fb80eb58cfeec30d12f2eb93894a8.jpg"
    u2 = "http://b.hiphotos.baidu.com/baike/w%3D268/sign=02e1d6329445d688a302b5a29cc27dab/72f082025aafa40f8ae7d1dcad64034f78f01989.jpg"

    down = (u, f)->
      writeStream = fs.createWriteStream f

	  http.get u, (res)->
        console.log res.headers
        console.log res.statusCode
        res.pipe writeStream

      writeStream.on 'finish', ->
        console.log f, ' done'

    down u1,f1
2 回复

一般浏览器可以的, 程序不行的, 大都是 user-agent 再不行, 把浏览器发送的header全复制下来, 设置到程序中 需要登录的用 superagent.agent() 创建一个agent, 自动的处理cookie 相关header

@magicdawn 赞,确实解决

回到顶部