Closed kxx129 closed 8 years ago
requestモジュールをのぞいてみましたが、HTTP_PROXY
環境変数が指定されていればそれを使用するみたいです。
ちょっと試してみました。
process.env.HTTP_PROXY = 'http://プロキシサーバーのアドレス:ポート/';
var client = require('cheerio-httpcli');
client.fetch('http://www.ugtop.com/spill.shtml', function (err, $, res, body) {
console.log($('table').eq(1).find('tr').eq(3).find('td').eq(1).text().trim());
});
REMOTE_ADDR
がプロキシサーバーのアドレスになっていたのでこれでいけそうな気がしますがどうでしょうか。
process.env.HTTP_PROXY = 'http://プロキシサーバーのアドレス:ポート/'; なるほど。大変助かりました。 ご教示を頂き、ありがとうございます。
上記の方法でプロキシがうまく動作しません。
firebase cloud function での basic認証付きのproxyについて
process.env.HTTP_PROXY = `http://${username}:${password}@${host}:${port}\
//or
process.env.HTTP_PROXY = `http://${host}:${port}`
client.set('headers', {
Authorization: 'Basic ' + Buffer.from(`${username}:${password}`).toString('base64')
})
いづれの方法でもbasic認証がかけられているプロキシからアクセスすることができませんでした。 環境はfirebase function (emulator or production) です。 process.env.HTTPS_PROXY でも試しましたが動作しませんでした。
process.envを直接いじれない環境なのかもしれません。その場合の解決策などありましたら教えていただけますと幸いです。
調べてみた感じでは、process.env.HTTP_PROXY = http://${username}:${password}@${host}:${port}
で設定は正しそうですが、いくつか確認点があります。
ご返信ありがとうございます。
再度確認したところ正常に動作しておりました。
process.env.HTTP_PROXY = http://${username}:${password}@${host}:${port}
ESOCKETTIMEDOUTエラーが出ていたのですが、最初にhttp抜きのproxyを登録したので、以前のprocess.envのインスタンスが残ってた?せいかもしれません。 わざわざ調べていただきありがとうございます。助かりました。
お疲れ様です、ゆです。 cheerio-httpcliモジュールのご提供、ありがとうございます。とても便利なモジュールと思ってます。 ご提供して頂いたcheerio-httpcliモジュールを使って、ウェブスクレイピングツールを作ると検討しています。 プロキシを使いたいんですが、何かいい方法がありますでしょうか。ご教示いただければ幸いと思います。 ちなみに、ベースモジュールのrequestの方はいくつ方法があるらしいです。 例えば: http://stackoverflow.com/questions/3862813/how-can-i-use-an-http-proxy-with-node-js-http-client https://github.com/request/request/issues/894 お手数済みませんがよろしくお願いいたします。