2017-09-25 3 views
1

request npmモジュールを使用しています。私はURLから画像を取得したいと考えています。 request.get(url)関数は私に '400 Bad Request'を返しますが、イメージはブラウザからアクセス可能です。URLがブラウザからアクセス可能な間にNodeJsのrequest.get()関数が動作しません

私は当たっていますURLは次のとおりです。http://indiatribune.com/wp-content/uploads/2017/09/health.jpg

+0

コードのサンプルをお送りください。 – MaieonBrix

答えて

1

あなたは、いくつかのヘッダを追加しようとすることができます:

const request = require('request'); 
request.get({ 
    url: 'http://indiatribune.com/wp-content/uploads/2017/09/health.jpg', 
    headers: { 

     Accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8', 
     'Accept-Encoding': 'gzip, deflate', 
     'Accept-Language': 'en-GB,en;q=0.8,en-US;q=0.6,hu;q=0.4', 
     'Cache-Control': 'max-age=0', 
     Connection: 'keep-alive', 
     Host: 'indiatribune.com', 
     'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36', 

    }, 
}, (err, response, data) => { 
    console.log(response, data); 
}); 

User-Agentは十分のようです。

+0

はい、動作しています。ありがとうございました。しかし、私は今、もっと不満です。なぜ他の画像URLはこれらのヘッダを必要としないのですか?どのURLがどのヘッダを必要とするのかを知るにはどうすればいいですか?このURLについてはユニークなものは何ですか?そのような特別な場合が生じますか? –

+1

この画像を扱うサーバーによって異なります。この場合、サーバーはヘッダーをチェックし、それに応じて応答を送信します。おそらく、サーバはイメージをブラウザに提供したいだけで、ボットではありません。ほとんどのWebサーバーはこのチェックを行いません。 – Adam

+0

私はこのようないくつかの一般的なヘッダーを私のフレームワークに追加するので、このような問題は少なくなります。それはサーバーのコードとチェックに依存するので、私はそこにこのような問題の永続的な解決策はないと思います。ありがとうございました。 –

1

download moduleを使用してください。それはかなり簡単です。

const fs = require('fs'); 
const download = require('download'); 

download('http://indiatribune.com/wp-content/uploads/2017/09/health.jpg').pipe(fs.createWriteStream('foo.jpg')); 
+0

私は、このhttpとhttpsのやりとりのために書かれたフレームワークを持っています。これはデータに関係なく一般的です。私はダウンロードモジュールがそれに収まると思います。 –

+1

ダウンロードモジュールに関する情報をありがとうございます。これは将来的に私にとって役に立ちます。 –

関連する問題