request
npmモジュールを使用しています。私はURLから画像を取得したいと考えています。 request.get(url)関数は私に '400 Bad Request'を返しますが、イメージはブラウザからアクセス可能です。URLがブラウザからアクセス可能な間にNodeJsのrequest.get()関数が動作しません
私は当たっていますURLは次のとおりです。http://indiatribune.com/wp-content/uploads/2017/09/health.jpg
request
npmモジュールを使用しています。私はURLから画像を取得したいと考えています。 request.get(url)関数は私に '400 Bad Request'を返しますが、イメージはブラウザからアクセス可能です。URLがブラウザからアクセス可能な間にNodeJsのrequest.get()関数が動作しません
私は当たっていますURLは次のとおりです。http://indiatribune.com/wp-content/uploads/2017/09/health.jpg
あなたは、いくつかのヘッダを追加しようとすることができます:
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
は十分のようです。
はい、動作しています。ありがとうございました。しかし、私は今、もっと不満です。なぜ他の画像URLはこれらのヘッダを必要としないのですか?どのURLがどのヘッダを必要とするのかを知るにはどうすればいいですか?このURLについてはユニークなものは何ですか?そのような特別な場合が生じますか? –
この画像を扱うサーバーによって異なります。この場合、サーバーはヘッダーをチェックし、それに応じて応答を送信します。おそらく、サーバはイメージをブラウザに提供したいだけで、ボットではありません。ほとんどのWebサーバーはこのチェックを行いません。 – Adam
私はこのようないくつかの一般的なヘッダーを私のフレームワークに追加するので、このような問題は少なくなります。それはサーバーのコードとチェックに依存するので、私はそこにこのような問題の永続的な解決策はないと思います。ありがとうございました。 –
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'));
私は、このhttpとhttpsのやりとりのために書かれたフレームワークを持っています。これはデータに関係なく一般的です。私はダウンロードモジュールがそれに収まると思います。 –
ダウンロードモジュールに関する情報をありがとうございます。これは将来的に私にとって役に立ちます。 –
コードのサンプルをお送りください。 – MaieonBrix