2016-12-17 27 views
1

我想強制我的節點js應用程序通過特定的接口或IP地址進行下載。與捲曲節點js將請求綁定到不同的接口或IP地址

wget --bind-address=192.168.21.21 http://example.com 

或類似:

在Linux中使用wget的我可以像這樣做

curl --interface 192.168.21.21 --ipv4 http://example.com 

我目前使用的request包,但我看不到類似的選擇,如果必須的話,可以改變。

如何將我的下載綁定到具有節點js請求的IP地址或接口?

編輯:我已經看到了評論中的問題,但他們似乎並沒有解決我如何在請求中這樣做的問題,並且我沒有使用expressjs,因爲我的應用程序沒有服務器/ web存在。

+1

我相信你指的是這個SO問題http://stackoverflow.com/questions/9986220/bind-expressjs-to-a-specific-ip-address –

+1

可能的重複[如何指定一個網絡接口時net請求從Node.js?](http://stackoverflow.com/questions/13602066/how-to-specify-a-network-interface-when-making-net-requests-from-node-js) – Tomalak

+1

請參閱我的編輯,我正在尋找與node.js請求最好的解決方案。如果我的問題是由巴里迪克提到的那個回答的,我不清楚如何實施它。 – user1464409

回答

0

我有相同的要求,事實證明這很容易做到。只需使用localAddress選項request(這是相同的選項作爲http模塊):

(async() => { 

    let request = require('request-promise-native'); // (a promisified version of request module) 

    // This prints your machine's IP 
    console.log(await request({ uri: 'https://api.ipify.org' })); 

    // This prints '***.***.***.***' 
    console.log(await request({ uri: 'https://api.ipify.org', localAddress: '***.***.***.***' })); 

})(); 

(更換***.***.***.***與新的靜態IP)

注意,你當然需要事先設置建立您的靜態IP並在您的操作系統中進行配置。在情況下,它可以幫助人,與Ubuntu 16.04你只添加到您的/etc/network/interfaces文件的末尾:

auto ens3:0 
iface ens3:0 inet static 
    address ***.***.***.*** 
    netmask 255.255.254.0 

(同樣,你的IP取代***.***.***.***)的更多細節here