স্ক্র্যাপিং: এসএসএল: http://en.wikedia.org এর জন্য CERTIFICATE_VERIFY_FAILED ত্রুটি


113

আমি 'পাইথনের সাথে ওয়েব স্ক্র্যাপিং' থেকে কোডটি অনুশীলন করছি এবং আমার এই শংসাপত্রের সমস্যাটি রয়েছে:

from urllib.request import urlopen 
from bs4 import BeautifulSoup 
import re

pages = set()
def getLinks(pageUrl):
    global pages
    html = urlopen("http://en.wikipedia.org"+pageUrl)
    bsObj = BeautifulSoup(html)
    for link in bsObj.findAll("a", href=re.compile("^(/wiki/)")):
        if 'href' in link.attrs:
            if link.attrs['href'] not in pages:
                #We have encountered a new page
                newPage = link.attrs['href'] 
                print(newPage) 
                pages.add(newPage) 
                getLinks(newPage)
getLinks("")

ত্রুটিটি হ'ল:

  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/urllib/request.py", line 1319, in do_open
    raise URLError(err)
urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1049)>

বিটিডব্লিউ, আমিও থেরাপির অনুশীলন করছিলাম, তবে সমস্যাটি পেতে থাকি: কমান্ড পাওয়া যায়নি: স্কেরাপি (আমি অনলাইনে সব ধরণের সমাধান চেষ্টা করেছিলাম তবে কিছুই কার্যকর হয়নি ... সত্যিই হতাশাব্যঞ্জক)


urllib.error.URLError: <urlenen ত্রুটি [এসএসএল: CERTIFICATE_VERIFY_FAILED] শংসাপত্র যাচাইকরণ ব্যর্থ হয়েছে: স্থানীয় ইস্যুকারী শংসাপত্র পেতে অক্ষম (_ssl.c: 1049)>
ক্যাথারিন

এবং ... দয়া করে আমাকে এই ত্রুটির পিছনে কারণটি বলুন, সত্যই জানতে চান ~~ ধন্যবাদ !!
ক্যাথরিন

4
আছে CERTIFICATE_VERIFY_FAILED: SSL এর উপর 529 বিদ্যমান প্রশ্ন , যা আউট করুন চিত্রে আপনার সমাধান তাহলে ঘনিষ্ঠ এই নকল হিসেবে।
smci


এবং আমি স্পষ্টভাবে মন্তব্য করতে চলেছি: আপনি কি এটি HTTP এর পরিবর্তে https দিয়ে অ্যাক্সেস করেছেন?
smci

উত্তর:


388

একসময় আমি এই সমস্যা নিয়ে হোঁচট খেয়েছি। আপনি যদি ম্যাকোস ব্যবহার করছেন তবে ম্যাকিনটোস এইচডি> অ্যাপ্লিকেশনগুলি> পাইথন 3.6 ফোল্ডার (অথবা আপনি যে পাইথনের যে কোনও সংস্করণ ব্যবহার করছেন)>> "ইনস্টল সার্টিফিকেটসটকম্যান্ড" ফাইলটিতে ডাবল ক্লিক করুন। : ডি


4
ওহ, আমার ম্যাকে এই ইনস্টিটিউট সার্টিফিকেট.কমের ফাইল নেই ... কেন জানি না
ক্যাথারিন

20
আপনি হোমব্রু ব্যবহার করে পাইথন ইনস্টল করলে সেই ফাইলটির অস্তিত্ব নেই। সমাধানটি এখানে: স্ট্যাকওভারফ্লো.com
a

4
কেউ দয়া করে এটিকে সমাধান করে এমন উত্তর হিসাবে চিহ্নিত করুন। আমি যখন এতটা আটকে ছিলাম তখন আপনি আমাকে এতটা সময় ও প্রচেষ্টা বাঁচিয়েছিলেন !!
দ্বিতীয় পুচালাকে

4
আমি কীভাবে এটি উইন্ডোজ 10 এর জন্য করতে পারি? এ জাতীয় কোনও ফাইল নেই।
আকাশ বসু

4
কিংবদন্তি উত্তর
নিকো

33

যাচাইকৃত এসএসএল ব্যবহার করতে আপনি এটি আপনার কোডে যুক্ত করতে পারেন:

import ssl
ssl._create_default_https_context = ssl._create_unverified_context

