Exemplo n.º 1
0
    def __init__(self, engine=None):

        self.__master_file = ""
        dir_path = os.path.dirname(os.path.realpath(__file__))
        with open(dir_path + "/Simple-RFC1738-Encoder/js/common.js") as f:
            file = f.read()
            self.__master_file += file + "\n\n"

        with open(dir_path + "/Simple-RFC1738-Encoder/js/encode.js") as f:
            file = f.read()
            self.__master_file += file + "\n\n"

        with open(dir_path + "/Simple-RFC1738-Encoder/js/decode.js") as f:
            file = f.read()
            self.__master_file += file + "\n\n"

        with open(dir_path + "/Simple-RFC1738-Encoder/js/utf8.js") as f:
            file = f.read()
            self.__master_file += file

        #print(self.__master_file)

        if engine is None:
            self.__execjs_engine = execjs.get()  # automatically picked runtime
        else:
            self.__execjs_engine = execjs.get(engine)
        self.ctx = self.__execjs_engine.compile(self.__master_file)
Exemplo n.º 2
0
 def __init__(self, comicid=None):
     try:
         execjs.get()
     except Exception:
         raise RuntimeError('请先安装nodejs。 https://nodejs.org/zh-cn/')
     super().__init__()
     self.comicid = comicid
 def __init__(self):
     self._session = None
     if self.REQUIRE_JAVASCRIPT:
         try:
             execjs.get()
         except Exception:
             raise RuntimeError('请先安装nodejs。 https://nodejs.org/zh-cn/')
Exemplo n.º 4
0
 def __init__(self):
     self.timeout = 30
     if self.REQUIRE_JAVASCRIPT:
         try:
             execjs.get()
         except Exception:
             raise RuntimeError(
                 'pleaese install nodejs first. https://nodejs.org/zh-cn/')
Exemplo n.º 5
0
def get_signature(user_id, max_behot_time):
    with open('newsign.js', 'r', encoding='utf-8') as f:
        jsData = f.read()
    execjs.get()
    ctx = execjs.compile(jsData).call(
        'tac',
        str(user_id) + str(max_behot_time)
    )  # 复原TAC.sign(userInfo.id + "" + i.param.max_behot_time)
    return ctx
Exemplo n.º 6
0
 def __init__(self, comicid_or_url=None):
     self._tag_info = None
     if self.REQUIRE_JAVASCRIPT:
         try:
             execjs.get()
         except Exception:
             raise RuntimeError('pleaese install nodejs first. https://nodejs.org/zh-cn/')
     self.comicid = self.get_comicid_by_url(comicid_or_url=comicid_or_url)
     if self.NEEDED_NODE_PACKAGES:
         self.chekc_node_modules()
Exemplo n.º 7
0
def check_jsenv():
    """
    Description: Check the js runtime environment

    @return: `True` or `False`
    """
    try:
        execjs.get()
    except Exception:
        raise EnvironmentError("未发现js运行环境")
Exemplo n.º 8
0
    def execute(bot, data, forward=True):
        args = {"peer_id": data['peer_id'], "v": "5.60", }
        if forward:
            args.update({"forward_messages": data['message_id']})
        code = bot.html_decode(' '.join(data['message'].split('<br>')[1:]))
        JavaScript = execjs.get(execjs.runtime_names.Node)
        print('JavaScript runtime -- ', execjs.get().name)
        js = JavaScript.eval(code)

        args['message'] = 'Выполнено {}\n{}'.format(execjs.get().name, js)
        bot.Replyqueue.put(args)
Exemplo n.º 9
0
    def unscramble_galaxy_script(self):
        # check script body
        if not self.script_body.startswith('var Deuterium = '):
            self.error_str = 'Invalid format of script body: cannot parse it!'
            return None

        # create JavaScript interpreter runtime
        try:
            js_runtime = execjs.get('Node')
        except execjs_exceptions.RuntimeUnavailableError:
            js_runtime = execjs.get()  # default

        # find galaxy script part
        eval_start = self.script_body.find('eval(function(p,a,c,k,e,d)')
        if eval_start == -1:
            # try to find an end of galaxy rows declaration; maybe it is not packed (uni5)
            eval_end = self.script_body.find("$('#galaxy').append(PrintRow());")
            if eval_end == -1:
                self.error_str = 'parse error (1) cannot find start (and end) of packed function'
                return None
            # if we are here, probably galaxy script is not scrambled
            # eval_end is pointing at correct location, need to figure eval_start
            rows_end_str = "$('#galaxy').append(PrintSelector(fleet_shortcut));"
            eval_start = self.script_body.find(rows_end_str)
            if eval_start == -1:
                self.error_str = 'parse error (3) cannot find start of unpacked function'
                return None
            eval_start += len(rows_end_str)
            eval_text = self.script_body[eval_start:eval_end]
            eval_text = eval_text.strip()
            eval_text = 'var row = []; ' + eval_text + '\nreturn row;'
            #
            ctx = js_runtime.compile(eval_text)
            self.galaxy_rows = ctx.exec_(eval_text)
        else:
            # packed, as usual (uni4)
            eval_end = self.script_body.find("$('#galaxy').append(PrintRow());")
            if eval_end == -1:
                self.error_str = 'parse error(2) cannot find end of function'
                return None
            eval_text = self.script_body[eval_start:eval_end]
            eval_text = eval_text.strip()
            # ^^ [eval(function(p,a,c,k,e,d){e=function(c){r... ...141|7866|u0426'.split('|')))]
            eval_text = eval_text[5:-1]
            # ^^ [function(p,a,c,k,e,d){e=functi... ...0426'.split('|'))]
            eval_res = js_runtime.eval(eval_text)
            # Now, eval_res is a string:
            # row[12]={"planet":12,"id_planet":54448,"ally_planet":0,"metal":0,"crystal":0, ...
            eval_res = 'var row = []; ' + eval_res + "\nreturn row;"
            ctx = js_runtime.compile(eval_res)
            self.galaxy_rows = ctx.exec_(eval_res)

        return self.galaxy_rows
