SSLError: [SSL: UNKNOWN_PROTOCOL] unknown protocol (_ssl.c:748)

在尝试使用HTTP协议访问需要HTTPS的网站时遇到302重定向问题。使用Python的socket和ssl模块进行HTTPS连接时,出现SSLError: [SSL: UNKNOWN_PROTOCOL]。问题在于连接时使用了错误的端口80,而应改为443。提供了一个简单的通过socket实现GET请求的示例代码,需要注意根据协议类型正确设置端口。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用HTTP协议访问需要HTTPS协议访问的网页是,会返回302 Found

表示需要重定向到使用HTTPS访问

socket使用HTTPS需要import ssl模块

import ssl

然后对socket对象进行包装

sock = ssl.wrap_socket(socket.socket())

此时出现错误

SSLError: [SSL: UNKNOWN_PROTOCOL] unknown protocol (_ssl.c:748)

上网查找后发现自己没有修改访问对应的端口号,仍然用80端口号connect服务器,因此出错,需要将端口号改为https服务对应的443

下面为一个简单的通过socket方法实现get请求的代码,输出为访问的网页的response。此代码未根据指定的protocol分配对应端口号,有待修改。

# _*_ coding:utf-8 _*_
import socket
import ssl
"""
2017/02/16
作业 1


资料:
在 Python3 中,bytes 和 str 的互相转换方式是
str.encode('utf-8')
bytes.decode('utf-8')

send 函数的参数和 recv 函数的返回值都是 bytes 类型
其他请参考上课内容, 不懂在群里发问, 不要憋着
"""


# 1
# 补全函数
def protocol_of_url(url):
    '''
    url 是字符串, 可能的值如下
    'g.cn'
    'g.cn/'
    'g.cn:3000'
    'g.cn:3000/search'
    'http://g.cn'
    'https://g.cn'
    'http://g.cn/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值