4
এটি ভাল কারণ কারণ আমাকে কোডের দুটি লাইন যুক্ত করার দরকার হলে কেন আমাকে সিস্টেম পরিবর্তন করতে হবে।
নাগরি

এই উত্তরে সম্ভবত উল্লেখ করা উচিত যে এই কোডটি স্ক্র্যাপ হওয়ার পরে ব্যবহারকারী ডেটা নিয়ে কী করবে তার উপর নির্ভর করে বিশাল সুরক্ষা উদ্বেগগুলি প্রবর্তন করতে পারে ..
মাইকেল আল্টফিল্ড

অবশ্যই আপনি যখন যাচাই করা শংসাপত্র ব্যবহার করবেন না তখন আপনার ঝুঁকির মধ্যে রয়েছে। এবং কোডের এই লাইনটি কেবলমাত্র ভাল যদি আপনি জানেন যে ডেটা উত্সটি কী এবং এটির ডিফল্ট হিসাবে সেটআপ করার জন্য উত্পাদন মোডের পক্ষে ভাল না। এই কোডটি অন্ততপক্ষে এই পরিস্থিতির জন্য বড় সুরক্ষা উদ্বেগ তৈরি করবে না এমন কিছু যাচাই না করা পৃষ্ঠাটি কীভাবে স্ক্র্যাপ করবেন তা প্রশ্ন।
র‌্যামবড

4
এটা চমত্কার ভাবে কাজ করেছে! ধন্যবাদ দোস্ত!
রডরিগো সার্জেডেলো

30

এটি সমাধান করার জন্য:

আপনাকে যা করতে হবে তা হ'ল পাইথন শংসাপত্রগুলি ইনস্টল করা! ম্যাকোজে একটি সাধারণ সমস্যা।

এই ফাইলগুলি খুলুন:

Install Certificates.command
Update Shell Profile.command

কেবল এই দুটি স্ক্রিপ্ট চালান এবং আপনার আর এই সমস্যাটি থাকবে না।

আশাকরি এটা সাহায্য করবে!


8
আমি আমার অ্যাপ্লিকেশন ডিয়ারে পাইথন ডিরেক্টরিটি দেখতে পাচ্ছি না .. আমি অ্যানাকোন্ডা ব্যবহার করছি এবং পাইথন ৩.6 এর জন্য একটি নতুন এনভিলি তৈরি করেছি যেহেতু আমার আগে পাইথন ২. installed ইনস্টল ছিল (যা সম্ভবত আমার অ্যাপ্লিকেশনস ডিয়ারে ফোল্ডার তৈরি করে নি!)। .. আমার ম্যাকের শংসাপত্রগুলি
কাই

4
এগুলি কোথা থেকে চালানোর কথা?
বাক্সেক্স

4
@ আজিম: উবুন্টুতে কেমন?
বেটি

17

এই টার্মিনাল কমান্ড:

open /Applications/Python\ 3.7/Install\ Certificates.command

এখানে পাওয়া গেছে: https://stackoverflow.com/a/57614113/6207266

আমার জন্য এটি সমাধান। আমার কনফিগার সাথে

pip install --upgrade certifi

কোন প্রভাব ছিল না।


16

নবীন ব্যবহারকারীদের জন্য, আপনি অ্যাপ্লিকেশন ফোল্ডারে যেতে পারেন এবং পাইথন ৩.7 ফোল্ডারটি প্রসারিত করতে পারেন। এখন প্রথমে শংসাপত্র ..com ম্যান্ড ইনস্টল করুন এবং তারপরে শেল প্রোফাইল ডটকম্যান্ড আপডেট করুন run

এখানে চিত্র বর্ণনা লিখুন


5

দুটি পদক্ষেপ আমার জন্য কাজ করেছে: - ম্যাকিনটোস এইচডি> অ্যাপ্লিকেশনগুলি> পাইথন 3.7 ফোল্ডার - "ইনস্টল সার্টিফিকেটস ডটকমন্ড" ক্লিক করুন


4

এই পোস্টটি একবার দেখুন, দেখে মনে হচ্ছে পাইথনের পরবর্তী সংস্করণগুলির জন্য, শংসাপত্রগুলি ইনস্টল করা নেই যা এই ত্রুটির কারণ বলে মনে হচ্ছে। শংসাপত্রের প্যাকেজ ইনস্টল করার জন্য আপনার নিম্নলিখিত কমান্ডটি চালাতে সক্ষম হবেন:/Applications/Python\ 3.6/Install\ Certificates.command

