2015-05-30 7 views
7

मैं जानता हूँ कि अगर यह संभव है एसटीडी lib वर्तमान पते के बारे में कुछ भी नहीं बताता है के रूप में इस्तेमाल किया जा रहा न:HTTP अनुरोध के लिए कौन से आईपी का उपयोग करने के लिए सेट करें?

http://golang.org/pkg/net/http/

resp, err := http.Get("http://example.com/") 
if err != nil { 
    // handle error 
} 
defer resp.Body.Close() 
body, err := ioutil.ReadAll(resp.Body) 

मैं क्या करने की कोशिश कर रहा है कि के लिए स्रोत का पता सेट किया गया है http अनुरोध, क्यों? क्योंकि मैं उस तरह के सामान के लिए अपने प्राथमिक आईपी पते का उपयोग नहीं करना चाहता ...

+0

क्या आप प्रॉक्सी (या प्रॉक्सी स्वयं) जैसी कुछ चाहते हैं? – felipsmartins

+0

आपके आईपी पते को खराब करने के लिए बहुत सारी सेवाएं हैं (उदा। प्रॉक्सी, वीपीएन, टोर)। मुझे संदेह है कि आपको अपने आईपी को खराब करने के बजाए ऐसा कुछ करने की ज़रूरत होगी, अन्यथा आप पेज को कभी नहीं देख पाएंगे क्योंकि इसे सेवा दी जाएगी और आईपी एड्रेस जो आपका नहीं है। –

+2

मेरे पास मेरे सर्वर पर कई सार्वजनिक आईप हैं, मैं जो करना चाहता हूं वह है कि वेब अनुरोधों के लिए किस का उपयोग करना है, उदाहरण के लिए: http://commandliners.com/2010/03/downloading-a-file-with -वेट-थ्रू-ए-विशिष्ट-इंटरफ़ेस/लेकिन मैं बाहरी बाइनरी पर भरोसा नहीं करना चाहता ... न तो मैं अपना आईपी पता खराब करना चाहता हूं ... – kainlite

उत्तर

17

आप ग्राहक के परिवहन में एक कस्टम डायलर सेट कर सकते हैं।

// Create a transport like http.DefaultTransport, but with a specified localAddr 
transport := &http.Transport{ 
    Proxy: http.ProxyFromEnvironment, 
    DialContext: (&net.Dialer{ 
     Timeout: 30 * time.Second, 
     KeepAlive: 30 * time.Second, 
     LocalAddr: localAddr, 
     DualStack: true, 
    }).DialContext, 
    MaxIdleConns:   100, 
    IdleConnTimeout:  90 * time.Second, 
    TLSHandshakeTimeout: 10 * time.Second, 
    ExpectContinueTimeout: 1 * time.Second, 
} 

client := &http.Client{ 
    Transport: transport, 
} 
+0

जो एक आकर्षण की तरह काम करता है, यह परिणामस्वरूप कोड है जो मेरे विकास मशीन पर एक वीपीएन के साथ एक प्रयोग के रूप में है ... http://play.golang.org/p/Bh8gfggLK- go-curl भी आसान के साथ काम करता है। सैटेलाइट (curl.OPT_INTERFACE, "10.9.8.2") .. धन्यवाद :) – kainlite

+0

कृपया ठीक करें और httpClient यह होना चाहिए और http.Client, बस एक लापता बिंदु है। – kainlite

+0

@kainlite क्या आप वाकई काम करते हैं? मुझे ResolveTCPAddr से एक त्रुटि मिल रही है (आप इसे अनदेखा कर रहे हैं): टीसीपी डायल करें 10.9.8.2:8080->54.221.194.87:80: बाइंड: अनुरोधित पता असाइन नहीं कर सकता है (मुझे इसके लिए एक पोर्ट जोड़ना पड़ा था पिछला "पोर्ट नहीं मिला" त्रुटि)। – weberc2

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

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