Exemplo n.º 10
0
    def execute(bot, data, forward=True):
        args = {
            "peer_id": data['peer_id'],
            "v": "5.60",
        }
        if forward:
            args.update({"forward_messages": data['message_id']})
        code = bot.html_decode(' '.join(data['message'].split('<br>')[1:]))
        JavaScript = execjs.get(execjs.runtime_names.Node)
        print('JavaScript runtime -- ', execjs.get().name)
        js = JavaScript.eval(code)

        args['message'] = 'Выполнено {}\n{}'.format(execjs.get().name, js)
        bot.Replyqueue.put(args)
Exemplo n.º 11
0
 def unscramble_galaxy_script(self):
     if not self.script_body.startswith('var Deuterium = '):
         logger.error('Invalid format of script body: cannot parse it!')
         return None
     eval_start = self.script_body.find('eval(function(p,a,c,k,e,d)')
     if eval_start == -1:
         logger.error('parse error (1)')
         return None
     eval_end = self.script_body.find("$('#galaxy').append(PrintRow());")
     if eval_end == -1:
         logger.error('parse error (2)')
         return None
     eval_text = self.script_body[eval_start:eval_end]
     eval_text = eval_text.strip()
     logger.debug('eval [{0}]'.format(eval_text))
     # ^^ [eval(function(p,a,c,k,e,d){e=function(c){r... ...141|7866|u0426'.split('|')))]
     inner_eval = eval_text[5:-1]
     logger.debug('inner eval [{0}]'.format(inner_eval))
     # ^^ [function(p,a,c,k,e,d){e=functi... ...0426'.split('|'))]
     #
     # create JS interptreter and eval that
     js_runtimes = execjs.available_runtimes()
     if 'Node' in js_runtimes:
         js = execjs.get('Node')
     else:
         js = execjs.get()  # default
     logger.debug('Using [{0}] as JS runtime.'.format(js.name))
     eval_res = js.eval(inner_eval)
     # Now, eval_res is a string:
     # row[12]={"planet":12,"id_planet":54448,"ally_planet":0,"metal":0,"crystal":0,
     # "name":"\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u043f\u043b\u0430\u043d\u0435\u0442\u0430",
     # "planet_type":1,"destruyed":0,"image":"normaltempplanet02","last_active":60,"parent_planet":0,
     # "luna_id":null,"luna_name":null,"luna_destruyed":null,"luna_diameter":null,"luna_temp":null,
     # "user_id":71992,"username":"******",
     # "race":4,"ally_id":0,"authlevel":0,"onlinetime":1,"urlaubs_modus_time":0,"banaday":0,"sex":1,
     # "avatar":7,"user_image":"","ally_name":null,"ally_members":null,"ally_web":null,"ally_tag":null,
     # "type":null,"total_rank":7865,"total_points":0};row[9]={"planet":9,"id_planet":54450,"ally_planet":0,
     # "metal":0,"crystal":0,"name":"Arnon","planet_type":1,"destruyed":0,"image":"normaltempplanet08",
     # "last_active":0,"parent_planet":0,"luna_id":null,"luna_name":null,"luna_destruyed":null,
     # "luna_diameter":null,"luna_temp":null,"user_id":71995,"username":"******","race":4,"ally_id":389,
     # "authlevel":0,"onlinetime":0,"urlaubs_modus_time":0,"banaday":0,"sex":1,"avatar":5,
     # "user_image":"71995_1440872455.jpg","ally_name":"Fury","ally_members":8,"ally_web":"",
     # "ally_tag":"Fury","type":null,"total_rank":141,"total_points":115582};
     # ...
     # we ned to eval() this string again, slightly modified, to get resulting row:
     eval_res = 'var row = []; ' + eval_res + "\nreturn row;"
     ctx = js.compile(eval_res)
     self.galaxy_rows = ctx.exec_(eval_res)
    def validate_javascript_b(self, js_file_list):

        node_runner = get('Node')

        for a_single_file in js_file_list:
            javascript_program = node_runner.compile('''
          module.paths.push('%s');
          standard_package = require('standard');

          function validateMyJS() {
            return standard_package.lintTextSync('%s')
          }

      ''' % (path.join(path.dirname(__file__), 'node_modules'), a_single_file))

            standard_data = javascript_program.call('validateMyJS')

            if standard_data['results'][0]['messages'] != None:
                for error in standard_data['results'][0]['messages']:
                    print("Error Located: " + error['message'])

            print(f"Error Count: {standard_data['errorCount']}")
            print(f"Warning Count: {standard_data['warningCount']} \n")

        all_javascript_string = ""
        for a_file in js_file_list:
            with open(a_file) as js_file:
                js_code = js_file.read()
                all_javascript_string += f"{js_code}\n"

        print("Files Have been Validated by Standard JS \n")
        return all_javascript_string
