Cách tốt nhất để chỉ định proxy với tên người dùng và mật khẩu cho kết nối http trong python là gì?Cách chỉ định proxy được xác thực cho kết nối http python?
Trả lời
này làm việc cho tôi:
import urllib2
proxy = urllib2.ProxyHandler({'http': 'http://
username:[email protected]:proxyport'})
auth = urllib2.HTTPBasicAuthHandler()
opener = urllib2.build_opener(proxy, auth, urllib2.HTTPHandler)
urllib2.install_opener(opener)
conn = urllib2.urlopen('http://python.org')
return_str = conn.read()
Cách tốt nhất để trải qua một proxy yêu cầu xác thực được sử dụng urllib2 để xây dựng một cái mở url tùy chỉnh, sau đó sử dụng đó để làm cho tất cả các yêu cầu mà bạn muốn đi qua proxy. Lưu ý đặc biệt, bạn có thể không muốn nhúng mật khẩu proxy trong url hoặc mã nguồn python (trừ khi nó chỉ là một hack nhanh).
import urllib2
def get_proxy_opener(proxyurl, proxyuser, proxypass, proxyscheme="http"):
password_mgr = urllib2.HTTPPasswordMgrWithDefaultRealm()
password_mgr.add_password(None, proxyurl, proxyuser, proxypass)
proxy_handler = urllib2.ProxyHandler({proxyscheme: proxyurl})
proxy_auth_handler = urllib2.ProxyBasicAuthHandler(password_mgr)
return urllib2.build_opener(proxy_handler, proxy_auth_handler)
if __name__ == "__main__":
import sys
if len(sys.argv) > 4:
url_opener = get_proxy_opener(*sys.argv[1:4])
for url in sys.argv[4:]:
print url_opener.open(url).headers
else:
print "Usage:", sys.argv[0], "proxy user pass fetchurls..."
Trong một chương trình phức tạp hơn, bạn có thể tách riêng các thành phần này cho phù hợp (ví dụ: chỉ sử dụng một trình quản lý mật khẩu trong suốt thời gian đăng ký). Tài liệu python có more examples on how to do complex things with urllib2 mà bạn cũng có thể thấy hữu ích.
Hoặc nếu bạn muốn cài đặt nó, để nó luôn được sử dụng với urllib2.urlopen (do đó bạn không cần phải giữ một tham chiếu đến mở xung quanh):
import urllib2
url = 'www.proxyurl.com'
username = 'user'
password = 'pass'
password_mgr = urllib2.HTTPPasswordMgrWithDefaultRealm()
# None, with the "WithDefaultRealm" password manager means
# that the user/pass will be used for any realm (where
# there isn't a more specific match).
password_mgr.add_password(None, url, username, password)
auth_handler = urllib2.HTTPBasicAuthHandler(password_mgr)
opener = urllib2.build_opener(auth_handler)
urllib2.install_opener(opener)
print urllib2.urlopen("http://www.example.com/folder/page.html").read()
Thiết lập một var môi trường tên http_proxy như thế này: http: // username: password @ proxy_url: cổng
Bây giờ, đó là một câu trả lời rõ ràng. –
Nhưng không thực sự trả lời câu trả lời. – Bouncner
@Bouncner Trả lời câu hỏi, chứ không phải trả lời. Và nó không trả lời cả. –
Dưới đây là việc sử dụng phương pháp urllib
import urllib.request
# set up authentication info
authinfo = urllib.request.HTTPBasicAuthHandler()
proxy_support = urllib.request.ProxyHandler({"http" : "http://ahad-haam:3128"})
# build a new opener that adds authentication and caching FTP handlers
opener = urllib.request.build_opener(proxy_support, authinfo,
urllib.request.CacheFTPHandler)
# install it
urllib.request.install_opener(opener)
f = urllib.request.urlopen('http://www.python.org/')
"""
Sử dụng này:
import requests
proxies = {"http":"http://username:[email protected]_ip:proxy_port"}
r = requests.get("http://www.example.com/", proxies=proxies)
print r.content
Tôi nghĩ đó là đơn giản hơn nhiều so với sử dụng urllib
. Tôi không hiểu tại sao mọi người lại thích sử dụng urllib
rất nhiều.
- 1. Xác thực proxy HTTP trong iOS 4.3
- 2. Proxy xác thực HTTP với Java
- 3. Làm cách nào để định cấu hình Emacs sau proxy HTTP được xác thực?
- 4. Cách kết nối máy chủ Ổ cắm qua proxy HTTP
- 5. nginx 1.2.0 - socket.io - HTTP/1.1 - Kết nối websocket proxy
- 6. Kết nối Facebook và xác thực cơ sở HTTP
- 7. Xác thực proxy Java
- 8. Sự khác nhau giữa kết nối và kết nối Proxy trong tiêu đề HTTP là gì?
- 9. Tự động thêm proxy cho tất cả các kết nối HTTP trong ruby
- 10. Tắt xác thực chứng chỉ SSL của kết nối HTTPS?
- 11. Proxy sẽ cache HTTP Responses khi xác thực được cung cấp?
- 12. Cách sử dụng proxy HTTP trong java
- 13. Cách kết nối với SQL Server qua máy chủ proxy
- 14. C# Kết nối thông qua Proxy
- 15. curl thông qua proxy đã xác thực và tài nguyên http đã xác thực
- 16. Thiết lập proxy cho máy khách HTTP
- 17. Thiết lập Proxy Apache với Xác thực
- 18. activemq http proxy
- 19. Kết nối HTTPS qua máy chủ proxy
- 20. CONNECT yêu cầu proxy HTTP chuyển tiếp qua kết nối SSL?
- 21. Kết nối HTTP Android
- 22. Xác thực HTTP REST - Cách thực hiện?
- 23. Tìm hiểu loại proxy (http, vớ 4/5) bằng Python?
- 24. lỗi WebProxy: Proxy Xác thực buộc
- 25. Cách nhận kết nối URL bằng proxy trong java?
- 26. Cách xác định kết nối đến từ máy cục bộ
- 27. AnkhSVN không thể kết nối Do Proxy
- 28. API RESTful: Kết hợp METHOD/HEADER nào chỉ được sử dụng cho xác thực
- 29. Làm cách nào để đặt Proxy HTTP (WebProxy) trên proxy dịch vụ phía máy khách WCF?
- 30. Gửi thư qua proxy http
urllib2.HTTPHandler được thêm theo mặc định (xem tài liệu urllib2). Có vẻ như nó là dư thừa để thêm nó khi mở công cụ mở. – HongboZhu
Và tại sao bạn sử dụng urllib2.HTTPBasicAuthHandler() nếu không có xác thực được tham gia? – HongboZhu
Thông thường proxy ở định dạng IP. Đó là giống như proxyurl, phải không? – User