كيفية تحديد مصادقة الوكيل على الثعبان http الاتصال ؟

StackOverflow https://stackoverflow.com/questions/34079

  •  09-06-2019
  •  | 
  •  

سؤال

ما هي أفضل طريقة لتحديد الوكيل مع اسم المستخدم وكلمة المرور على اتصال http في الثعبان ؟

هل كانت مفيدة؟

المحلول

استخدام هذا:

import requests

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

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

print(r.content)

أعتقد أنها أبسط بكثير من استخدام urllib.أنا لا أفهم لماذا الناس يحبون استخدام urllib كثيرا.

نصائح أخرى

يعمل هذا بالنسبة لي:

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()

إعداد بيئة فار اسمه http_ proxy مثل هذا: http://username:password@proxy_url:port

أفضل طريقة للذهاب من خلال وكيل يتطلب مصادقة باستخدام urllib2 لبناء عنوان url مخصص فتاحة, ثم استخدام هذا لجعل جميع الطلبات تريد أن تذهب من خلال الوكيل.ملاحظة على وجه الخصوص ، ربما كنت لا ترغب في تضمين الوكيل كلمة في عنوان url أو الثعبان رمز المصدر (إلا إذا كان مجرد الإختراق السريع).

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

في عالم أكثر تعقيدا البرنامج ، يمكنك فصل هذه المكونات على النحو المناسب (على سبيل المثال فقط باستخدام كلمة مرور واحدة مدير لعمر التطبيق).الثعبان الوثائق المزيد من الأمثلة حول كيفية القيام الأشياء المعقدة مع urllib2 أيضا أنك قد تجد من المفيد.

أو إذا كنت ترغب في تثبيته ، بحيث أنه يستخدم دائما مع urllib2.urlopen (لذلك أنت لا تحتاج إلى أن نضع في إشارة إلى المباراة الافتتاحية حول):

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()

هنا هو طريقة استخدام 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/')
"""
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top