Exemplo n.º 13
0
 def getJs2(self, data):
     try:
         import execjs
         node = execjs.get("Node")
     except:
         printl('nodejs not found', self, 'E')
         self.session.open(
             MessageBoxExt,
             _("This plugin requires packages python-pyexecjs and nodejs."),
             MessageBoxExt.TYPE_INFO)
         return
     js = re.search('(.*?)if\(\$\(window', data, re.S).group(1)
     js = js + "function go(){ cookie = toHex(BFCrypt.decrypt(c, 2, a, b)) };"
     js = js + 'go(); return cookie;'
     result = node.exec_(js)
     printl('BLAZINGFAST-WEB-PROTECT: ' + result, self, 'A')
     mdh_ck.update({'BLAZINGFAST-WEB-PROTECT': str(result)})
     import requests
     requests.cookies.cookiejar_from_dict(mdh_ck, cookiejar=mdh_cookies)
     url = "https://www.stream-mydirtyhobby.co/"
     twAgentGetPage(url,
                    agent=myagent,
                    cookieJar=mdh_cookies,
                    headers={
                        'Referer': 'https://www.stream-mydirtyhobby.co/'
                    },
                    timeout=30).addCallback(self.genreData).addErrback(
                        self.genreData)
Exemplo n.º 14
0
def get_w():
    node = execjs.get()
    with open('demo.js', 'r', encoding='utf-8') as f:
        decrypt_js = f.read()
    ctx = execjs.compile(decrypt_js)
    data = ctx.call('E2')
    print(data)
    def validate_javascript_a(self, js_files):
        runtime = get('Node')

        print("Validating JavaScript file(s)")
        for current_file in js_files:
            context = runtime.compile('''
          module.paths.push('%s');
          s = require('standard');

          function lintJS() {
            return s.lintTextSync('%s')
          }

      ''' % (path.join(path.dirname(__file__), 'node_modules'), current_file))

            validation_results = context.call('lintJS')
            error_count = validation_results['errorCount']
            warning_count = validation_results['warningCount']

            if validation_results['results'][0]['messages'] != None:
                error_messages = validation_results['results'][0]['messages']
                for error in error_messages:
                    print("Error Found.")
                    print("Error Message: " + error['message'])

            print("Error Count: " + str(error_count))
            print("Warning Count: " + str(warning_count) + '\n')

        js_code = ""
        for f in js_files:
            with open(f) as js_file:
                js = js_file.read()
                js_code += js + ' \n'

        return js_code
Exemplo n.º 16
0
    def __init__(self, challenge, gt, referer):
        self.challenge = challenge
        self.gt = gt
        self.session = requests.Session()
        self.session.headers[
            'User-Agent'] = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36'
        self.session.headers['Referer'] = referer
        self.node = execjs.get()

        with open('geetest_cracking/sense.js', 'r', encoding='utf8') as f:
            source_sense = f.read()
        self.context_sense = self.node.compile(source_sense)

        with open('geetest_cracking/fullpage.js', 'r', encoding='utf8') as f:
            source_fullpage = f.read()
        self.context_fullpage = self.node.compile(source_fullpage)

        with open('geetest_cracking/fullpage2.js', 'r', encoding='utf8') as f:
            source_fullpage2 = f.read()
        self.context_fullpage2 = self.node.compile(source_fullpage2)

        with open('geetest_cracking/slide.js', 'r', encoding='utf8') as f:
            source_slide = f.read()
        self.context_slide = self.node.compile(source_slide)

        with open('geetest_cracking/click.js', 'r', encoding='utf8') as f:
            source_click = f.read()
        self.context_click = self.node.compile(source_click)
Exemplo n.º 17
0
 def get_cookie_js(self, js):
     with open(self.file, 'r', encoding='utf-8') as f:
         ctx = execjs.get().compile(f.read())
     data = ctx.call('Encrypted', js)
     func_js = data[213:-196]
     # 匹配用于计算c_token值的函数
     return func_js, data
Exemplo n.º 18
0
def main():
    parser = ArgumentParser()
    parser.add_argument('--print-available-runtimes', action=PrintRuntimes)
    parser.add_argument('-r', '--runtime', action='store', dest='runtime')
    parser.add_argument('-e', '--eval', action='store', dest='expr')
    parser.add_argument("--encoding",
                        action="store",
                        dest="files_encoding",
                        default="utf8")
    parser.add_argument(nargs="*", action='store', dest='files')

    opts = parser.parse_args()

    runtime = execjs.get(opts.runtime)

    codes = []
    for f in opts.files:
        with io.open(f, encoding=opts.files_encoding) as fp:
            codes.append(fp.read())

    context = runtime.compile("\n".join(codes))
    if opts.expr:
        if isinstance(opts.expr, bytes):
            expr = opts.expr.decode()
        else:
            expr = opts.expr
        sys.stdout.write(repr(context.eval(expr)) + "\n")
    else:
        ret = context.eval(sys.stdin.read())
        sys.stdout.write(repr(ret) + "\n")
Exemplo n.º 19
0
def main():
    parser = ArgumentParser()
    parser.add_argument('--print-available-runtimes', action=PrintRuntimes)
    parser.add_argument('-r', '--runtime', action='store', dest='runtime')
    parser.add_argument('-e', '--eval', action='store', dest='expr')
    parser.add_argument("--encoding", action="store", dest="files_encoding", default="utf8")
    parser.add_argument(nargs="*", action='store', dest='files')
    
    opts = parser.parse_args()
    
    runtime = execjs.get(opts.runtime)
    
    codes = []
    for f in opts.files:
        with io.open(f, encoding=opts.files_encoding) as fp:
            codes.append(fp.read())
    
    context = runtime.compile("\n".join(codes))
    if opts.expr:
        if isinstance(opts.expr, bytes):
            expr = opts.expr.decode()
        else:
            expr = opts.expr
        sys.stdout.write(repr(context.eval(expr)) + "\n")
    else:
        ret = context.eval(sys.stdin.read())
        sys.stdout.write(repr(ret) + "\n")
Exemplo n.º 20
0
    def solve_cf_challenge(self, resp, headers, **kwargs):
        headers = headers.copy()
        url = resp.url
        parsed = urlparse(url)
        domain = parsed.netloc
        page = resp.content
        kwargs.pop("params", None)  # Don't pass on params
        try:
            # Extract the arithmetic operation
            challenge = re.search(r'name="jschl_vc" value="(\w+)"', page).group(1)
            builder = re.search(
                r"setTimeout\(function\(\){\s+(var t,r,a,f.+?\r?\n[\s\S]+?a\.value =.+?)\r?\n", page
            ).group(1)
            builder = re.sub(r"a\.value =(.+?) \+ .+?;", r"\1", builder)
            builder = re.sub(r"\s{3,}[a-z](?: = |\.).+", "", builder)

        except AttributeError:
            # Something is wrong with the page. This may indicate Cloudflare has changed their
            # anti-bot technique. If you see this and are running the latest version,
            # please open a GitHub issue so I can update the code accordingly.
            raise IOError(
                "Unable to parse Cloudflare anti-bots page. Try upgrading cfscrape, or "
                "submit a bug report if you are running the latest version."
            )

        # Lock must be added explicitly, because PyV8 bypasses the GIL
        ctxt = execjs.get("PhantomJS")
        # Safely evaluate the Javascript expression
        answer = str(int(ctxt.eval(builder)) + len(domain))

        params = {"jschl_vc": challenge, "jschl_answer": answer}
        submit_url = "%s://%s/cdn-cgi/l/chk_jschl" % (parsed.scheme, domain)
        headers["Referer"] = url

        return requests.get(submit_url, params=params, headers=headers, **kwargs)
Exemplo n.º 21
0
def get_params(mid, max_behot_time=0):
    node = execjs.get()
    # ctx = node.compile(open('encryption.js', 'r', encoding='gbk').read())
    ctx = node.compile(toutiaohao_sign_js)
    p = ctx.call('getParams', mid, max_behot_time)
    print(json.dumps(p, indent=4, ensure_ascii=False))
    return p
 def parseOL(self, data):
     try:
         import execjs
         node = execjs.get("Node")
     except:
         printl('nodejs not found', self, 'E')
         self.session.open(
             MessageBoxExt,
             _("This plugin requires packages python-pyexecjs and nodejs."),
             MessageBoxExt.TYPE_INFO)
         return
     script = re.findall(
         '<script language="JavaScript" type="text/javascript">(.*?)</script>',
         data, re.S)
     if script:
         func = re.findall('function\s(.*?)\(', data, re.S)[0]
         js = script[0].replace(func, 'decrypt').replace(
             'document.write', 'video_url=') + "return video_url;"
         data = str(node.exec_(js))
         script = re.findall(
             '<script language="JavaScript" type="text/javascript">(.*?)</script>',
             data, re.S)
         if script:
             func = re.findall('function\s(.*?)\(', data, re.S)[0]
             js = script[0].replace(func, 'decrypt').replace(
                 'document.write', 'video_url=') + "return video_url;"
             data = str(node.exec_(js))
             stream = re.findall(
                 '<iframe.*?src=[\'|"](http[s]?://.*?\/.*?)[\'|"|\&|<]',
                 data, re.S | re.I)
             get_stream_link(self.session).check_link(
                 stream[0], self.got_link)
Exemplo n.º 23
0
    def login(self, salt, randstr, ticket):
        with open('rsa.js', 'r', encoding='utf-8') as f:
            source = f.read()
        phantom = execjs.get('PhantomJS')
        context = phantom.compile(source)
        p = context.call('get_pass', self.password, salt, randstr)

        url = 'https://ssl.ptlogin2.qq.com/login'
        params = {
            'u': self.username,
            'verifycode': randstr,
            'pt_vcode_v1': '1',
            'pt_verifysession_v1': ticket,
            'p': p,
            'pt_randsalt': '2',
            'u1':
            'https://qzs.qzone.qq.com/qzone/v5/loginsucc.html?para=izone',
            'ptredirect': '0',
            'h': '1',
            't': '1',
            'g': '1',
            'from_ui': '1',
            'ptlang': '2052',
            'js_type': '1',
            'login_sig': '',
            'pt_uistyle': '40',
            'aid': '549000912',
            'daid': '5',
            'has_onekey': '1',
        }
        response = self.session.get(url=url, params=params)
        print(response.text)
