用于解析设置cookie标头的正则表达式



我尝试在Python中使用正则表达式解析set-cookie标头。 对于 set-cookie 标头,我阅读了 RFC 6265 第 4.1 节,其中描述了如何构建 set-cookie 标头。 我尝试从规范构建正则表达式,这是我当前的状态:

([x21x23-x27x2Ax2Bx2D-x39x41-x5Ax5E-x7Ax7Cx7E]+)=[x21x23-x2Bx2D-x3Ax3C-x5Bx5D-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-x3Ax3C-x7E]+)|(Secure|secure)|(HttpOnly|httponly)|([x20-x3Ax3C-x7E]*)))*

我对 set-cookie 标头 (domain=...( 中子域的递归定义有问题,该定义在 RFC 1034 第 3.5 节中描述,需要帮助在正则表达式中构建它。

而且我以前的代码工作也没有完全预期。例如这个设置饼干标头

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两次,GPSYSC个(,但我的正则表达式只捕获 3 个饼干(缺少YSC饼干(。我在 https://regex101.com/上测试了这一点

稍后我会解析许多设置cookie标头以获取cookie的名称(或在RFC中调用该cookie名称(。

感谢您的帮助!

简短的回答,正如您询问如何使用正则表达式解析cookie:

([^;]+);?

然后循环访问匹配项。

您提出问题的方式表明您还想验证 cookie,并且可能还想将它们分开。

在这个问题上花了一些时间之后,我认为仅使用正则表达式几乎不可能实现您想要的目标。

每个 Cookie 没有唯一标识符或分隔符。分隔符在列内以及 Cookie 之间使用。也没有固定的列数或强制性的最后一列。很难写出这个表达式的负部分(不匹配的内容(。

相关内容

  • 没有找到相关文章

最新更新