python3:进行post带参请求https网站数据/certificate verify failed错误解决

一:主体代码: 

#!/user/bin/python
#-*- coding:utf-8 -*-

import urllib.parse
import http.client
import json
import urllib.request

import ssl
ssl._create_default_https_context = ssl._create_unverified_context




# 构造访问体post的数据
test_data = {'uid': "",
             'token': "",
             'timestamp': ""}
test_data_url_encode = urllib.parse.urlencode(test_data)
# 构造访问体
request_url = "https://www.beitajizhang.com/index.php/assets"
conn = http.client.HTTPSConnection('www.beitajizhang.com')
header = {"Content-type": "application/x-www-form-urlencoded", "Accept": "text/plain"}

# 请求访问
conn.request(method="POST", url=request_url, headers=header, body=test_data_url_encode)
response = conn.getresponse()

#print(response.status)
#print(response.reason)
res = response.read()
#print(res)
resp = json.loads(res)
print(resp)

二:报错解决

在使用python3中的urllib.request模块抓取网页的时候使用一下的代码会报一个urllib.error.URLError错误

ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1051)

这个错误是因为Python 2.7.9 之后引入了一个新特性,当你使用urllib.urlopen一个 https 的时候会验证一次 SSL证书。当目标使用的是自签名的证书时就会报urllib.error.URLError错误。解决方法如下:

解决办法:

import ssl
ssl._create_default_https_context = ssl._create_unverified_context

如:

import urllib.request
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
response = urllib.request.urlopen('https://www.python.org')
print(response.read().decode('utf-8'))

通过导入ssl模块把证书验证改成不用验证就行了。

你可能感兴趣的:(Python,后端)