Exemplo n.º 24
0
    def freeProxy15():
        """
        零度代理, 不能使用
        """
        def get_token(page, timestamp):
            token = str(page) + '15' + str(timestamp)
            hl = hashlib.md5()
            hl.update(token.encode(encoding='utf-8'))
            return hl.hexdigest()

        node = execjs.get()
        ctx = node.compile(open('js/nyloner.js').read())
        session = requests.session()
        session.get('https://nyloner.cn/proxy', headers={
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36'
        })
        for page in range(1, 11):
            try:
                timestamp = int(time.time())
                token = get_token(page, timestamp)
                url = 'https://nyloner.cn/proxy?page=%s&num=15&token=%s&t=%s' % (page, token, timestamp)

                resp = session.get(url, timeout=5)
                list_str = resp.json()['list']
                list_str = ctx.call("decode_str", list_str)
                data_json = json.loads(list_str)
                for ip_info in data_json:
                    yield ip_info['ip'] + ':' + ip_info['port']
            except:
                time.sleep(2)
Exemplo n.º 25
0
    def encrypt_pwd(self):
        # serverTime = 'e1a6f1d17c'
        with open('./pwd_wap.js', 'r', encoding='utf-8') as f:
            js_content = f.read()

        # encrypt
        js_engine = execjs.get()
        cm = js_engine.compile(js_content)
        gid = cm.call('guideRandom')
        post_data = self._get_params(gid)

        # replace JS params
        # print(self.serverTime)
        js_content = js_content.replace(
            '{{serverTime}}', 'var serverTime="%s";' % self.serverTime)
        js_content = js_content.replace('{{module}}',
                                        'var module="%s";' % config.MODULE)

        cm = js_engine.compile(js_content)
        en_pwd = cm.call('enbaidupwd', self.pwd)

        post_data['password'] = en_pwd

        post_data['gid'] = gid
        print(post_data)
        return post_data
Exemplo n.º 26
0
 def __init__(self):
     f = open('jsfuck.js', 'r')
     jsf_code = f.read()
     js = execjs.get()
     #print "Using Engine %s" % js.name
     self.jsf_int = js.compile(jsf_code)
     pass
Exemplo n.º 27
0
 def get_language_map(self, ss, language_url, proxies):
     r = ss.get(language_url, headers=self.host_headers, proxies=proxies)
     r.raise_for_status()
     lang_map_str = re.search(pattern='languagePair = {(.*?)}',
                              string=r.text,
                              flags=re.S).group(0)  #C=
     return execjs.get().eval(lang_map_str)
Exemplo n.º 28
0
def getPassword(password, nonce, servertime, rsakey):  #调用js加密密码
    with open('sslogin.js', 'r') as f:
        source = f.read()
        phantom = execjs.get("PhantomJS")
        getPass = phantom.compile(source)
        mypass = getPass.call("get_pass", password, nonce, servertime, rsakey)
        return mypass
Exemplo n.º 29
0
 def setUpClass(cls):
     with open('eos/__javascript__/eos.js_tests.js', 'r') as f:
         code = f.read()
     cls.ctx = execjs.get().compile('var window={},navigator={};' + code +
                                    'var test=window.eosjs_tests.' +
                                    cls.module + '.__all__.' + cls.name +
                                    '();test.setUpClass();')
Exemplo n.º 30
0
def getName(name):  #调用js加密用户名
    with open('sslogin.js', 'r') as f:
        source = f.read()
        phantom = execjs.get("PhantomJS")
        getPass = phantom.compile(source)
        myname = getPass.call("get_name", name)
        return myname
Exemplo n.º 31
0
def get_answer3(question):
    api = 'https://www.150s.cn/topic/getSubject'
    url = 'https://www.150s.cn/'
    # 调用本地js脚本,需要node.js或其他环境
    node = execjs.get()
    file = 'a.js'
    ctx = node.compile(open(file).read())
    cnt = 1
    ff = open("44.txt", mode='w+')
    for i in question:
        session = requests.Session()
        h = {'User-Agent': random.choice(USER_AGENTS)}
        f = session.get(url, headers=h)
        print("----第 %d 题----" % cnt)
        i['stem'] = i['stem'].replace('\n', '')
        i['stem'] = i['stem'].replace('\t', '')
        js = 'searchProblem("{0}")'.format(i['stem'])
        sec = ctx.eval(js)
        data = {"secret": sec, "title": i['stem']}
        req = session.post(api, data=data, headers=h)
        tmp_data = json.loads(req.text)
        print("题目: " + tmp_data['title'])
        print("答案: " + tmp_data['answer'])
        print("")
        ff.write("第" + str(cnt) + "题 : ")
        ff.write(tmp_data['title'] + '\n')
        ff.write("答案: " + tmp_data['answer'] + '\n\n')
        ff.write("------------")
        ff.flush()
        cnt = cnt + 1
        time.sleep(1)
    ff.close()
Exemplo n.º 32
0
    def create_scraper(cls, sess=None, js_engine=None):
        """
        Convenience function for creating a ready-to-go requests.Session (subclass) object.
        """
        if js_engine:
            os.environ["EXECJS_RUNTIME"] = js_engine

        js_engine = execjs.get().name

        if not js_engine:
            raise EnvironmentError("No Javascript runtime installed. "
                                   "Please install Node.js or equivalent Javascript runtime. ")

        #if not ("Node" in js_engine or "V8" in js_engine):
            #raise EnvironmentError("Your Javascript runtime '%s' is not supported due to security concerns. "
                                   #"Please use Node.js or PyV8. To force a specific engine, "
                                   #"such as Node, call create_scraper(js_engine=\"Node\")" % js_engine)

        scraper = cls(js_engine=js_engine)

        if sess:
            attrs = ["auth", "cert", "cookies", "headers", "hooks", "params", "proxies", "data"]
            for attr in attrs:
                val = getattr(sess, attr, None)
                if val:
                    setattr(scraper, attr, val)

        return scraper
