我试图创建一个代码,该代码将向网站发送HTTP get请求,并使用scapy将内容保存在HTML文件中。
所以,如果那是我的代码:
r = Ether() / IP(dst=cache_ip) / TCP() / "GET /index.html HTTP/1.0 \n\n"
b = str(r)
http.write(b)
print "html page is ready, check your html files folder to check"
http.close()
并且cache_ip是Google的IP,输出应该是Google保存在我的计算机上的HTML文件中的HTML页面... Instad我明白了:
ÿÿÿÿÿÿ<¨*â-LEC@ Þ QÚûPP PÛGET /index.html HTTP/1.0
现在我知道有更好的工作模数,比如请求,但我的任务是只在scapy中完成。如果任何人都可以指出问题并为使用scapy编写的工作提供更好的代码,那将是很好的
编辑 - 我试图使用tcp握手,但现在我试图将内容写入我的html文件,并且由于某些原因我不能这样做 -
http = open(os.path.dirname(
os.path.abspath(inspect.getfile(inspect.currentframe()))) + "/html_saved_pages/" + url + ".html", "w")
update_history(url)
syn = IP(dst=cache_ip) / TCP(dport=80, flags='S')
syn_ack = sr1(syn)
syn_ack
getStr = 'GET / HTTP/1.1\r\nHost:'+cache_ip+'\r\n\r\n'
request = IP(dst=cache_ip) / TCP(dport=80, sport=syn_ack[TCP].dport,
seq=syn_ack[TCP].ack, ack=syn_ack[TCP].seq + 1, flags='A') / getStr
reply = sr(request)
http.write(reply)
print "html page is ready, check your html files folder to check"
http.close()
答案 0 :(得分:0)
在您给定的代码中,不清楚http
是什么,因此,无法确切知道http.write()
和http.close()
会做什么。
但无论如何,如果您的目标是使用 ONLY scapy从Web检索HTML,则必须从TCP 3次握手开始,然后是HTTP GET请求: