我正在尝试通过以下方式向谷歌服务器发送获取请求,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