Exemplo n.º 33
0
    def create_scraper(cls, sess=None, js_engine=None):
        """
        Convenience function for creating a ready-to-go requests.Session (subclass) object.
        """
        if js_engine:
            os.environ["EXECJS_RUNTIME"] = js_engine

        js_engine = execjs.get().name

        if not ("Node" in js_engine or "V8" in js_engine):
            raise EnvironmentError(
                "Your Javascript runtime '%s' is not supported due to security concerns. "
                "Please use Node.js or PyV8. To force a specific engine, "
                "such as Node, call create_scraper(js_engine=\"Node\")" %
                js_engine)

        scraper = cls(js_engine=js_engine)

        if sess:
            attrs = [
                "auth", "cert", "cookies", "headers", "hooks", "params",
                "proxies", "data"
            ]
            for attr in attrs:
                val = getattr(sess, attr, None)
                if val:
                    setattr(scraper, attr, val)

        return scraper
Exemplo n.º 34
0
def run_js(js_text: str, invoke: str):
    js_env = execjs.get().name
    print('-----------------------------------------------------------------')
    print('Run java script: ')
    print('Js environment: ' + js_env)
    if js_env == 'JScript':
        print(
            'Warning: Run JS in Windows environment may cause access denied and Security Warning.\n'
            'It is recommended to use NodeJs.')
    else:
        pass
    try:
        context = execjs.compile(js_text)
        return context.call(invoke)
    except Exception as e:
        print(
            'Error: Run JS fail, please check the JS environment and your Security Setting.'
        )
        print(e)
        print(traceback.format_exc())
        return None
    finally:
        print(
            '-----------------------------------------------------------------'
        )
Exemplo n.º 35
0
 def test_case(self):
     model = clone(estimator)
     model.fit(**fit_data)
     for method in methods:
         try:
             code = sklearn2code(model, method, javascript)
         except ExpressionTypeNotSupportedError:
             continue
         js = execjs.get('Node')
         context = js.compile(code)
         exported_pred = []
         try:
             for _, row in export_predict_data['X'].iterrows():
                 val = context.eval('%s(%s)' % (method, ', '.join(
                     [str(x) if x == x else 'NaN' for x in row])))
                 exported_pred.append(val)
             exported_pred = np.array(exported_pred)
             pred = DataFrame(getattr(model, method)(**predict_data))
             assert_array_almost_equal(np.ravel(pred),
                                       np.ravel(exported_pred), 3)
         except:
             #                 print(code)
             import clipboard
             clipboard.copy(code)
             raise
Exemplo n.º 36
0
def _get_runntime():
    """
    :param path: 加密js的路径,注意js中不要使用中文!估计是pyexecjs处理中文还有一些问题
    :return: 编译后的js环境,不清楚pyexecjs这个库的用法的请在github上查看相关文档
    """
    phantom = execjs.get()  # 这里必须为phantomjs设置环境变量,否则可以写phantomjs的具体路径
    with open(js_path, 'r') as f:
        source = f.read()
    return phantom.compile(source)
Exemplo n.º 37
0
Arquivo: js.py Projeto: dasimon/weboob
    def __init__(self, script, logger=None):
        try:
            import execjs
        except ImportError:
            raise ImportError('Please install PyExecJS')

        self.runner = execjs.get()
        self.logger = getLogger('js', logger)

        self.ctx = self.runner.compile(self.HEADER + script)
Exemplo n.º 38
0
 async def evaljs(self, *, code:str):
     """eval JS code in Node.JS"""
     code_clean = "{0}".format(code.strip("```"))
     node = execjs.get("Node")
     execute = node.eval(code_clean)
     try:
         result = node.eval(code_clean)
         await self.bot.say(code.format(result))
     except execjs.ProgramError as e:
         await self.bot.say(code.format(type(e).__name__ + ': ' + str(e)))
Exemplo n.º 39
0
def book(session, kid, action=None):
    with open("./ios/bus.js") as r:
        js = execjs.get("Node").compile(r.read())
    if not action:
        res = session.post('http://bus.kuas.edu.tw/API/Reserves/add', data="{busId:"+ kid +"}")
    else:
        kid['reserveId'] = int(kid['key'])
        res = session.post('http://bus.kuas.edu.tw/API/Reserves/remove?_dc='+str(js.call('getTime')), data=json.dumps(kid))

    resource = json.loads(res.content)

    return resource['message']
Exemplo n.º 40
0
def list_js_runtimes():
    ajsr = execjs.available_runtimes()
    if len(ajsr) > 0:
        print('Detected {0} JavaScript runtimes:'.format(len(ajsr)))
        for js in ajsr:
            jsr = execjs.get(js)
            pref_str = ''
            if js == 'Node':
                pref_str = ' <== I prefer this one!'
            print('   {0}: {1}{2}'.format(js, jsr.name, pref_str))
    else:
        print('No JS runtimes detected! Install Node.js, spidermonkey or something!')
    sys.exit(0)
