使用 socket.send, python 发送 HTTP 1.1 GET 请求



我正在尝试通过以下方式向谷歌服务器发送获取请求,GET / HTTP/1.1rnHost: www.google.comrnrn通过 Python3 sockets.send 函数。发送代码如下:

import socket
buffer = input()     #filled the with 'GET / HTTP/1.1rnHost: www.google.comrnrn'
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
target = "www.google.com"
port = 80
client.connect((target,port))    
client.send(buffer.encode()) 
while True:
recv_len = 1
response = ""
while recv_len:
data        = client.recv(4096).decode(errors="ignore")
recv_len    = len(data)
response    += data
if recv_len < 4096:
break
print(response)

但是我没有从服务器收到任何数据。 有人可以帮助我吗?我尝试了类似的问题,但大多数都集中在请求中使用n

问题出在行上

buffer = input()

正如Serge Ballesta所提到的,input()函数将r读作两个字符,"""r"。用

buffer = sys.stdin.read()

并将GET请求管道传输到程序文件将解决此问题。

echo -ne "GET / HTTP/1.1rnHost: www.google.comrnrn" |python3 temp.py

最新更新