python request https_Python 发送带自签名证书的 https 请求

在拥有 .pfx 文件和其密码(若有加密)的前提下进行 https 请求

(关于这些文件的说明,参考:https://blog.51cto.com/wushank/1915795);

所有方法均忽略了服务器响应包的签名认证,即只对请求使用自签名证书进行加密。

1. requests-pkcs12 使用 .pfx

pip install requests-pkcs12

import requests_pkcs12

resp = requests_pkcs12.post('https://www.example.com/path', data='payload', pkcs12_filename='server.pfx', pkcs12_password='password', verify=False) # 若需要对响应包进行验证,则需要给 verify 传参

2. requests 使用 .crt 和 .key

import requests

resp = requests.post('https://www.example.com/path', data='payload', cert=('example.crt', 'example.key'), verify=False) # 若需要对响应包进行验证,则需要给 verify 传参

example.key 和 example.crt 由 .pfx 文件使用 openssl 转换而来(若 pfx 有密码则会提示输入密码):

openssl pkcs12 -in example.pfx -nocerts -nodes -out example.key

openssl pkcs12 -in example.pfx -clcerts -nokeys -out example.crt

3. httplib.HTTPSConnection 使用 .crt 和 .key

import httplib

import ssl

ssl._create_default_https_context = ssl._create_unverified_context # 指明不验证响应包

conn = httplib.HTTPSConnection("www.example.com", port=443, key_file='example.key', cert_file='example.crt')

conn.request('POST', '/path', body='payload')

retCreateCon = conn.getresponse()

### 回答1: 很高兴与你聊天!Python发送HTTPS请求可以使用urllib库中的request.get()函数,具体语法如下:request.get("URL", params={"key1": "value1", "key2": "value2"})。 ### 回答2: Python发送https请求可以使用requests库,该库支持发送各种类型的请求,包括GET、POST等。以下是一个使用requests发送https请求的示例: ```python import requests url = "https://www.example.com/" response = requests.get(url) print(response.text) ``` 以上代码使用requests发送了一个GET请求到指定的url,然后获取到了服务器返回的响应内容,并打印出来。 如果需要发送POST请求,可以使用requests库的post()方法,示例如下: ```python import requests url = "https://www.example.com/" data = {"key1": "value1", "key2": "value2"} response = requests.post(url, data=data) print(response.text) ``` 以上代码使用requests发送了一个POST请求到指定的url,并传递了data参数作为请求的主体内容,然后获取到了服务器返回的响应内容,并打印出来。 需要注意的是,对于某些网站,可能需要在发送请求时进行证书验证。可以使用verify参数设置为True或设置为证书文件路径来进行证书验证,示例如下: ```python import requests url = "https://www.example.com/" response = requests.get(url, verify=True) print(response.text) ``` 以上代码将会对服务器返回的证书进行验证。如果不需要进行证书验证,可以将verify参数设置为False。 ### 回答3: Python发送HTTPS请求主要通过使用第三方库requests来实现。requests是一个简单、易用的HTTP库,支持发送HTTP和HTTPS请求。 首先,需要安装requests库。可以使用pip命令在命令行中安装,如下所示: ``` pip install requests ``` 接下来,使用以下代码发送HTTPS请求: ```python import requests url = 'https://example.com' # 替换为要访问的HTTPS网址 response = requests.get(url) if response.status_code == 200: print('请求成功') print(response.text) # 打印服务器返回的内容 else: print('请求失败') ``` 上述代码中,通过调用requests.get()方法发送一个GET请求,并指定HTTPS网址作为参数。返回的response对象包含服务器返回的响应信息。 在这个例子中,我们通过判断response的status_code属性是否为200来确定请求是否成功。如果成功,可以通过response.text来获取服务器返回的内容。 除了GET请求之外,还有其他HTTP方法,如POST、PUT、DELETE等,可以通过调用对应的requests方法来发送HTTPS请求。 需要注意的是,在发送HTTPS请求时,requests库会自动验证服务器的SSL证书。如果遇到无效或自签名证书,可以通过设置verify参数为False来禁用SSL验证,但这会降低安全性。 综上所述,Python发送HTTPS请求可以使用requests库,通过调用对应的方法来发送请求,并通过response对象获取服务器返回的响应信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值