import socket # 提供了创建套接字和进行网络通信的功能
# 建立TCP连接
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# 与服务器建立连接
host='www.taobao.com'
s.connect(('www.taobao.com',80)) # HTTP服务的默认端口号是80,FTP的默认端口号是21,SMTP的默认端口号是25等
s.send("Get /HTTP/1.1\r\nHost:{}\r\nConnection:close\r\n \
User-Agen:Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) \
Gecko/20100101 Firefox/116.0 \r\n\r\n".format(host).encode("utf-8"))
print(s.recv(1024).decode('utf-8')) # 'recv'方法的参数是希望接收的数据的最大字节数
s.close()
使用'send'方法将HTTP请求报文发送到服务器。这个请求是GET请求,并且指定了HTTP版本为1.1。"
"在请求报文中添加Host头信息,其中'{}'被替换为淘宝的域名(http://www.taobao.com)。"
"在请求报文中添加Connection头信息,其值为'close',表示此请求完成后,就关闭连接。"
"在请求报文中添加User-Agent头信息,这是一个假扮的浏览器信息,通常服务器会根据这个信息来返回不同的内容。",
"再添加一个空行,表示请求报文的结束。"
"使用'recv'方法接收服务器返回的HTTP响应报文,并使用'decode'方法将其从二进制格式转换为字符串格式。"
HTTP/1.1 400 Bad Request
Server: Tengine
Date: Fri, 20 Oct 2023 14:44:14 GMT
Content-Type: text/html
Content-Length: 249
Connection: close
Via: cache5.cn4242-1[,0]
Timing-Allow-Origin: *
EagleId: 0000000016978130543453246e
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html>
<head><title>400 Bad Request</title></head>
<body>
<h1>400 Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<hr/>Powered by Tengine</body>
</html>