Python - Как просмотреть * все * HTTP-соединения, входящие / выходящие из моей машины? - PullRequest
0 голосов
/ 16 декабря 2018

Я знаю о запросах библиотеки, urllib и журналировании.Однако из примеров, которые я изучил, я могу только найти пример, в котором вы указываете конкретный пример - например, - requests.get('https://httpbin.org/headers').Есть ли способ непрерывно и активно контролировать все входящие / исходящие соединения, независимо от HTTP-глагола?

(я полагаю, что wireshark или fiddler могут это сделать, но я пишу программу на Python и не хочу никакого видаWireshark или расширение Python Fiddler.)

1 Ответ

0 голосов
/ 16 декабря 2018

Вы можете попробовать pypcap:

Установка:

pip install pypcap

Использование 1 :

import pcap
sniffer = pcap.pcap(name=None, promisc=True, immediate=True, timeout_ms=50)
addr = lambda pkt, offset: '.'.join(str(ord(pkt[i])) for i in range(offset, offset + 4))
for ts, pkt in sniffer:
    print('%d\tSRC %-16s\tDST %-16s' % (ts, addr(pkt, sniffer.dloff + 12), addr(pkt, sniffer.dloff + 16)))

Использование 2 :

import dpkt, pcap
pc = pcap.pcap()     # construct pcap object
pc.setfilter('icmp') # filter out unwanted packets
for timestamp, packet in pc:
    print dpkt.ethernet.Ethernet(packet)

Примечания:

...