From db25bc6ae2dfd55f65428b31c50cf47537993589 Mon Sep 17 00:00:00 2001 From: Marcel Gregoriadis Date: Wed, 5 Dec 2018 03:02:40 +0100 Subject: [PATCH] preserve the csrfTokenPattern in the conf dictionary and check it on none token --- lib/request/connect.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/lib/request/connect.py b/lib/request/connect.py index 15389050b..c4314f855 100644 --- a/lib/request/connect.py +++ b/lib/request/connect.py @@ -972,19 +972,23 @@ class Connect(object): page, headers, code = Connect.getPage(url=conf.csrfUrl or conf.url, data=conf.data if conf.csrfUrl == conf.url else None, method=conf.method if conf.csrfUrl == conf.url else None, cookie=conf.parameters.get(PLACE.COOKIE), direct=True, silent=True, ua=conf.parameters.get(PLACE.USER_AGENT), referer=conf.parameters.get(PLACE.REFERER), host=conf.parameters.get(PLACE.HOST)) if "*" in conf.csrfToken: - csrfTokenPattern = '' + conf.csrfTokenPattern = '' strings = conf.csrfToken.split("*") for index, string in enumerate(strings): - csrfTokenPattern += re.escape(string) + conf.csrfTokenPattern += re.escape(string) if index < len(strings) - 1: - csrfTokenPattern += ".*" + conf.csrfTokenPattern += ".*" token = extractRegexResult( - r"(?i)]+\bname=[\"']?%s\b[^>]*\bvalue=[\"']?(?P[^>'\"]*)" % csrfTokenPattern, page or "") + r"(?i)]+\bname=[\"']?%s\b[^>]*\bvalue=[\"']?(?P[^>'\"]*)" % conf.csrfTokenPattern, page or "") conf.csrfToken = extractRegexResult( - r"(?i)]+\bname=[\"']?(?P%s)\b[^>]*\bvalue=[\"']?[^>'\"]*" % csrfTokenPattern, page or "")[:-2] + r"(?i)]+\bname=[\"']?(?P%s)\b[^>]*\bvalue=[\"']?[^>'\"]*" % conf.csrfTokenPattern, page or "")[:-2] else: token = extractRegexResult(r"(?i)]+\bname=[\"']?%s\b[^>]*\bvalue=[\"']?(?P[^>'\"]*)" % re.escape(conf.csrfToken), page or "") + if not token: + token = extractRegexResult( + r"(?i)]+\bname=[\"']?%s\b[^>]*\bvalue=[\"']?(?P[^>'\"]*)" % + conf.csrfTokenPattern, page or "") if not token: token = extractRegexResult(r"(?i)]+\bvalue=[\"']?(?P[^>'\"]*)[\"']?[^>]*\bname=[\"']?%s\b" % re.escape(conf.csrfToken), page or "")