:SSL:http://en.wikipedia.org에CERTIFICATE_VERIFY_FAILED 오류를 매끄럽게 해라.
나는'Web 파이선'을 매끄럽게 해라. 그리고 나는 이 인증서 문제를 유지한다면:코드 연습을 합니다.
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)>
Btw,I하는 것도(나는 있지만 일한다 해결책 모든 종류의 온라인 워크가 문제:명령 발견되지 않고 scrapy 계속 scrapy하고 있었다...정말 좌절감을 주)
Once upon a time I stumbled with this issue.사용 중 macOS 토시용 HD을, 응용 프로그램, Python3.6 폴더( 아니면 이무기의 모든 버전을 사용하고 있습니다)을입니다.;"설치 Certificates.command"파일에를 더블 클릭한다.:D. 가
검증되지 않은 ssl을 사용하기 위해 당신은 당신의 코드에 추가할 수 있습니다.
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
이 단말 사령부:
open /Applications/Python\ 3.7/Install\ Certificates.command
여기:https://stackoverflow.com/a/57614113/6207266발견
나를 위해 이에 결의한다.내 config으로
pip install --upgrade certifi
영향이 없다.
이것을 해결하기 위해:
당신이 해야 할 파이선 인증서를 설치하는 것이다!macOS에 관한 공통 문제다.
이러한 파일을 열어 주세요:
Install Certificates.command
Update Shell Profile.command
이 두 개의 스크립트를 실행하면 이 문제가 발생하지 않습니다.
이게 도움이 됐으면 좋겠네요!
초보 사용자의 경우 Applications 폴더로 이동하여 Python 3.7 폴더를 확장할 수 있습니다.먼저 Install Certificates. 명령을 실행(또는 두 번 클릭)한 다음 Update Shell Profile. 명령을 실행합니다.
open /Applications/Python\ 3.7/Install\ Certificates.command
단말기에서 이 명령어 시행
사용하고 은 아나콘다를 하세요.certifi
내용은 다음 URL을 하십시오.
https://anaconda.org/anaconda/certifi
설치하려면 단말기에 다음 행을 입력하십시오.
conda install -c anaconda certifi
다음 두 가지 절차를 수행합니다. - Macintosh HD > Applications > Python 3.7 폴더 - "Install Certificates.command"를 클릭합니다.
이 솔루션을 찾을 수 있어 정상적으로 동작하고 있습니다.
cd /Applications/Python\ 3.7/
./Install\ Certificates.command
같은 에러가 발생해, 이하의 프로그램 코드를 실행하고, 문제를 해결했습니다.
# install_certifi.py
#
# sample script to install or update a set of default Root Certificates
# for the ssl module. Uses the certificates provided by the certifi package:
# https://pypi.python.org/pypi/certifi
import os
import os.path
import ssl
import stat
import subprocess
import sys
STAT_0o775 = ( stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR
| stat.S_IRGRP | stat.S_IWGRP | stat.S_IXGRP
| stat.S_IROTH | stat.S_IXOTH )
def main():
openssl_dir, openssl_cafile = os.path.split(
ssl.get_default_verify_paths().openssl_cafile)
print(" -- pip install --upgrade certifi")
subprocess.check_call([sys.executable,
"-E", "-s", "-m", "pip", "install", "--upgrade", "certifi"])
import certifi
# change working directory to the default SSL directory
os.chdir(openssl_dir)
relpath_to_certifi_cafile = os.path.relpath(certifi.where())
print(" -- removing any existing file or link")
try:
os.remove(openssl_cafile)
except FileNotFoundError:
pass
print(" -- creating symlink to certifi certificate bundle")
os.symlink(relpath_to_certifi_cafile, openssl_cafile)
print(" -- setting permissions")
os.chmod(openssl_cafile, STAT_0o775)
print(" -- update complete")
if __name__ == '__main__':
main()
이 게시물을 보세요. Python의 새로운 버전에서는 증명서가 사전에 설치되어 있지 않기 때문에 이 오류가 발생하고 있는 것 같습니다.증명서 /Applications/Python\ 3.6/Install\ Certificates.command
투고 1: urlib 및 "SSL: CERTIFICATE_VERIFY_FAILED" 오류
Post 2: Airbrake 오류: urlopen 오류 [SSL: CERTIFICATE_VERIFY_FAILED] 인증서 확인 실패: 로컬 발급자 인증서를 가져올 수 없습니다.
슬프게도 문제를 해결하지 못했습니다만, 간신히 코드를 작동시킬 수 있었습니다(내 코드의 거의 대부분이 이 probelm btw). 로컬 발급자 증명서 문제는 python3.7에서 발생하므로, 저는 다시 python2.7 QAQ로 변경했고, "from urlib2 import urlopen"이 아닌 "from urlib2 urlib2 urlopen"로 변경되어야 할 모든 것을 포함하여 변경했습니다.
중인 Mac을 됩니다.Install Certificates.command
스포트라이트를 받고 엔터 키를 누릅니다.
Stack Overflow에 대한 모든 전문가들에 비하면 저는 비교적 초보입니다.
2가지 버전의 주피터 노트북을 실행하고 있습니다.(하나는 Anaconda Navigator를 새로 설치하고, 다른 하나는 ?를 사용하고 있습니다.이것은 Anaconda가 Mac에 로컬로 설치되어 있기 때문이라고 생각합니다(Anaconda의 지시에 따름).
저는 이미 python 3.7을 설치했습니다.그 후 단말기를 사용하여 주피터 노트북을 열었는데, Mac에 글로벌한 버전이 추가된 것 같습니다.
하지만 시행착오를 통해 배우는 것이기 때문에 잘 모르겠어!
terminal 명령어를 실행했습니다.
conda install -c anaconda certifi
(상기 지시대로, 동작하지 않았습니다.)
Python 3.7은 다음 OS Catalina 10.15.3에 설치됩니다.
- /라이브러리/Python/3.7/사이트 패키지 AND
- ~/라이브러리/피톤/3.7/lib/피톤/사이트 패키지
증명서는 다음 위치에 있습니다.
- ~/Library/Python/3.7/lib/python/site-packages/certifi-2019.11.28.dist-info
Install Certificate.command ...를 찾으려고 했지만 파일 구조를 검색해도 찾을 수 없었습니다.응용 프로그램에 없습니다...위의 링크에 없습니다.
Spotlight에서 (위의 제안대로) 찾아서 설치했습니다.그리고 자동으로 더블클릭하여 다음 폴더와 같은 폴더에 다른 증명서를 설치했습니다.
- ~/라이브러리/피톤/3.7/lib/피톤/사이트 패키지/
위 중 어느 것도 나를 위해 해결하지 못했다...아직도 같은 에러가 나요.
그래서 문제를 해결했습니다.
- 내 주피터 노트북을 닫아버리고 있어
- 아나콘다 내비게이터를 열었습니다.
- (터미널이 아닌) Navigator GUI를 통해 주피터 노트북을 엽니다.
- 제 노트북을 열고 코드를 실행하세요.
이게 왜 먹혔는지 말해줄 수 없어.하지만 그것은 나를 위해 문제를 해결했다.
다음 번에는 누군가 귀찮은 일을 덜어주고 싶을 뿐이에요.그게 왜 먹혔는지 누가 말해준다면 정말 좋을 것 같아요.
다른 터미널 명령어는 2가지 버전의 주피터 노트북에 문제가 있다는 것을 알고 있었기 때문에 시도하지 않았습니다.난 그걸 어떻게 고쳐야 할지 모르겠어.
요청 라이브러리를 사용합니다.을 사용해 보시거나, ""를 추가해 주세요.https://
da 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("")
이것이 당신에게 적합한지 확인하세요.
는 ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★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=""
python 실행 시에만 문제가 발생함requests
명령어 라인 인터페이스(CLI)를 경유합니다.내가 뛰면requests.get(URL, CERT)
잘 해결됐습니다.
Mac OS Catalina (10.15.6)3.6.11의 Pyenv. 오류 메시지:[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1056)
답변은 https://stackoverflow.com/a/64151964/4420657 입니다.
Debian 10 buster를 사용하고 있는데, youtube-dl로 파일을 다운로드하려고 하면 다음 오류가 나타납니다.sudo youtube-dl -k https://youtu.be/uscis0CnDjk
[youtube]uscis0CnDjk:다운로드 웹 페이지 ERROR:웹 페이지를 다운로드할 수 없습니다:<>urlopen 오류[SSL:CERTIFICATE_VERIFY_FAILED]자격증 실패한 상태를 확인한다:지방 발행자 인증서(_ssl.c:1056년)> 받을 수 없어;(URLError(SSLCertVerificationError(1, '[SSL:CERTIFICATE_VERIFY_FAILED]인증서에서 확인할 인한 실패:지방 발행인 C. 받을 수 없어ertifikate(_ssl.c:1056))
python2와 python3.8의 증명서는 올바르게 설치되어 있습니다만, 같은 에러가 계속 표시됩니다.마지막으로 (최적의 솔루션은 아니지만, 이 명령어는 youtube-dl에서 옵션으로 제공되는 증명서 체크를 제거하는 것입니다.)sudo youtube-dl -k --no-check-certificate https://youtu.be/uscis0CnDjk
Ubuntu 20.04 시스템에서 이 문제가 발생하고 있지만, 이것과 같은 「실제 수정」은 도움이 되지 않습니다.
파이어폭스는 사이트를 열려고 했지만 GNOME Web(Epiphany)도 Python3도 괜찮았다.wget
증명서를 받아들였습니다.검색한 결과 ServerFault에서 다음 두 가지 일반적인 이유를 찾을 수 있었습니다.
- 증명서는 미지의 CA(내부 CA 등)에 의해 실제로 서명되어 있습니다.
- 증명서는 기존의 CA 중 하나의 중간 CA 증명서로 서명되어 있으며, 리모트서버는 해당 중간 CA 증명서를 CA 체인으로 포함하지 않는 점에서 잘못 설정되어 있습니다.
Qualys SSL Labs 웹 사이트를 사용하여 사이트의 인증서를 확인하고 문제가 있는 경우 사이트 관리자에게 문의하여 수정할 수 있습니다.
지금 당장 이 문제에 대처해야 한다면 Rambod와 같은 임시 솔루션을 사용하는 것이 좋습니다.
웹소켓이 >=10.0인지 확인합니다.
추가 정보:Install Certificates.command Update Shell Profile.command
pip3 설치 웹 소켓==10.0
이거면 될 거야.환경 변수 PYTONHTPSVERIFY를 0으로 설정합니다.
- linux 명령어를 입력한다.
export PYTHONHTTPSVERIFY = 0
또는
- python 코드에서 사용:
import os
os.environ["PYTHONHTTPSVERIFY"] = "0"
에러가 는, BTW , BTW를 사용해 주세요.aiohttp
그냥 넣어두다verify_ssl=False
의 ""에 포함시키다".TCPConnector
:
import aiohttp
...
async with aiohttp.ClientSession(
connector=aiohttp.TCPConnector(verify_ssl=False)
) as session:
async with session.get(url) as response:
body = await response.text()
나는 창문에서 아나콘다를 사용하고 있다.다음을 시도할 때까지 동일한 오류가 발생하고 있었습니다.
import urllib.request
link = 'http://docs.python.org'
with urllib.request.urlopen(link) as response:
htmlSource = response.read()
urlopen을 사용하여 stackoverflow 스레드에서 가져온 것입니다.
Python urlib urlopen이 작동하지 않습니다.
언급URL : https://stackoverflow.com/questions/50236117/scraping-ssl-certificate-verify-failed-error-for-http-en-wikipedia-org
'sourcecode' 카테고리의 다른 글
읽기() 및 쓰기() 함수는 C의 로컬 연결(같은 컴퓨터) 상의 TCP 연결 중에 -1을 반환합니다. (0) | 2022.09.16 |
---|---|
dup2 / dup - 파일 기술자를 복제해야 하는 이유는 무엇입니까? (0) | 2022.09.16 |
python에서 정수를 이진수로 변환하는 중 (0) | 2022.09.16 |
Java 전체 화면에서의 JFrame (0) | 2022.09.16 |
장고 마이 그레이션 오류:필드 'name'기본 가치는 없어. (0) | 2022.09.16 |