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

如何使用python套接字修复301错误,python,sockets,http,https,Python,Sockets,Http,Https,我刚刚开始学习如何在python中使用套接字。我正试图创建一个对“python.org”的get请求,但我一直收到“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_

我刚刚开始学习如何在python中使用套接字。我正试图创建一个对“python.org”的get请求,但我一直收到“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)

301 HTTP代码被永久移动不是错误。对于这些资源,您需要与另一个链接一起使用(当前的链接是
/
,它在第一行
GET/HTTP
中定义)。它在您的响应中定义
http\u响应

您可能会收到一个重定向响应,告诉您通过HTTPS访问站点(端口80到端口443)。为什么对HTTP使用原始套接字而不是库呢?因为我正在尝试使用tls和ja3实现创建自己的库。稍后再添加h2。是否使用其他链接?为什么我需要使用另一个链接?因为您的HTTP服务器<代码>301 HTTP代码被永久移动重定向到另一个链接。它在您的响应中定义
http\u响应