Exemplo n.º 41
0
def initialize_javascript_runtime():
    global jsrt, jsctx, jsinitcnt
    pac_content = main_gfwlist2pac()
    jsrts = execjs.available_runtimes()
    logging.debug(str(jsrts.keys()))  # [u'Node', u'SpiderMonkey', u'Spidermonkey']
    # SpiderMonkey 引擎比Node引擎用内存与CPU资源少,速度更快。
    # 在archlinux上是包会自动使用js185,js包和js17包都不认。
    # 好像有很严重的内存泄漏
    # 内存问题好像不是出在execjs上的,而是mitmproxy本身就有问题
    # https://github.com/mitmproxy/mitmproxy/issues/620
    # 如果这有真有内存问题的话,可以考虑试用pacparser包。
    jsrt = execjs.get('SpiderMonkey')
    # jsrt = execjs.get('Node')
    jsctx = jsrt.compile(pac_content)
    jsinitcnt += 1

    return
def run_script(code, func_name, func_input, errorlogger) :
	sandboxcode = """
	"use strict";
	var vm = require('vm');

	function safe_run(code, func_name, input) {
		var vm_output = [];
		var sandbox = {	vm_input : input,
						vm_output: vm_output,
						require : function() {throw Error('require not allowed');}}
		vm.createContext(sandbox);
		vm.runInContext('"use strict";\\n'+code,sandbox,{'timeout':200});
		vm.runInContext('vm_output.push('+func_name+'(vm_input))',sandbox,{'timeout':200});


		return vm_output[0];
	}
	"""


	js_ctx = execjs.get('Node').compile(sandboxcode)

	try:
		response = js_ctx.call('safe_run',code,func_name,func_input)
	# except execjs.ProgramError as e:
	# 	print str(e)
	# 	return {'error':str(e)}
	# except execjs.RuntimeError as e:
	# 	print str(e)
	# 	return {'error':str(e)}
	except execjs.Error as e:
		print str(e)
		errorlogger.log_error(str(e))
		return {}
	except:
		print traceback.format_exc()
		errorlogger.log_error('Error: Unknown Error')
		return {}

	print response
	return response
def list_js_runtimes():
    # AttributeError: module 'execjs' has no attribute 'available_runtimes'
    try:
        ajsr = execjs.available_runtimes()
    except AttributeError:
        # Newer execjs does not have available_runtimes() method?
        ajsr = []
        supported_runtimes = execjs.runtimes()
        for sr in supported_runtimes:
            if supported_runtimes[sr].is_available():
                ajsr.append(sr)
    if len(ajsr) > 0:
        print('Detected {0} JavaScript runtimes:'.format(len(ajsr)))
        for js in ajsr:
            jsr = execjs.get(js)
            pref_str = ''
            if js == 'Node':
                pref_str = ' <== I prefer this one!'
            print('   {0}: {1}{2}'.format(js, jsr.name, pref_str))
    else:
        print('No JS runtimes detected! Install Node.js, spidermonkey or something!')
    sys.exit(0)
Exemplo n.º 44
0
    def solve_challenge(self, body):
        try:
            js = re.search(r"setTimeout\(function\(\){\s+(var "
                        "s,t,o,p,b,r,e,a,k,i,n,g,f.+?\r?\n[\s\S]+?a\.value =.+?)\r?\n", body).group(1)
        except Exception:
            raise ValueError("Unable to identify Cloudflare IUAM Javascript on website. %s" % BUG_REPORT)

        js = re.sub(r"a\.value = (parseInt\(.+?\)).+", r"\1", js)
        js = re.sub(r"\s{3,}[a-z](?: = |\.).+", "", js)

        # Strip characters that could be used to exit the string context
        # These characters are not currently used in Cloudflare's arithmetic snippet
        js = re.sub(r"[\n\\']", "", js)

        if "parseInt" not in js:
            raise ValueError("Error parsing Cloudflare IUAM Javascript challenge. %s" % BUG_REPORT)

        # Use vm.runInNewContext to safely evaluate code
        # The sandboxed code cannot use the Node.js standard library
        js = "return require('vm').runInNewContext('%s', Object.create(null), {timeout: 5000});" % js

        try:
            node = execjs.get("Node")
        except Exception:
            raise EnvironmentError("Missing Node.js runtime. Node is required. Please read the cfscrape"
                " README's Dependencies section: https://github.com/Anorov/cloudflare-scrape#dependencies.")

        try:
            result = node.exec_(js)
        except Exception:
            logging.error("Error executing Cloudflare IUAM Javascript. %s" % BUG_REPORT)
            raise

        try:
            result = int(result)
        except Exception:
            raise ValueError("Cloudflare IUAM challenge returned unexpected value. %s" % BUG_REPORT)

        return result
Exemplo n.º 45
0
    def __init__(self, script, logger=None, domain=""):
        try:
            import execjs
        except ImportError:
            raise ImportError('Please install PyExecJS')

        self.runner = execjs.get()
        self.logger = getLogger('js', logger)

        window_emulator = self.HEADER

        if domain:
            window_emulator += "document.domain = '" + domain + "';"
            window_emulator += """
            if (typeof(location) === "undefined") {
                var location = window.location = {
                    host: document.domain
                };
            }
            """

        self.ctx = self.runner.compile(window_emulator + script)
Exemplo n.º 46
0
def init(session):
    with open("./ios/bus.js") as r:
        js_function = r.read()
    session.get('http://bus.kuas.edu.tw/')
    js = execjs.get("Node").compile(js_function + session.get('http://bus.kuas.edu.tw/API/Scripts/a1').content)
    return js
Exemplo n.º 47
0
from execjs import get
import sys
import os.path as op
try:
    from .rel import node_modules
