MCPcopy Create free account
hub / github.com/VeNoMouS/cloudscraper / JavaScriptInterpreter

Class JavaScriptInterpreter

cloudscraper/interpreters/__init__.py:19–56  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

17
18
19class JavaScriptInterpreter(ABC):
20
21 # ------------------------------------------------------------------------------- #
22
23 @abc.abstractmethod
24 def __init__(self, name):
25 interpreters[name] = self
26
27 # ------------------------------------------------------------------------------- #
28
29 @classmethod
30 def dynamicImport(cls, name):
31 if name not in interpreters:
32 try:
33 __import__('{}.{}'.format(cls.__module__, name))
34 if not isinstance(interpreters.get(name), JavaScriptInterpreter):
35 raise ImportError('The interpreter was not initialized.')
36 except ImportError:
37 logging.error('Unable to load {} interpreter'.format(name))
38 raise
39
40 return interpreters[name]
41
42 # ------------------------------------------------------------------------------- #
43
44 @abc.abstractmethod
45 def eval(self, jsEnv, js):
46 pass
47
48 # ------------------------------------------------------------------------------- #
49
50 def solveChallenge(self, body, domain):
51 try:
52 return '{0:.10f}'.format(float(self.eval(body, domain)))
53 except Exception:
54 raise CloudflareSolveError(
55 'Error trying to solve Cloudflare IUAM Javascript, they may have changed their technique.'
56 )

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…