0
我知道它是一个愚蠢的问题。但相信我 - 我搜查了我所有的互联网,我没有得到任何答案。 首先,有我的代码:我如何从网站获得http数据由scapy
def Make_Get():
synR = IP(dst = 'www.google.com', ttl = 64)/TCP(dport = 80, flags = 'S')
synAckAN = sr1(synR)
getStr = 'GET /index.html HTTP/1.0 \n\n'
req = (IP(dst = 'www.google.com', ttl = 64)/TCP(dport = 80, sport = synAckAN[TCP].dport, seq = synAckAN[TCP].ack, ack = synAckAN[TCP].seq+1, flags = 'A')/getStr)
ans, unans = sr(req)
return ans, unans
当我运行这个功能和特林打印“答”(第一个参数)
- 它给我一个答案没有数据。 看: 收到1包,拿到了1个回答,剩余0包
###[ IP ]###
version = 4L
ihl = 5L
tos = 0x0
len = 40
id = 9784
flags =
frag = 0L
ttl = 128
proto = tcp
chksum = 0xc02f
src = 216.58.210.4
dst = 192.168.233.128
\options \
###[ TCP ]###
sport = http
dport = ftp_data
seq = 2116250139
ack = 28
dataofs = 5L
reserved = 0L
flags = A
window = 64240
chksum = 0x77bc
urgptr = 0
options = {}
###[ Padding ]###
load = '\x00\x00\x00\x00\x00\x00'
None
没有任何数据....... 但是当我闻在Wireshark的传历程,我得到了一个HTML代码在数据包中。
我的问题是 - 我怎么能发送Get请求像我一样,从网站保存的HTML代码(将其打印出来,或文件..犯规梅特..)
我可以使用它..但我想知道如何做没有它的HTTP REQ。问题是我这样做的答案是Ack,而不是HTML代码。你不知道为什么? – jony
您需要先建立TCP连接,然后在TCP有效负载的主体中执行您的HTTP请求。所以,首先一个SYN,接收一个ACK,然后发送一个SYN/ACK。之后,您可以在TCP有效负载的主体中发送HTTP,然后希望收到它 – StephenG
这就是我在我发送的代码中所做的 – jony