Если есть две даты, и вам нужен диапазон try
from dateutil import rrule, parser
date1 = '1995-01-01'
date2 = '1995-02-28'
datesx = list(rrule.rrule(rrule.DAILY, dtstart=parser.parse(date1), until=parser.parse(date2)))
pcaps имеют строгий формат, что позволяет разграничивать различные пакеты. В идеальном мире вам потребуется реализовать анализатор pcap, позволяющий получать каждый пакет один за другим для изучения. Вы использовали более тяжелый способ, который просто анализирует все как текст (который работает в вашем очень конкретном случае :-)), так что это то, что я буду документировать. Тем не менее, я действительно рекомендую вам разобраться в этом: гораздо проще, когда у вас есть каждый пакет как свой.
Если вам разрешено использовать библиотеку, некоторые из них, например scapy
или dpkt
, могут помочь вам разобрать pcaps.
Во-первых, вам нужно знать, что вы ищете. Ключевые слова - это параметры, связанные с HTTP-запросом. Когда вы анализируете его как файл, он совпадает с ?
и &
аргументами URL, например, в http://www.example.org/?param1=foo¶m2=bar
В вашем случае, когда вы ищете Bing, вот список параметров, которые вы можете найти: https://docs.microsoft.com/en-us/rest/api/cognitiveservices/bing-web-api-v5-reference#query-parameters [1115 ]
Чтобы получить их, сначала нужно извлечь все URL. Для этого вы можете использовать регулярное выражение и встроенный модуль Python re
. Ищите хороший онлайн, например вот тот, который я нашел для HTTP:
regex = r"/((([A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[\w]*))?)/"
Тогда вам нужно re.search(regex, decoded)
, а затем использовать groups()
(посмотрите это онлайн :-)) найти все URL. После этого вы сможете split("&")
получить различные ключевые слова.
Для 3) и 4) вам нужно найти следующие HTTP ответы и запросы. Вот где реализация парсера pcap становится хитрой, так как вам нужно угадать, где они находятся в вашем фрагменте текста. Вы, вероятно, можете искать теги HTTP
, как они есть до и после HTTP-запросов, но это грязно.