Nasıl bir piton http bağlantısı için kimliği doğrulanmış bir proxy belirtmek için?

oy
46

Python bir http bağlantısı için kullanıcı adı ve şifre ile bir proxy belirlemek için en iyi yolu nedir?

Oluştur 29/08/2008 saat 07:55
kaynak kullanıcı
Diğer dillerde...                            


6 cevaplar

oy
57

Bu benim için çalışıyor:

import urllib2

proxy = urllib2.ProxyHandler({'http': 'http://
username:password@proxyurl: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()
Cevap 29/08/2008 saat 08:30
kaynak kullanıcı

oy
9

Kimlik doğrulama gerektiren bir proxy üzerinden sahip olunan en iyi yolu kullanıyor urllib2 sonra proxy üzerinden gitmek isteyen tüm istekleri yapmak için kullanıyor, özel bir url açacağı inşa etmek. Özellikle Not, muhtemelen (bu sadece çabuk kesmek değilse) url veya piton kaynak kodunda vekil şifresini gömmek istemiyoruz.

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..."

Daha karmaşık bir programda, uygun (örneğin, sadece bir uygulama ömrü boyunca bir şifre yöneticisi kullanarak) olarak bu bileşenleri üzerinden ayırabilmektedir. Piton belgelerine sahiptir urllib2 ile karmaşık şeyler yapmak için nasıl daha fazla örnek de yararlı olabilir.

Cevap 29/08/2008 saat 23:52
kaynak kullanıcı

oy
3

Eğer her zaman urllib2.urlopen ile kullanılacak şekilde, bunu yüklemek istiyorsanız Veya (böylece etrafında açacağı bir başvuru tutmak gerekmez):

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()
Cevap 26/09/2008 saat 23:17
kaynak kullanıcı

oy
15

Bir adlandırılmış çevre Var Ayar http_proxy : Böyle http: // kullanıcıadı: şifre @ proxy_url: port

Cevap 15/10/2010 saat 15:06
kaynak kullanıcı

oy
1

İşte yöntem kullanımı urllib olduğunu

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/')
"""
Cevap 25/03/2016 saat 08:37
kaynak kullanıcı

oy
3

Bunu kullan:

import requests

proxies = {"http":"http://username:password@proxy_ip:proxy_port"}

r = requests.get("http://www.example.com/", proxies=proxies)

print(r.content)

Ben kullanarak daha basit düşünüyorum urllib. Insanlar kullanarak seviyorum neden anlamıyorum urllibçok değil.

Cevap 29/01/2017 saat 11:19
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more