সাধারণ পাই / পোস্টের অনুরোধটি পাইথন 3 এ ব্লক করা হয়েছে তবে পাইথন 2 এ নয়


19

আমি পাইথন 3 এ একটি সাধারণ ওয়েব স্ক্র্যাপারে কাজ করছি তবে যখন আমি একটি গেট বা কোনও পোস্টের অনুরোধ প্রেরণ করি তখন প্রতিক্রিয়া 403 p পাইথন 2 তে যদিও ঠিক কাজ করে। আমি উভয় সংস্করণে অনুরোধ গ্রন্থাগারগুলির একই সংস্করণটি ব্যবহার করছি। আমি চেষ্টা করেছি Verify=False/Trueকিন্তু উভয় সংস্করণের পার্থক্য রয়ে গেছে।

অনুরোধগুলি = 2.22.0

সার্টিফি = 2019.9.11

from requests import get
url = 'https://www.gamestop.com/'
header = {
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Accept-Encoding': 'gzip, deflate, br',
    'Accept-Language': 'en-US,en;q=0.5',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:56.0) Gecko/20100101 Firefox/56.0',
    'DNT': '1',
    'Upgrade-Insecure-Requests': '1',
    'Connection': 'keep-alive',
    'Host': 'www.gamestop.com'
}
res = get(url, headers=header, verify=False).status_code
print(res)
# 403 when using python 3.7.4
# 200 when using python 2.7.16

@ ব্লহসিং দ্বারা সম্পাদনা করুন:

নীচের তালিকাটিতে পাইথন সংস্করণগুলি নির্দিষ্ট করে এবং কোন সংস্করণ মন্তব্য অনুসারে ব্যর্থ হয় তা ট্র্যাক করে। এখন পর্যন্ত সাফল্য এবং ব্যর্থতা প্ল্যাটফর্মগুলি জুড়ে প্রতিটি নির্দিষ্ট পাইথন সংস্করণের জন্য সামঞ্জস্যপূর্ণ।

ফলাফল তৈরি করতে ব্যবহৃত নির্দিষ্ট পাইথন সংস্করণ সহ আপনার নিজের ফলাফলের সাথে প্রশ্নের এই বিভাগটি নির্দ্বিধায় সম্পাদনা করুন।

2.7.14 works (blhsing)
2.7.16 works (repl.it)
3.6.5 works (blhsing)
3.6.8 fails (Reinderien and blhsing)
3.7.3 works (wim and blhsing)
3.7.4 fails (repl.it and blhsing)
3.8.0 fails (OP)

Repl.it এ ডেমো: পাইথন 2.7.16 এবং পাইথন 3.7.4


এটি লক্ষ করা উচিত যে এটি পাইথন 3.6 তে কাজ করে তবে 3.7 এ নয়।
blhcing

আমি ফায়ারফক্সেও "অ্যাক্সেস অস্বীকৃত" পেয়েছি - পাইথন ৩.7-তে কয়েকটি রান কোডের পরে। পাইথন চালানোর আগে আমি ফায়ারফক্সে চেষ্টা করি নি - পাইথন কোড ব্যবহার করার পরে আমি ব্লক হয়েছি বা অন্য কারণে এটি ব্লক করে - ভুল আইপি, ভুল দেশ, সার্ভারে সমস্যা।
furas

1
@ ব্লুসিংহ হ্যাঁ যে অদ্ভুত, আমি অনুমান করি যে আমি তখন 3.6 সাথে যাব, নোটের জন্য THX
EDM

2
এটা অদ্ভুত. ওয়্যারশার্ক ব্যবহার করুন এবং পাইথন 3.6 এবং 3.7 দ্বারা প্রেরিত অনুরোধগুলির সাথে তুলনা করুন। সার্ভারটি বাছাই করছে এমন কিছু পার্থক্য আছে।
গর্ডনএইচজে ই

1
তাহলে এটি সম্ভবত বিভিন্ন ওপেনসেল ( ssl.OPENSSL_VERSION) এর কারণে । তিরস্কার করার জন্য আপনার সমস্ত শিরোনামের দরকার নেই, কেবল একটি সাধারণ পুরানো গেইট (ইউআরএল) এটি করবে।
উইম

উত্তর:


9

এটি urlib3 দ্বারা ছুঁড়ে দেওয়া ব্যতিক্রম:

/home/runner/.local/share/virtualenvs/python3/lib/python3.7/site-packages/urllib3/connectionpool.py split004: অনিরাপদ রেকর্ডস সতর্কতা: যাচাই করা হয়নি HTTPS অনুরোধ করা হচ্ছে শংসাপত্র যাচাইয়ের যোগ করার জন্য দৃ .়ভাবে পরামর্শ দেওয়া হচ্ছে। দেখুন: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl- সতর্কতা সুরক্ষা সুরক্ষা, ওয়ার্নিং,

সর্বশেষ প্রকাশিত নোট অনুসারে , বিভাগ 1.25.5 (2019-09-19) :

পাইথন <3.7.4 এবং ওপেনএসএসএল 1.1.1+ প্রভাবিত করে বিপিও-374৪৮ for এর জন্য প্রশমন যুক্ত করুন যা cert_reqs = CERT_NONE ব্যবহার করার সময় শংসাপত্র যাচাইকরণ সক্ষম করেছে। (সংখ্যা # 1682 )

আপনি বিষয়টি গিথুবকে অনুসরণ করতে পারেন , এটি বন্ধ হয়ে গেছে।

TLDR

গিথুবের ব্যবহারকারী @ সেথমেলারসন এই ত্রুটিটি urllib3 এ খুঁজে পেয়েছেন :

create_urllib3_context ():

    # Enable post-handshake authentication for TLS 1.3, see GH #1634. PHA is
    # necessary for conditional client cert authentication with TLS 1.3.
    # The attribute is None for OpenSSL <= 1.1.0 or does not exist in older
    # versions of Python.
    if getattr(context, "post_handshake_auth", None) is not None:
        context.post_handshake_auth = True

এই মানটি সেট Trueকরা অক্ষম হওয়ার পরিবর্তে সার্ভার শংসাপত্রগুলির যাচাইকরণ সক্ষম করবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.