except ImportError:
    from rel import node_modules


rt = get('Node')

context = rt.compile('''        
module.paths.push('%s');
function seePath(){
    return module.paths;
}
var ng = require('ng-annotate');
function annotate(src,cfg){
    return ng(src,cfg);
}''' % node_modules)

def ng_annotate(src,cfg=None):
    return context.call('annotate',src,cfg or dict(add=True)).get('src',None)

coffee = '''
var app = angular.module('my.app',[]);

app.controller('TestCtrl',function($scope){
    
});
'''
Exemplo n.º 48
0
 def _get_build_base_url(self):
     runtime = execjs.get('Node')
     runtime._command = settings.COMPRESSOR_REQUIREJS_NODE_EXECUTABLE
     ctx = runtime.eval(open(self.build_file, 'r').read())
     return os.path.join(os.path.dirname(self.build_file), *ctx.get('baseUrl', '').split(self.PATH_SPLIT))
Exemplo n.º 49
0
import os
import execjs
import simplejson

from models import Entry, Serializer

APP_TAG = 'vscode'
SCRIPT_DIR = os.path.dirname(os.path.realpath(__file__))
I18N_DIR = os.path.join(SCRIPT_DIR, '../workspace/vscode/i18n')
OUTPUT_JSON_PATH = os.path.join(SCRIPT_DIR, '../generated/vscode.json')

nodejs = execjs.get("Node")

def fild_all_files(directory):
    for root, dirs, files in os.walk(directory):
        for file in files:
            s = os.path.join(root, file)
            yield os.path.join(root, file)

def main():
	pass

if '__main__' in __name__:
	main()
Exemplo n.º 50
0
import time
import re
import requests
from requests.adapters import HTTPAdapter
import execjs

try:
    from urlparse import urlparse
except ImportError:
    from urllib.parse import urlparse

DEFAULT_USER_AGENT = ("Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) "
                      "Ubuntu Chromium/34.0.1847.116 Chrome/34.0.1847.116 Safari/537.36")

JS_ENGINE = execjs.get().name

if not ("Node" in JS_ENGINE or "V8" in JS_ENGINE):
    raise EnvironmentError("Your Javascript runtime '%s' is not supported due to security concerns. "
                           "Please use Node.js, V8, or PyV8." % JS_ENGINE)

class CloudflareAdapter(HTTPAdapter):
    def send(self, request, **kwargs):
        domain = request.url.split("/")[2]
        resp = super(CloudflareAdapter, self).send(request, **kwargs)

        # Check if we already solved a challenge
        if request._cookies.get("cf_clearance", domain="." + domain):
            return resp

        # Check if Cloudflare anti-bot is on
        if ( "URL=/cdn-cgi/" in resp.headers.get("Refresh", "") and
Exemplo n.º 51
0
def _default_runtime():
    return execjs.get()
Exemplo n.º 52
0
 def __init__(self, generator_js):
     self.context = execjs.get("Node").compile(generator_js)
Exemplo n.º 53
0
import execjs

_node = execjs.get("Node")
_context = execjs.compile("""
    var twitter = require('twitter-text');
""")

get_tweet_length = lambda text, options: _context.call("twitter.getTweetLength", text, options)
Exemplo n.º 54
0
import execjs

# Init environment
import requests

node = execjs.get()

# Params
method = 'GETCITYWEATHER'
city = '北京'
type = 'HOUR'
start_time = '2018-01-25 00:00:00'
end_time = '2018-01-25 23:00:00'

# Compile javascript
file = 'new.js'
import codecs
stream = codecs.open(file,'r',encoding='utf-8')
content = stream.read()
# print(content)
ctx = node.compile(content)

# Get params
js = 'getEncryptedData("{0}", "{1}", "{2}", "{3}", "{4}")'.format(method, city, type, start_time, end_time)
params = ctx.eval(js)
print(params)
api = 'https://www.aqistudy.cn/apinew/aqistudyapi.php'
response = requests.post(api, data={'d': params})
js = 'decodeData("{0}")'.format(response.text)
decrypted_data = ctx.eval(js)
print(decrypted_data)
Exemplo n.º 55
0
 def setUp(self):
     self.runtime = execjs.get('PhantomJS')
Exemplo n.º 56
0
 def setUp(self):
     self.runtime = execjs.get('Node')
Exemplo n.º 57
0
 def setUp(self):
     self.runtime = execjs.get('Nashorn')
Exemplo n.º 58
0
import json
import urllib.request as req
import urllib.parse as par
import execjs
import os

runtime = execjs.get()
context = runtime.compile('''
    module.paths.push('%s');
    ng = require
                )
rugby_bot = execjs.eval('../bot')


def get_token(url):
    obj = [
        {
            "channel":"/meta/handshake",
            "version":"1.0",
            "supportedConnectionTypes":["long-polling"],
            "id":"1"
        }
    ]
    j_obj = json.dumps(obj)
    request = req.Request(url)
    request.add_header('Content-Type', 'application/json')
    response = req.urlopen(request, j_obj.encode('utf-8'))
    resp_obj = json.loads(response.read().decode('utf-8'))
    token = resp_obj[0]["clientId"]
    return token
Exemplo n.º 59
0
def get_runtime():
    """returns an appropriate instance of execjs.Runtime
    which is used in coffeescript.compile() and coffeescript.compile_file()
    """
    return execjs.get()