如何使用 python 套接字修复 301 错误

问题描述 投票:0回答:1

我刚刚开始学习如何在 python 中使用套接字。我正在尝试创建对“python.org”的获取请求,但我不断收到“301”错误。如果有人知道为什么请帮忙。

import socket
import ssl

hostname = 'www.python.org'
context = ssl.create_default_context()

with socket.create_connection((hostname, 443)) as sock:
    with context.wrap_socket(sock, server_hostname=hostname) as ssock:
        print(ssock.version())
        request = 'GET / HTTP/1.1\r\nHost:%s\r\n\r\n' % hostname
        ssock.send(request.encode())
        response = ssock.recv(6000)
        print(response)

编辑:我目前收到此回复

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

任何人都可以帮忙解决这个错误吗?

使用此代码可以正常工作:

import socket
import ssl

hostname = 'www.python.org'
context = ssl.create_default_context()

with socket.create_connection((hostname, 443)) as sock:

    try:
        context.check_hostname = False
        context.verify_mode = ssl.CERT_NONE
    except:
        None

    with context.wrap_socket(sock, server_hostname=hostname) as ssock:
        print(ssock.version())
        request = 'GET / HTTP/1.1\r\nHost:%s\r\n\r\n' % hostname
        ssock.send(request.encode())
        response = ssock.recv(6000)
        print(response)
python sockets http https
1个回答
0
投票

301 HTTP 代码已永久移动不是错误。对于此资源,您需要与另一个链接一起使用(当前是

/
,它在第一行
GET / HTTP
中定义)。它在您的回复中定义了
http_response 

© www.soinside.com 2019 - 2024. All rights reserved.