পোস্ট 1: urllib এবং "এসএসএল: CERTIFICATE_VERIFY_FAILED" ত্রুটি

পোস্ট 2: এয়ারব্রেক ত্রুটি: urlopen ত্রুটি [এসএসএল: CERTIFICATE_VERIFY_FAILED] শংসাপত্র যাচাইকরণ ব্যর্থ হয়েছে: স্থানীয় ইস্যুকারী শংসাপত্র পেতে অক্ষম


4

যে কেউ অ্যানাকোন্ডা ব্যবহার করছেন, আপনি certifiপ্যাকেজটি ইনস্টল করবেন , এখানে আরও দেখুন:

https://anaconda.org/anaconda/certifi

ইনস্টল করতে, আপনার টার্মিনালে এই লাইনটি টাইপ করুন:

conda install -c anaconda certifi

আমারও এই সমস্যা আছে। পরিবেশ তৈরি করতে পারে না। আমি সবেমাত্র মিনিকোন্ডা 3 (ম্যাকোএস) ইনস্টল করেছি এবং দেখছি সার্টিফি ইনস্টল করা হয়েছে ('কনডা তালিকা') ..
কাই


2

দুঃখের সাথে আমি সমস্যার সমাধান করিনি। তবে কোডগুলি কাজ করতে পরিচালিত হয়েছে (আমার প্রায় সব কোডেই এই প্রব্লেম বিটিডব্লিউ রয়েছে) স্থানীয় ইস্যুকারীর শংসাপত্রের সমস্যাটি পাইথন ৩..7 এর অধীনে ঘটে তাই আমি আবার পাইথন ২..7 কিউকিউতে ফিরে এসেছি এবং "urlib2 আমদানি urlopen থেকে" সহ সমস্ত পরিবর্তনের দরকার রয়েছে "urllib.request থেকে urlopen আমদানি করুন" এর পরিবর্তে অত্যন্ত দুঃখজনক ...


2

আপনি যদি কোনও ম্যাকের সাথে চালাচ্ছেন তবে আপনি কেবল Install Certificates.commandস্পটলাইটে অনুসন্ধান করতে এবং এন্টার টিপতে পারেন।


0

অনুরোধ গ্রন্থাগার ব্যবহার করুন। এই সমাধানটি ব্যবহার করে দেখুন, বা https://URL এর আগে যুক্ত করুন:

import requests
from bs4 import BeautifulSoup
import re

pages = set()
def getLinks(pageUrl):
    global pages
    html = requests.get("http://en.wikipedia.org"+pageUrl, verify=False).text
    bsObj = BeautifulSoup(html)
    for link in bsObj.findAll("a", href=re.compile("^(/wiki/)")):
        if 'href' in link.attrs:
            if link.attrs['href'] not in pages:
                #We have encountered a new page
                newPage = link.attrs['href']
                print(newPage)
                pages.add(newPage)
                getLinks(newPage)
getLinks("")

এটি আপনার পক্ষে কাজ করে কিনা তা পরীক্ষা করে দেখুন


0

স্ট্যাক ওভারফ্লোতে সমস্ত বিশেষজ্ঞের তুলনায় আমি একজন আপেক্ষিক নবাগত।

আমার কাছে জুপিটার নোটবুক চলার 2 সংস্করণ রয়েছে (একটি তাজা অ্যানাকোন্ডা নেভিগেটর ইনস্টলেশনের মাধ্যমে এবং একটি ????)? আমি মনে করি এটি হ'ল কারণ অ্যানাকোন্ডা আমার ম্যাকটিতে স্থানীয় ইনস্টলেশন হিসাবে ইনস্টল করা হয়েছিল (প্রতি অ্যানাকোন্ডা নির্দেশাবলী)।

আমি ইতিমধ্যে পাইথন ৩.7 ইনস্টল করেছি। এর পরে, আমি জ্যুপিটার নোটবুকটি খুলতে আমার টার্মিনালটি ব্যবহার করেছি এবং আমি মনে করি যে এটি আমার ম্যাকের উপরে বিশ্বব্যাপী আরেকটি সংস্করণ রেখেছিল।

তবে আমি নিশ্চিত না কারণ আমি কেবল পরীক্ষার এবং ত্রুটির মধ্য দিয়েই শিখছি!

আমি টার্মিনাল কমান্ডটি করেছি:

conda install -c anaconda certifi 

