2012-01-14 22 views
5

मैं पाइथन में प्रॉक्सी सर्वर के माध्यम से वेब तक पहुंचने का प्रयास कर रहा हूं। मैं अनुरोध पुस्तकालय का उपयोग कर रहा हूं और मुझे अपनी प्रॉक्सी को प्रमाणीकृत करने में कोई समस्या है क्योंकि मैं जिस प्रॉक्सी का उपयोग कर रहा हूं उसे एक पासवर्ड की आवश्यकता है।अनुरोध के साथ पाइथन प्रॉक्सी त्रुटि लाइब्रेरी

proxyDict = { 
      'http' : 'username:[email protected]', 
      'https' : 'username:[email protected]' 
     } 
r = requests.get("http://www.google.com", proxies=proxyDict) 

मैं निम्न त्रुटि हो रही है:

Traceback (most recent call last): 
File "<pyshell#13>", line 1, in <module> 
r = requests.get("http://www.google.com", proxies=proxyDict) 
File "C:\Python27\lib\site-packages\requests\api.py", line 78, in get 
:param url: URL for the new :class:`Request` object. 
File "C:\Python27\lib\site-packages\requests\api.py", line 65, in request 
"""Sends a POST request. Returns :class:`Response` object. 
File "C:\Python27\lib\site-packages\requests\sessions.py", line 187, in request 
def head(self, url, **kwargs): 
File "C:\Python27\lib\site-packages\requests\models.py", line 407, in send 
""" 
File "C:\Python27\lib\site-packages\requests\packages\urllib3\poolmanager.py", line  127, in proxy_from_url 
File "C:\Python27\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 521, in connection_from_url 
File "C:\Python27\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 497, in get_host 
ValueError: invalid literal for int() with base 10: '[email protected]' 

मैं यह कैसे हल करते हैं?

आपकी मदद के लिए अग्रिम धन्यवाद।

+1

यह अच्छे संस्कार के रूप में सही – Sheena

उत्तर

15

आपको proxyDict से एम्बेड किए गए उपयोगकर्ता नाम और पासवर्ड को हटा देना चाहिए, और इसके बजाय auth पैरामीटर का उपयोग करना चाहिए।

import requests 
from requests.auth import HTTPProxyAuth 

proxyDict = { 
      'http' : '77.75.105.165', 
      'https' : '77.75.105.165' 
     } 
auth = HTTPProxyAuth('username', 'mypassword') 

r = requests.get("http://www.google.com", proxies=proxyDict, auth=auth) 
+0

धन्यवाद सही उत्तरों को चिह्नित करने, मुझे लगता है कि कोशिश की और यह त्रुटि हल लेकिन यह अभी भी प्रॉक्सी से कनेक्ट नहीं है। जब मैं लौटा हेडर (आरहेडर्स) देखता हूं, उनमें से एक 'प्रॉक्सी-कनेक्शन' है: 'क्लोज़', जिसका अर्थ यह है कि प्रॉक्सी से कनेक्ट करने में बहुत लंबा समय लगता है, क्या पहले प्रमाणित करने का कोई तरीका है किसी भी यूआरएल का अनुरोध? –

+0

@ मार्ककॉलियर, कृपया संपादित उत्तर से कोड आज़माएं। यह पहली संस्करण में त्रुटि थी। जोड़ा गया 'HTTPProxyAuth', अब यह काम करना चाहिए। – reclosedev

+0

requests.auth आयात HTTPProxyAuth Traceback (सबसे हाल कॉल पिछले) से: नाम HTTPProxyAuth –

0

आप इसके लिए urllib लाइब्रेरी का उपयोग कर सकते हैं।

from urllib import request 
request.urlopen("your URL", proxies=urllib.getproxies()) 
2

मैं विंडोज पर एक ऐसी ही समस्या काम करने के लिए requests प्राप्त करने के लिए एक ही रास्ता होने किया गया है और पाया वातावरण चर के रूप में प्रॉक्सी सेट करने के लिए इससे पहले कि मैं अजगर शुरू कर दिया था। आप इस कुछ इस तरह किया जाएगा के लिए:

set HTTP_PROXY=http://77.75.105.165 
set HTTPS_PROXY=https://77.75.105.165 

तुम भी जांच करना चाह सकते कोई विशेष आवश्यकता बंदरगाह है, और यदि ऐसा है तो यूआरएल के बाद यह सेट है। उदाहरण के लिए, यदि पोर्ट 8443 है तो कार्य करें:

set HTTP_PROXY=http://77.75.105.165:8443 
set HTTPS_PROXY=https://77.75.105.165:8443 
+0

यह भी देखें https://stackoverflow.com/questions/5971312/how-to-set-environment-variables-in-python – raphael

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