2011-01-31 20 views
5

Tôi cố gắng để truy cập vào một trang web từ phía sau tường lửa doanh nghiệp sử dụng dưới đây: -trang web mở sử dụng urllib2 từ phía sau bức tường lửa của công ty - 11004 getaddrinfo thất bại

password_mgr = urllib2.HTTPPasswordMgrWithDefaultRealm() 
password_mgr.add_password(None, url, username, password) 
auth_handler = urllib2.HTTPBasicAuthHandler(password_mgr) 
opener = urllib2.build_opener(auth_handler) 
urllib2.install_opener(opener) 
conn = urllib2.urlopen('http://python.org') 

Bắt lỗi

URLError: <urlopen error [Errno 11004] getaddrinfo failed> 

Tôi đã thử với xử lý khác nhau (đã thử ProxyHandler cũng theo cách hơi khác), nhưng dường như không hoạt động.

Bất kỳ manh mối nào có thể là nguyên nhân gây ra lỗi và bất kỳ cách nào khác nhau để cung cấp thông tin đăng nhập và làm cho thông tin đó hoạt động?

+0

Những loại auth không proxy muốn? Nếu nó yêu cầu 'Proxy-Authenticate: NTLM' thì nó không thể làm cho nó hoạt động với Python, tôi xin lỗi để nói. –

Trả lời

5

Nếu bạn đang sử dụng Proxy và proxy đó có Tên người dùng và Mật khẩu (mà nhiều proxy của công ty có), bạn cần đặt trình xử lý proxy bằng urllib2.

proxy_url = 'http://' + proxy_user + ':' + proxy_password + '@' + proxy_ip 
    proxy_support = urllib2.ProxyHandler({"http":proxy_url}) 
    opener = urllib2.build_opener(proxy_support,urllib2.HTTPHandler) 
    urllib2.install_opener(opener) 

HTTPBasicAuthHandler được sử dụng để cung cấp thông tin xác thực cho trang web bạn sẽ truy cập và không truy cập proxy. Đoạn mã trên có thể giúp bạn.

+0

Tôi đã thử điều này rồi, nhưng nó đã cho Http 401 Unauthorized là lỗi. Tôi nghi ngờ proxy công ty của tôi là NTLM và các phương pháp trên có thể không đủ. –

+0

Hãy thử với http://code.google.com/p/python-ntlm/ Ngoài ra hãy thử với gợi ý trong liên kết này, http://stackoverflow.com/questions/1481398/python-urllib2-https-and-proxy -ntlm-authentication/1793206 # 1793206 Nếu cả hai công việc này và urllib2 đều không, thì hãy gửi báo cáo với bug.python.org, nếu chưa có. Đoán, nó cần phải được làm việc. –

+0

python-ntlm không trợ giúp - đã đưa ra lỗi getaddinfo giống nhau. Sẽ thử pycurl. Cảm ơn rất nhiều cho các con trỏ. –

4

Trên Windows, tôi quan sát thấy con trăn đó sử dụng cài đặt IE Internet Options-> LAN Settings. Vì vậy, ngay cả khi chúng tôi sử dụng urllib2 để cài đặt công cụ mở và chỉ định proxy_url, nó sẽ tiếp tục sử dụng cài đặt IE.

Nó hoạt động tốt cuối cùng, khi tôi xuất khẩu một biến hệ thống:

http_proxy=http://userid:[email protected]:port 
+1

gọi tôi là câm nhưng xuất khẩu ở đâu và như thế nào? Bạn đã chạy lệnh này ở dòng lệnh chưa? Nếu vậy, tôi giả sử sử dụng 'set'? – jamiet

Các vấn đề liên quan