سؤال

أفتح عناوين URL مع:

site = urllib2.urlopen('http://google.com')

وما أريد القيام به هو ربط نفس الطريقة مع وكيل حصلت في مكان ما يقول لي:

site = urllib2.urlopen('http://google.com', proxies={'http':'127.0.0.1'})

ولكن هذا لم يعمل أيضا.

أعرف Urllib2 لديه شيء مثل معالج وكيل، لكنني لا أستطيع أن أذكر هذه الوظيفة.

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

المحلول

proxy = urllib2.ProxyHandler({'http': '127.0.0.1'})
opener = urllib2.build_opener(proxy)
urllib2.install_opener(opener)
urllib2.urlopen('http://www.google.com')

نصائح أخرى

عليك تثبيت proxyhandler

urllib2.install_opener(
    urllib2.build_opener(
        urllib2.ProxyHandler({'http': '127.0.0.1'})
    )
)
urllib2.urlopen('http://www.google.com')

يمكنك ضبط الوكلاء باستخدام متغيرات البيئة.

import os
os.environ['http_proxy'] = '127.0.0.1'
os.environ['https_proxy'] = '127.0.0.1'

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

علي سبيل المثال:

proxy = urllib2.ProxyHandler({'http': '127.0.0.1'})
opener = urllib2.build_opener(proxy)
urllib2.install_opener(opener)
urllib2.urlopen('http://www.google.com')
# next line will fail (will not go through the proxy) (https)
urllib2.urlopen('https://www.google.com')

في حين أن

proxy = urllib2.ProxyHandler({
    'http': '127.0.0.1',
    'https': '127.0.0.1'
})
opener = urllib2.build_opener(proxy)
urllib2.install_opener(opener)
# this way both http and https requests go through the proxy
urllib2.urlopen('http://www.google.com')
urllib2.urlopen('https://www.google.com')

لاستخدام وكلاء النظام الافتراضي (على سبيل المثال من متغير بيئة HTTP_Support)، يعمل ما يلي للطلب الحالي (دون تثبيته في Urllib2 عالميا):

url = 'http://www.example.com/'
proxy = urllib2.ProxyHandler()
opener = urllib2.build_opener(proxy)
in_ = opener.open(url)
in_.read()

بالإضافة إلى الإجابة المقبولة: أعطاني برنامجي خطأ

File "c:\Python23\lib\urllib2.py", line 580, in proxy_open
    if '@' in host:
TypeError: iterable argument required

كان الحل لإضافة HTTP: // أمام السلسلة الوكيل:

proxy = urllib2.ProxyHandler({'http': 'http://proxy.xy.z:8080'})
opener = urllib2.build_opener(proxy)
urllib2.install_opener(opener)
urllib2.urlopen('http://www.google.com')

يمكن للمرء أيضا استخدام الطلبات إذا أرادنا الوصول إلى صفحة ويب باستخدام الوكلاء. بيثون 3 رمز:

>>> import requests
>>> url = 'http://www.google.com'
>>> proxy = '169.50.87.252:80'
>>> requests.get(url, proxies={"http":proxy})
<Response [200]>

يمكن أيضا إضافة أكثر من وكلاء واحد.

>>> proxy1 = '169.50.87.252:80'
>>> proxy2 = '89.34.97.132:8080'
>>> requests.get(url, proxies={"http":proxy1,"http":proxy2})
<Response [200]>

بالإضافة إلى ذلك، قم بتعيين الوكيل لجلسة سطر الأوامر افتح سطر أوامر حيث قد ترغب في تشغيل البرنامج النصي الخاص بك

netsh winhttp set proxy YourProxySERVER:yourProxyPORT

قم بتشغيل البرنامج النصي الخاص بك في تلك المحطة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top