Regex для разбора set-cook ie заголовков - PullRequest
0 голосов
/ 10 января 2020

я пытаюсь разобрать set-cook ie заголовки с регулярным выражением в Python. Для заголовка set-cook ie я прочитал RF C 6265, раздел 4.1 , в котором описано, как создать заголовок set-cook ie. Я пытаюсь построить регулярное выражение из спецификации, и это мое текущее состояние:

([\x21\x23-\x27\x2A\x2B\x2D-\x39\x41-\x5A\x5E-\x7A\x7C\x7E]+)=[\x21\x23-\x2B\x2D-\x3A\x3C-\x5B\x5D-\x7E]*(;[\x20](((Expires|expires)=(Mon|Tue|Wed|Thu|Fri|Sat|Sun),[\x20][0-9]{2}-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-[0-9]{4}[\x20][0-9]{2}:[0-9]{2}:[0-9]{2}[\x20]GMT)|((Max-Age|max-age)=[1-9]+)|((Path|path)=[\x20-\x3A\x3C-\x7E]+)|(Secure|secure)|(HttpOnly|httponly)|([\x20-\x3A\x3C-\x7E]*)))*

У меня проблемы с рекурсивным определением субдомена в заголовке set-cook ie (domain=...), который описан в RF C 1034 Раздел 3.5 и нуждается в помощи, чтобы оформить это в регулярном выражении.

Но и мой предыдущий код работает не полностью. Например, этот set-cook ie header

VISITOR_INFO1_LIVE=M_6WYFFF_fo; path=/; domain=.youtube.com; secure; expires=Tue, 07-Jul-2020 00:17:35 GMT; httponly; samesite=None, GPS=1; path=/; domain=.youtube.com; expires=Thu, 09-Jan-2020 00:47:35 GMT, YSC=8sXes3YfFFF; path=/; domain=.youtube.com; httponly, VISITOR_INFO1_LIVE=M_6WYFFF_fo; path=/; domain=.youtube.com; secure; expires=Tue, 07-Jul-2020 00:17:35 GMT; httponly; samesite=None

включает в себя 4 куки (VISITOR_INFO1_LIVE дважды, GPS и YSC), но мое регулярное выражение ловит только 3 куки (YSC cook ie отсутствует). Я проверяю это на https://regex101.com/

Позже я бы проанализировал множество заголовков set-cook ie, чтобы узнать имя файлов cookie (или в RF C вызовах, которые готовят ie -имя).

Спасибо за помощь!

Ответы [ 2 ]

1 голос
/ 10 января 2020

Потратив немного больше времени на этот вопрос, я думаю, что практически невозможно достичь того, что вы хотите, используя только регулярное выражение.

Не существует уникальных идентификаторов или разделителей для каждого повара ie. Разделители используются как внутри столбцов, так и между файлами cookie. Также нет заданного количества столбцов или обязательного последнего столбца. Очень сложно написать отрицательную часть этого выражения (что не должно совпадать).

1 голос
/ 10 января 2020

Короткий ответ, поскольку вы спросили, как проанализировать файлы cookie с помощью регулярного выражения:

([^;]+);?

Затем выполните итерацию по совпадениям.

То, как вы сформулировали вопрос, означает, что вы также нравится проверять файлы cookie и, возможно, также отделять их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...