2016-06-26 3 views
-1

Я пытаюсь создать код, который отправит HTTP-запрос на сайт и сохранит содержимое в HTML-файле с помощью scapy.Извлечение содержимого пакета с использованием сценария Python

Так что, если мой код:

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 является IP от Google, чем выход должен быть HTML страница Google сохраняется в HTML-файл на моем компьютере ... Я получаю вместо внесения этого:

ÿÿÿÿÿÿ<¨*â[email protected] Þ QÚûPP PÛGET /index.html HTTP/1.0 

Теперь я знаю, что для работы, такой как запросы, существует гораздо лучший модуль, но моя миссия состоит в том, чтобы делать это только в scapy. Если кто-нибудь может указать на проблему и предложить лучший код для работы, написанной с использованием scapy, это будет замечательно.

Редактирование - я попытался использовать рукопожатие tcp, но теперь я пытаюсь записать содержимое в свой html-файл и из некоторых причина я не могу сделать IT-

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

Сжатый? Проверьте заголовок содержимого. – tripleee

+0

Что вы meen –

+0

https://en.wikipedia.org/wiki/HTTP_compression – tripleee

ответ

0

в вашем данном коде, не ясно, что http есть, и, как следствие, нет никакого способа узнать, что именно http.write() и http.close() будет делать.

Но в любом случае, если ваша цель состоит в том, чтобы получить HTML из Интернета, используя ТОЛЬКО scapy, вы должны начать с TCP 3-этапного, после запроса HTTP GET:

How to create HTTP GET request Scapy?