(উপরে নির্দেশিত হিসাবে, তবে এটি কার্যকর হয়নি))

আমার অজগর 3.7 ওএস ক্যাটালিনা 10.15.3 এ ইনস্টল করা আছে:

  • / লাইব্রেরি / পাইথন / ৩..7 / সাইট-প্যাকেজ এবং AND
  • Library / গ্রন্থাগার / পাইথন / 3.7 / lib / পাইথন / সাইট-প্যাকেজ

শংসাপত্রটি এখানে:

  • Library / গ্রন্থাগার / পাইথন / 3.7 / lib / পাইথন / সাইট-প্যাকেজস / সার্টিফি -2018.11.28. তালিকান-তথ্য

আমি ইনস্টল সার্টিফিকেট.কমের সন্ধান করার চেষ্টা করেছি ... তবে ফাইল স্ট্রাকচারের মাধ্যমে এটি খুঁজে পেলাম না ... অ্যাপ্লিকেশনগুলিতে নয় ... উপরের লিঙ্কগুলিতে নয়।

স্পটলাইটের মাধ্যমে এটি অনুসন্ধান করে অবশেষে আমি এটি ইনস্টল করেছি (উপরে কেউ প্রস্তাবিত হিসাবে)। এবং এটি স্বয়ংক্রিয়ভাবে ডাবল ক্লিক করে একই ফোল্ডারে অন্য কোনও শংসাপত্র ইনস্টল করে:

  • Library / গ্রন্থাগার / পাইথন / 3.7 / lib / পাইথন / সাইট-প্যাকেজ /

উপরের কোনওটিই আমার জন্য কিছু সমাধান করেনি ... আমি এখনও একই ত্রুটি পেয়েছি।

সুতরাং, আমি এর দ্বারা সমস্যার সমাধান করেছি:

  1. আমার jupyter নোটবুক বন্ধ।
  2. খোলার অ্যানাকোন্ডা নেভিগেটর।
  3. নেভিগেটর জিইউআই (টার্মিনালের পরিবর্তে) এর মাধ্যমে জুপিটার নোটবুক খোলার জন্য।
  4. আমার নোটবুক খুলছে এবং কোড চালাচ্ছি।

আমি আপনাকে বলতে পারি না কেন এটি কাজ করে। তবে এটি আমার জন্য সমস্যার সমাধান করেছে।

আমি কেবল পরের বার কাউকে ঝামেলা বাঁচাতে চাই। কেউ যদি আমার কাজটি কেন কাজ করতে পারে তা বলতে পারে, এটি দুর্দান্ত।

আমি জানতাম যে জুপিটার নোটবুকের 2 টি সংস্করণ একটি সমস্যা ছিল বলে আমি অন্যান্য টার্মিনাল কমান্ডগুলি চেষ্টা করিনি। আমি ঠিক কিভাবে এটি ঠিক করতে জানি না।


0

আমার জন্য সমস্যাটি ছিল আমি REQUESTS_CA_BUNDLEনিজের মধ্যে সেট করেছিলাম.bash_profile

/Users/westonagreene/.bash_profile:
...
export REQUESTS_CA_BUNDLE=/usr/local/etc/openssl/cert.pem
...

আমি একবার REQUESTS_CA_BUNDLEফাঁকাতে সেট করা (অর্থাত্ সরানো .bash_profile) requestsআবার কাজ করলাম ।

export REQUESTS_CA_BUNDLE=""

এই সমস্যাটি কেবলমাত্র requestsসিএলআই (কমান্ড লাইন ইন্টারফেস) এর মাধ্যমে পাইথন চালানোর সময় প্রদর্শিত হয় । যদি আমি দৌড়ে যাই requests.get(URL, CERT)তবে এটি ঠিক হয়ে গেল।

ম্যাক ওএস ক্যাটালিনা (10.15.6)। 3.6.11 এর পাইয়েনভ। ত্রুটি বার্তাটি আমি পাচ্ছিলাম:[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1056)

আমার উত্তর অন্য কোথাও: https://stackoverflow.com/a/64151964/4420657



-1

এটি কাজ করবে। পরিবেশ পরিবর্তনশীল PYTHONHTTPSVERIFY 0 তে সেট করুন।

  • লিনাক্স কমান্ড টাইপ করে:
export PYTHONHTTPSVERIFY = 0

বা

  • পাইথন কোড ব্যবহার করে:
import os
os.environ["PYTHONHTTPSVERIFY"] = "0"

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