我尝试在 Python 中使用正则表达式解析 set-cookie 标头。对于 set-cookie 标头,我阅读了描述如何构建 set-cookie 标头的RFC 6265 第 4.1 节。我尝试从规范构建一个正则表达式,这是我目前的状态:
([\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]*)))*
domain=...
我在set-cookie 标头(
但我之前的代码工作也完全没有预料到。例如这个 set-cookie 标头
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 个 cookie(VISITOR_INFO1_LIVE
两次GPS
和YSC
),但我的正则表达式仅捕获 3 个 cookie(YSC
缺少 cookie)。我在https://regex101.com/上进行了测试
稍后我会解析许多 set-cookie 标头以获取 cookie 的名称(或在 RFC 中调用该 cookie 名称)。
感谢帮助!