Cambio en el decode

Añadir una rutina diferente para hacer el decode y redondear jschl_answer, simulando lo que hace la rutina javascript de la protección cloudflare.
This commit is contained in:
pipcat
2018-04-07 18:56:05 +02:00
committed by GitHub
parent d144391393
commit 504d9a151b

View File

@@ -62,12 +62,13 @@ class Cloudflare:
def get_url(self):
# Metodo #1 (javascript)
if self.js_data.get("wait", 0):
jschl_answer = self.decode(self.js_data["value"])
jschl_answer = self.decode2(self.js_data["value"])
for op, v in self.js_data["op"]:
jschl_answer = eval(str(jschl_answer) + op + str(self.decode(v)))
jschl_answer = eval(str(jschl_answer) + op + str(self.decode2(v)))
self.js_data["params"]["jschl_answer"] = jschl_answer + len(self.domain)
jschl_answer += 0.00000000005 if jschl_answer >= 0 else -0.00000000005
self.js_data["params"]["jschl_answer"] = round(jschl_answer, 10) + len(self.domain)
response = "%s://%s%s?%s" % (
self.protocol, self.domain, self.js_data["auth_url"], urllib.urlencode(self.js_data["params"]))
@@ -85,6 +86,27 @@ class Cloudflare:
return response
def decode2(self, data):
data = re.sub("\!\+\[\]", "1", data)
data = re.sub("\!\!\[\]", "1", data)
data = re.sub("\[\]", "0", data)
pos = data.find("/")
numerador = data[:pos]
denominador = data[pos+1:]
aux = re.compile('\(([0-9\+]+)\)').findall(numerador)
num1 = ""
for n in aux:
num1 += str(eval(n))
aux = re.compile('\(([0-9\+]+)\)').findall(denominador)
num2 = ""
for n in aux:
num2 += str(eval(n))
return float(num1) / float(num2)
def decode(self, data):
t = time.time()
timeout = False