所以我正在阅读这些部分GET请求,这些请求会使服务器在此请求一段时间后超时连接。如何发送部分GET请求?..
import socket, sys
host = sys.argv[1]
request = "GET / HTTP/1.1\nHost: "+host+"\n\nUser-Agent:Mozilla 5.0\n" #How could I make this into a partial request?
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, 80))
s.sendto(request, (host, 80))
response = s.recv(1024)
我该怎么做?
答案 0 :(得分:1)
我认为你混淆了部分和不完整的请求:
\r\n\r\n
而不是\n
结束)。其他方式只是TCP连接而不发送任何数据或执行具有内容长度的POST请求,然后不发送请求标头中指定的数据。答案 1 :(得分:0)
HTTP标头过早结束。 (\n\n
应该在标题之后,在内容之前)
import socket, sys
host = sys.argv[1]
request = "GET / HTTP/1.1\nHost: "+host+"\nUser-Agent:Mozilla 5.0\n\n"
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, 80))
s.send(request)
response = s.recv(1024)
如果您的意思是部分内容检索,您可以指出Range
header:
"GET / HTTP/1.1\nHost: "+host+"\nUser-Agent:Mozilla 5.0\rRange: bytes=0-999\n\n"
注意强>
即使大多数(但不是全部)服务器也接受\r\n
,它应该是\n
而不是\n
作为行结束。