Merge pull request #241 from Intel11/master

Actualizados
This commit is contained in:
Alfa
2018-04-08 12:01:14 -05:00
committed by GitHub
2 changed files with 40 additions and 8 deletions

View File

@@ -9,7 +9,7 @@ import urllib
import urlparse
from platformcode import logger
from decimal import Decimal, ROUND_UP
class Cloudflare:
def __init__(self, response):
@@ -62,12 +62,20 @@ 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)))
if op == '+':
jschl_answer = jschl_answer + self.decode2(v)
elif op == '-':
jschl_answer = jschl_answer - self.decode2(v)
elif op == '*':
jschl_answer = jschl_answer * self.decode2(v)
elif op == '/':
jschl_answer = jschl_answer / self.decode2(v)
self.js_data["params"]["jschl_answer"] = jschl_answer + len(self.domain)
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 +93,29 @@ 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)
#return Decimal(Decimal(num1) / Decimal(num2)).quantize(Decimal('.0000000000000001'), rounding=ROUND_UP)
return Decimal(Decimal(num1) / Decimal(num2)).quantize(Decimal('.0000000000000001'))
def decode(self, data):
t = time.time()
timeout = False

View File

@@ -68,7 +68,7 @@ load_cookies()
def downloadpage(url, post=None, headers=None, timeout=None, follow_redirects=True, cookies=True, replace_headers=False,
add_referer=False, only_headers=False, bypass_cloudflare=True):
add_referer=False, only_headers=False, bypass_cloudflare=True, count_retries=0):
"""
Abre una url y retorna los datos obtenidos
@@ -234,13 +234,14 @@ def downloadpage(url, post=None, headers=None, timeout=None, follow_redirects=Tr
logger.info("No se ha podido descomprimir")
# Anti Cloudflare
if bypass_cloudflare:
if bypass_cloudflare and count_retries < 5:
cf = Cloudflare(response)
if cf.is_cloudflare:
count_retries += 1
logger.info("cloudflare detectado, esperando %s segundos..." % cf.wait_time)
auth_url = cf.get_url()
logger.info("Autorizando... url: %s" % auth_url)
if downloadpage(auth_url, headers=request_headers, replace_headers=True).sucess:
logger.info("Autorizando... intento %d url: %s" % (count_retries, auth_url))
if downloadpage(auth_url, headers=request_headers, replace_headers=True, count_retries=count_retries).sucess:
logger.info("Autorización correcta, descargando página")
resp = downloadpage(url=response["url"], post=post, headers=headers, timeout=timeout,
follow_redirects=follow_redirects,