2012-01-02 12 views
38

के साथ किया जा सकता है क्या node.js प्रॉक्सी को पहचानने के लिए सेटअप किया जा सकता है (उदाहरण के लिए फिडलर की तरह) और सभी क्लाइंटरवेस्ट प्रॉक्सी के माध्यम से रूट करें?क्या प्रॉक्सी (जैसे फिडलर) का उपयोग नोड.जेएस के क्लाइंटरक्वेट

मैं विंडोज़ पर नोड का उपयोग कर रहा हूं और http अनुरोधों को डीबग करना चाहता हूं जैसे कि मैं ब्राउज़र में जावास्क्रिप्ट के लिए फिडलर का उपयोग करता हूं।

बस स्पष्ट हो, मैं एक प्रॉक्सी बनाने और सर्वर द्वारा प्राप्त प्रॉक्सी अनुरोध बनाने की कोशिश नहीं कर रहा हूं। मैं प्रॉक्सी के माध्यम से http.request() द्वारा किए गए अनुरोधों को रूट करना चाहता हूं। मैं फिडलर का उपयोग अनुरोध और प्रतिक्रिया दोनों का निरीक्षण करने के लिए करना चाहता हूं जैसे कि मैं ब्राउज़र में अनुरोध कर रहा था।

उत्तर

23
मार्ग के लिए

अपने ग्राहक-अनुरोध, (पूर्व .: सिर्फ इससे पहले कि आप http.request बनाने) इस तरह अपने विकल्पों को-वस्तु को बदल:

options.path = 'http://' + options.host + ':' + options.port + options.path; 
options.headers.host = options.host; 
options.host = '127.0.0.1'; 
options.port = 8888; 

myReq = http.request(options, function (result) { 
    ... 
}); 
+0

यह मेरे लिए काम नहीं किया: { "कोड": "ETIMEDOUT", "errno": "ETIMEDOUT अनुरोध 'त्रुटि' घटना के बाद त्रुटि वस्तु, {" त्रुटि "के साथ शुरू हो रहा "," syscall ":" कनेक्ट "}} अनुरोध पर कि इस संवर्धन के बिना कनेक्ट किया गया था। – Drew

+1

@ ड्रू आमतौर पर इसका मतलब है कि आपके फ़ायरवॉल ने लूपबैक कनेक्शन को अवरुद्ध कर दिया है। – EricLaw

+0

@ ड्रू। यह भी हो सकता है क्योंकि आपकी फिडलर कॉन्फ़िगरेशन 8888 – Naraen

4

मेरे अपने प्रश्न का उत्तर देना: https://github.com/joyent/node/issues/1514जवाब नहीं है के अनुसार, लेकिन आप request मॉड्यूल, http://search.npmjs.org/#/request, जो समर्थन प्रॉक्सी करता है का उपयोग कर सकते हैं। Fiddler के माध्यम से

6

आप नोड से बाहर जाने वाले reqeusts montior चाहते हैं आप request मॉड्यूल

उपयोग कर सकते हैं और सिर्फ इतना है कि

request.post('http://204.145.74.56:3003/test', { 
headers :{ 'content-type' : 'application/octet-stream'}, 
'body' : buf , 
proxy: 'http://127.0.0.1:8888' 
}, function() { 
    //callback 
}); 
जैसे विकल्प में प्रॉक्सी गुण सेट,

8888 फिडलर का डिफ़ॉल्ट पोर्ट है।

46

मुझे निम्न निफ्टी होने का पता चलता है। request मॉड्यूल विंडोज पर्यावरण चर से प्रॉक्सी जानकारी पढ़ता है।

विंडोज कमांड प्रॉम्प्ट में निम्न टाइपिंग, इसे खोल के जीवनकाल के लिए सेट करेगा। आपको बस इस शेल से अपना नोड ऐप चलाने की ज़रूरत है।

set https_proxy=http://127.0.0.1:8888 
set http_proxy=http://127.0.0.1:8888 
set NODE_TLS_REJECT_UNAUTHORIZED=0 
+2

ग्रेट सॉल्यूशन के बजाय एक अलग पोर्ट पर सुन रहा है! मुझे पसंद है कि इसे संशोधित कोड की आवश्यकता नहीं है। – Sam

+2

बैश खोल का उपयोग करके, 'निर्यात' के लिए' सेट' स्वैप करें और यह काम करेगा। – mwotton

+0

कुछ कारणों से सेट करें NODE_TLS_REJECT_UNAUTHORIZED = 1 काम करता है – Chookoos

4
process.env.https_proxy = "http://127.0.0.1:8888"; 
process.env.http_proxy = "http://127.0.0.1:8888"; 
process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0"; 
+0

यदि ब्राउज़र चल रहा है तो एक ब्राउज़र प्रॉक्सी के रूप में उपयोग करेगा, लेकिन यदि यह नहीं चल रहा है। ब्राउज़र का अनुरोध किसी भी मामले में काम करता है। Node.js की अनुरोध लाइब्रेरी का उपयोग करके मैं वही व्यवहार कैसे प्राप्त करूं? – user1738579

संबंधित मुद्दे