鱼C论坛

 找回密码
 立即注册
查看: 2556|回复: 2

关于在pycharm中运行js代码的问题

[复制链接]
发表于 2023-1-17 18:32:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
在pycharm中import execjs可以读取js代码后编译并调用js里面的函数运行,但是有个问题,如果JS代码里面出现导入第三方库的情况下,就会报错, 比如js代码开头导入var CryptoJS = require('crypto-js'), 就会报错,请问这种情况怎么解决

js代码如下:
var CryptoJS = require('crypto-js')

function h(t) {
    var e = CryptoJS.enc.Hex.parse(t)
        , f = CryptoJS.enc.Utf8.parse("jo8j9wGw%6HbxfFn")
        , m = CryptoJS.enc.Utf8.parse("0123456789ABCDEF")
        , n = CryptoJS.enc.Base64.stringify(e)
        , a = CryptoJS.AES.decrypt(n, f, {
            iv: m,
            mode: CryptoJS.mode.CBC,
            padding: CryptoJS.pad.Pkcs7
        })
        , r = a.toString(CryptoJS.enc.Utf8);
    return r.toString()
}

python代码如下:
import execjs
with open('JS代码.js', 'r', encoding='utf-8')as f:
     js_code = f.read()
exe = execjs.compile(js_code)
text = "95780ba0943730051dccb5fe3918f9fe1b6f2130681f99d5620c5497aa480f133eba6f8cfd85413ded7cb879780cfee9dddf795a1fbd4e4288e0a943f5f706f7ae315f2b4d76ad62b327e32577211817231c63fbbac2b2bf90083ccca6ff86d5132e81978398313ac9f2ea125536bbc0a9772f00f9fde7856d4d3b43850727353c10344f7f4e191f96d14d87425374692c5f701cf547d70e4ddbc2beaf5d9ff2380d030e724b46e0b9914a2fcab2700ae167d6ef650f1768c695f2515c84550f6e5b14bb17ffd5801a84b010f0466b0c27d401f15ea023e45270617fe11609ea2c8e612dff60cf9ab86b3c5dbe25bb5505615adb51c2691bc13dba97aeb1aa37c98014eac57102c6ef4ce2b7171c420cec8ba8161a3843fed7fb4a32c5d3eb2a6b5ce0e0adf4ea7f2db1b09cf1b1e82d76eabf810da58a4bacfbacd41b12b477e4683eab18a4b12aa73d5c53f43568f831e4d11a847181f97a42d71db696c9a73812a101a86bf332f907e4b091187e1476f21460bbd169c24c62cf3f52361c6aeb4654f8d8761e3bf37dca1f9b4e7329c6d05abc0b7d572d7a2fe0766da072df447e893c80fb205e3c66b9afa1d90cf326c681c0f257591ca7ae56333a728fb1d4de8dddaf5977b486013112cfe60059ff267dfe37d91093bc262970dcc038063039d6b1fc3fb7d388f8ea166700ec7db963c1e760163afe24eb4618eefcd62b4e7570b1aec0cda2fc1204525bddb609c0570f6cb4bac7c76357ee3e395baebdb66416cd3f90816c72dc1a798c0912fe180b43b327390b157ca9ee5e8c67bd6386b32d2a82884748d39a871d4c5718b39718b53fb37e94089395cc3b6b9171b36a2d820379f530fb9d93bc129d67d97b1f883970cc3d6f6e5d71c2c07633949f8b71542567bda1c10c33bad21f78732820237211c471eb612aa717fbabfb5266a587de270fceb5885a583b7a5bd89b6dccec8426339694157e579abcaaede67153895f8fbc67efb395c676d59dcc0f1a8265c4dfb49ceddf704b17659b6330d754c2b1080871bba9df275234988dae2fe5e0a3c3eae10ec2f3cb97f079152d979bbc3d33ca8f91bf8e039b0f1e7c9dbcb8a92b4008c3e0eda399ba864fbd6f35c40b6c4d9fad0ac0ce0c20f1027c7205ceea4ec9c7aa6ce55d295682fcee00a0e46d615a38747f176341e6c99a955e99417cdce20db8d509a174625556093df9df7ac4a054895f5331236a17efb8f72c9ae22e879631f7bb223edcf7535dbecef5e6eff18e2e90299eb5b64463283490282c115e0894cbd46cab5b5b511ff02ed8d8f9d250e567d596db2642ed82b0280bba905c15c48b90d1963d901875ff46421fc6d8715e62764736d932bb93311a6e5daeea6c37b875cd77937afb05e3bf5bb476cb23a245d93a6c6ef132358dc5437ec8855e04d7260c5f066bb28eb8b2182d90d9b1eed6bacd1de895e461755be6c42ba2961602441e57cf2d575e883db5154ad960cc0992df1b04f22f166567d58955be99ac6814628616dd591d7648a337b170e95c33f464a5570de83b12c7ad44ff1e306731568168195ecba12d2f68e264bb4bc7d3e33795209f404bd860ff428ffb8792c821d79b78dccfa0cfc53045972ad469cdbbdf309e3a6642662f597f2017595cf5a2ab0fd2ee895ff3211937dae359b7758be772392810f7184fc9969025683f2bdf81b135082e2c36dfaae2901a608b8d13c23b2b397929637d95311c4acd9a44f7b800a5a77c0d9d6c04fe59d32b7f4d3732702e3dbc242866b6e28954ddbfa60c02383d2ca22b1d24693f6a9f3c13e65bfa9fae4c790f26d49534792490a5555ebf6eddbc4ae14f7ae621fe9ccc22c67d30581076b03e25bfa966ee76714b8c409b3fddd1e3b19f29f6c711aeb2fc1328bd5a0c13271182cd489f3a4a462a81a1156f0384105c2629aa851419dbfa768f5694ca2efbc735807dad8a91c3125ce02278e42f2036f8e301b5b4cf6ee528f7d115df3ef08f332dca8265e6b99e44a5b342815df0579c5b7d69116dc6fed48a1862051007f9a69b5e9e73e173e559735b5709e1cbf872a615fb2916bf985a5f2c515fc42050f34e55a63dd05f523f9e92fe946fcace60e4349486fe2ea9e2abde547d819ef2291e453f152a1224827b3adacacb12e4d4e08119c3a5732423195d9d3fd7455177b41bf1fd9f156fe512443290ab5d70447fa71b8b363d94330d23c7d025645b344f32727b0543dd14da9b3639f7972e32bfa51fbac2af731681b58aa3a7b554ea2a4b9a969de48fcd9d0cc0ce961baddb66f544d2442f30e51497cb32ae1c53667a4dbe14565df9e19071c7f9db26fa3b5cea21782b929f365279115871efb1eaab26234b92350a08299361c4753aeee33144c4374422f4af5c5ee3bec5500ddcc986554fa258a3016cd3c211f40ff89f05f4a8ad6293042b6a2c1e5237fd505b0026168db6352feebf9f6b91a08ded2d5864320089869d3b5126cabc6bd202f81739ac5e954c944c15e1599ec27ebf20053de8d35b49c1e8503a05fc5114ccd8bf63b8548d36d2dd7e8b4f8a99b1adb03dac6a177c9c8d534c17249458e58c66f36a981b162ea612b09cdf6feac615ebe6acf2a9db7a5eb6d01a2ccaf098fbeb52b3df49e37b4005f875082c18bd4adbf4eb74ad537ebb1b50c4a25be818623c64ab3f20f2aa4b5e7b8f54a7412478c7e142fec0fa521597ac2d2ae06d488072dafb4d153585981bb9830e82d82fa1fc47804986d5bca7d5d43d74bafe495da18248fe7852d7a21b65dbe0f14ecc4e1c93d124e05c1cabfae9208a7bff904d8934d58a28d7db4b5ac76105d56702be3de429b3f6177d1a2745c1a159c96d18d6563dc3e98fb10ca61f963981b9aee57309d88816c178d753e97975ac03446c9cb744ba7d8a0773c8637969b2010d8ba039ca17d33862dd0da4b6d536f7bf318ed7c8decb6513e3491fed2583b71b8202d6f50d3aa2b9c579af142b34768343e7196fa652ded03d798173018171d48b26c23bd22987f4aa8a37673ef6f76b87809556c34ac850429d8c6a3ed8cbc156030731f5fa24561f69b8564a34550ada62edd6bec7caffcfee003d37a539e2cf6868ca455523f49ff29c08d8c75b8a236416c757edd7f0edef4b01805d0fc85d0d869f08c97adf7644577231f2907c5ac109e3387c5e9b04b65314ca3530f4620f024a85a7b0674d9a6f3732d835f13ef0a77d308d4080255cd575bd97ce08ac2f6fc1011b6b33aa14af7852c92d39f8adb12da41d0bacb90acd020d5002f61fe7a7cd48810d15bb7b7a22d86d2d76627f0796b8db93b8e81161f41ee62cf9622b175f7a9ccdc7b137b6722be3ce839325a7418bc2814f729d9cd2bf2b6ea01e04159e3d42070bfa9f1c766497e1aaad62d774921244ed6280b4f2d3ad8bbf3093cc3219092dbcff2f47e202fb078dcb4ee53068c2affaab00c518c35fc340861cb7573d3e92280bc792c65d29d4740e0ebf82051fd11cb0295fd9163b9518ef56045d372ef8764b2897a56167b9f29b042a47ec8b3e68ee690b62668f2e4214faed1f9b60ca401c8008cefd5266fc905532f5f69288ed27785a630a2ebe360970d40c6ac26fa0345228292e24f3ce55ceee3f795a73a77454123f4eaa7384db80127f89c3cd87d2e761e58ae41401bfbc910caefe356529a35f9ee71c0639510880a42eedccd31748cb1f3918c197b7be239ebcee660cd11e59fd1db91014814b7aa5956660ee48036db62ce9d400b8d75c5041bfee715ca6ecb0ca08c238bd4c73b97ed3f92daedc54a3aaa3f0b7903fdeed17c93b447818950eb63e5209ed65cfcf184267a63146cac86806e36e683e28f15b10c956c659ed0da1d8658d303a2dc1096152d6ba0b25e92f26b7a3a6bfa21fec5d193cae0f74d6a100af0494a9d702d870a60c90f5c177c3ee0f34b91540501e344b00fce43a11810f89bbb17cb2e7a9349ae00b2c136804570ba8f32249c28217dcd20a8420ad7ba2605e178056220aa7e01c73e954dd4b230d85d06797875043674a99fc03a9bd05466a61211be9276cc308b89f39800333e0a6dd214461cbb77380939ae3f56ff0b983a6ee134999f3d4ba0a7464ec1893b2b3f0f85e265e8c1068104e686527e15f25a9989ae15a84e6b7696986b647edd69a0e30d995942bc079600d6648530462e2877d7458c37f54d5407e52c02139965bdcd2195d91d054b1ff4400e82904679e43d2a1f4a34f53425b49726d2f868b02e3be7f03af06c50e00fa6613620d6ad2c1cf1e1889924d526020685e7ed382a7d7a6ccab63aafd9e76a1e7764ac7cfda48e2d0dcc865be0be9f4b484f1b971c616a21f525fab9830552ba66ea65379f0472ee9f7de845fc87020d09235948fec86950cc8e9ae166d3e7b087a141763f213e9d42a75d390fefa57f88a27c55d6c3ff16694a60b6040307ff82f538495c3d7366d26357937fd66b7476e2fbfa33525e277f8c5609412a643c7abd9747f97c2145e8476afaf535a7cd271377ffa225fc2197fdd9d4766bd1c3baea648ef2306f901f9cd9173ded7af4c0727327ba5be889c554afa6b332bf74279dfb8ee6df666ef5cc90918e10168291e882bcfe70075e130d381a9b5a7cc33414ecab5224f999da93113d75c36e21881d4efc624ea8f222ee379e82a3eaaf3f6395f0b23bd0ddff3234e151a25a35fee3c1d2d9d9a98a955a88a95565cc8100cb2ea8f1eee78f6e48edd0511c7d24fbcd88bd28e04b03e2caf6f229f38ccbc65ff7b1249b53b53ea862f22409833e7f77e1b0317b4e85d0694d2bccbf302670e6360abe82f5f762c6ca4353b2fef1a195fb42518639225f5c59fa22f67eedee9257264a388ce98718286572bb42539db92b7489a5ef2fecc251fddab4679ab4bba4b6e808665f67c95939459cbd7ffb69433fd5399dd7e0f8db5420885b569f5c505b58bf6f14372dca44b28fbcd581de9c28a44a0ec62ae9730752db602320f9b837f13268f0eafdff6ce0433ff557aff951edab34231f73df957d7e480235b6a8ebd1c0df44ed623b4bbebc3365a6f325a0b7abfa77165c9e4e3f33023a11c4929fda3d36372da5222f8acaede0d0e63011d64eb1cca01f9b981075a5ba665899d4b5d5997af7cae18d6e18999a8ff71933db630716fec1ac422d7d92c8cfe05d959e2603b57ad7c4ad91f05e6a965f4bd5c2c55581a509696859ff7f02f55dc627a7a36dc3005d87868367153f057ea749dc87812c69e7c6317b4d8c2e62c067c9bc50f3b7538f2046bb019c869d532df89b5f9a6918162f5721568ff5c07688f92636443f663202a5392d8c424dffbbc6fb8737272c97f6a6d80a4484556f8b8331a2bf014da44560693be45410e31c095f223339cebc1036b398198f380be4d4da1e023284f24015c1ca135c36e4671aec493ff67a4e83f724f47b070ea3595ec163d37df2ec617785fea06f3f39b3c3526736e2b4134f6426d1744455e43e508a7e262e08804b654190d63bee3c3531f52ab2873401a8ee014ba6bd7351414b63e2e7db0f01ef7e9259261f2b6654e7c0709862998cb620a9575283c2f39ddcd46c2f11631fe07e14625d55e26960cefc52aa70cee2d569adf433363d9e62a99cc9358eba53f57f140413842b21ef69fb5fcb57fae2fa5ccf4ef9cb5ed2d96672f1650a44421839f9350c09e667d5b2aa083810de69281240e0d009ddab848e0f6cccf28201f017ce94e7aefd6f4dec4bac611337e5cc4b95b7a58dfa167982227ecf492737eda5744621e0baf798a348831857bbcd755cf13478574f70c7cb9966ea6f0803db5de5400a0793dafcec8889ac60ebefbd008be630f7335d477a56fd1cee75d841524cbd03d1dba9b34225d6344d3cf646a99157f88808070f0c9323e976aeb5365397484e19ade7fb9e897d3b6cf5da37d61af6537344ecaf24f52df689582682a5151806f4e287e6dec4d749c56cb0d16098a2eaf6279096da349300714862600cc1bcc557bba080876a7ab088dc3c67b0dfb0ce9b48d2dcde20543cc5671836958104806e998d9abc2749468a1d00a4421b60e78d74b38319066dfadfeb9ba20ba7fa73e9570465a66fec267f604f7ce9e853d4425de98b6e80ddb7f5fb07d1a63aba2651fd5da1f3a0e92ebef"
res = exe.call('h', text)
print(res)


报错如下:
Exception in thread Thread-1:
Traceback (most recent call last):
  File "F:\AnacondaEXE\envs\py_STOCK\lib\threading.py", line 980, in _bootstrap_inner
    self.run()
  File "F:\AnacondaEXE\envs\py_STOCK\lib\threading.py", line 917, in run
    self._target(*self._args, **self._kwargs)
  File "F:\AnacondaEXE\envs\py_STOCK\lib\subprocess.py", line 1479, in _readerthread
    buffer.append(fh.read())
UnicodeDecodeError: 'gbk' codec can't decode byte 0xad in position 113: illegal multibyte sequence
Traceback (most recent call last):
  File "D:\app\spiders\JS逆向\K哥爬虫\建筑市场监管平台企业数据\test_1.py", line 7, in <module>
    res = exe.call('h', text)
  File "F:\AnacondaEXE\envs\py_STOCK\lib\site-packages\execjs\_abstract_runtime_context.py", line 37, in call
    return self._call(name, *args)
  File "F:\AnacondaEXE\envs\py_STOCK\lib\site-packages\execjs\_external_runtime.py", line 92, in _call
    return self._eval("{identifier}.apply(this, {args})".format(identifier=identifier, args=args))
  File "F:\AnacondaEXE\envs\py_STOCK\lib\site-packages\execjs\_external_runtime.py", line 78, in _eval
    return self.exec_(code)
  File "F:\AnacondaEXE\envs\py_STOCK\lib\site-packages\execjs\_abstract_runtime_context.py", line 18, in exec_
    return self._exec_(source)
  File "F:\AnacondaEXE\envs\py_STOCK\lib\site-packages\execjs\_external_runtime.py", line 88, in _exec_
    return self._extract_result(output)
  File "F:\AnacondaEXE\envs\py_STOCK\lib\site-packages\execjs\_external_runtime.py", line 156, in _extract_result
    output = output.replace("\r\n", "\n").replace("\r", "\n")
AttributeError: 'NoneType' object has no attribute 'replace'


单独运行js代码的时候是没有报错的, 就是利用python先读取再运行的时候就报错了


然后我又尝试了利用js2py, 可是依然报错, 代码如下:
import js2py
text = "95780ba0943730051dccb5fe3918f9fe1b6f2130681f99d5620c5497aa480f133eba6f8cfd85413ded7cb879780cfee9dddf795a1fbd4e4288e0a943f5f706f7ae315f2b4d76ad62b327e32577211817231c63fbbac2b2bf90083ccca6ff86d5132e81978398313ac9f2ea125536bbc0a9772f00f9fde7856d4d3b43850727353c10344f7f4e191f96d14d87425374692c5f701cf547d70e4ddbc2beaf5d9ff2380d030e724b46e0b9914a2fcab2700ae167d6ef650f1768c695f2515c84550f6e5b14bb17ffd5801a84b010f0466b0c27d401f15ea023e45270617fe11609ea2c8e612dff60cf9ab86b3c5dbe25bb5505615adb51c2691bc13dba97aeb1aa37c98014eac57102c6ef4ce2b7171c420cec8ba8161a3843fed7fb4a32c5d3eb2a6b5ce0e0adf4ea7f2db1b09cf1b1e82d76eabf810da58a4bacfbacd41b12b477e4683eab18a4b12aa73d5c53f43568f831e4d11a847181f97a42d71db696c9a73812a101a86bf332f907e4b091187e1476f21460bbd169c24c62cf3f52361c6aeb4654f8d8761e3bf37dca1f9b4e7329c6d05abc0b7d572d7a2fe0766da072df447e893c80fb205e3c66b9afa1d90cf326c681c0f257591ca7ae56333a728fb1d4de8dddaf5977b486013112cfe60059ff267dfe37d91093bc262970dcc038063039d6b1fc3fb7d388f8ea166700ec7db963c1e760163afe24eb4618eefcd62b4e7570b1aec0cda2fc1204525bddb609c0570f6cb4bac7c76357ee3e395baebdb66416cd3f90816c72dc1a798c0912fe180b43b327390b157ca9ee5e8c67bd6386b32d2a82884748d39a871d4c5718b39718b53fb37e94089395cc3b6b9171b36a2d820379f530fb9d93bc129d67d97b1f883970cc3d6f6e5d71c2c07633949f8b71542567bda1c10c33bad21f78732820237211c471eb612aa717fbabfb5266a587de270fceb5885a583b7a5bd89b6dccec8426339694157e579abcaaede67153895f8fbc67efb395c676d59dcc0f1a8265c4dfb49ceddf704b17659b6330d754c2b1080871bba9df275234988dae2fe5e0a3c3eae10ec2f3cb97f079152d979bbc3d33ca8f91bf8e039b0f1e7c9dbcb8a92b4008c3e0eda399ba864fbd6f35c40b6c4d9fad0ac0ce0c20f1027c7205ceea4ec9c7aa6ce55d295682fcee00a0e46d615a38747f176341e6c99a955e99417cdce20db8d509a174625556093df9df7ac4a054895f5331236a17efb8f72c9ae22e879631f7bb223edcf7535dbecef5e6eff18e2e90299eb5b64463283490282c115e0894cbd46cab5b5b511ff02ed8d8f9d250e567d596db2642ed82b0280bba905c15c48b90d1963d901875ff46421fc6d8715e62764736d932bb93311a6e5daeea6c37b875cd77937afb05e3bf5bb476cb23a245d93a6c6ef132358dc5437ec8855e04d7260c5f066bb28eb8b2182d90d9b1eed6bacd1de895e461755be6c42ba2961602441e57cf2d575e883db5154ad960cc0992df1b04f22f166567d58955be99ac6814628616dd591d7648a337b170e95c33f464a5570de83b12c7ad44ff1e306731568168195ecba12d2f68e264bb4bc7d3e33795209f404bd860ff428ffb8792c821d79b78dccfa0cfc53045972ad469cdbbdf309e3a6642662f597f2017595cf5a2ab0fd2ee895ff3211937dae359b7758be772392810f7184fc9969025683f2bdf81b135082e2c36dfaae2901a608b8d13c23b2b397929637d95311c4acd9a44f7b800a5a77c0d9d6c04fe59d32b7f4d3732702e3dbc242866b6e28954ddbfa60c02383d2ca22b1d24693f6a9f3c13e65bfa9fae4c790f26d49534792490a5555ebf6eddbc4ae14f7ae621fe9ccc22c67d30581076b03e25bfa966ee76714b8c409b3fddd1e3b19f29f6c711aeb2fc1328bd5a0c13271182cd489f3a4a462a81a1156f0384105c2629aa851419dbfa768f5694ca2efbc735807dad8a91c3125ce02278e42f2036f8e301b5b4cf6ee528f7d115df3ef08f332dca8265e6b99e44a5b342815df0579c5b7d69116dc6fed48a1862051007f9a69b5e9e73e173e559735b5709e1cbf872a615fb2916bf985a5f2c515fc42050f34e55a63dd05f523f9e92fe946fcace60e4349486fe2ea9e2abde547d819ef2291e453f152a1224827b3adacacb12e4d4e08119c3a5732423195d9d3fd7455177b41bf1fd9f156fe512443290ab5d70447fa71b8b363d94330d23c7d025645b344f32727b0543dd14da9b3639f7972e32bfa51fbac2af731681b58aa3a7b554ea2a4b9a969de48fcd9d0cc0ce961baddb66f544d2442f30e51497cb32ae1c53667a4dbe14565df9e19071c7f9db26fa3b5cea21782b929f365279115871efb1eaab26234b92350a08299361c4753aeee33144c4374422f4af5c5ee3bec5500ddcc986554fa258a3016cd3c211f40ff89f05f4a8ad6293042b6a2c1e5237fd505b0026168db6352feebf9f6b91a08ded2d5864320089869d3b5126cabc6bd202f81739ac5e954c944c15e1599ec27ebf20053de8d35b49c1e8503a05fc5114ccd8bf63b8548d36d2dd7e8b4f8a99b1adb03dac6a177c9c8d534c17249458e58c66f36a981b162ea612b09cdf6feac615ebe6acf2a9db7a5eb6d01a2ccaf098fbeb52b3df49e37b4005f875082c18bd4adbf4eb74ad537ebb1b50c4a25be818623c64ab3f20f2aa4b5e7b8f54a7412478c7e142fec0fa521597ac2d2ae06d488072dafb4d153585981bb9830e82d82fa1fc47804986d5bca7d5d43d74bafe495da18248fe7852d7a21b65dbe0f14ecc4e1c93d124e05c1cabfae9208a7bff904d8934d58a28d7db4b5ac76105d56702be3de429b3f6177d1a2745c1a159c96d18d6563dc3e98fb10ca61f963981b9aee57309d88816c178d753e97975ac03446c9cb744ba7d8a0773c8637969b2010d8ba039ca17d33862dd0da4b6d536f7bf318ed7c8decb6513e3491fed2583b71b8202d6f50d3aa2b9c579af142b34768343e7196fa652ded03d798173018171d48b26c23bd22987f4aa8a37673ef6f76b87809556c34ac850429d8c6a3ed8cbc156030731f5fa24561f69b8564a34550ada62edd6bec7caffcfee003d37a539e2cf6868ca455523f49ff29c08d8c75b8a236416c757edd7f0edef4b01805d0fc85d0d869f08c97adf7644577231f2907c5ac109e3387c5e9b04b65314ca3530f4620f024a85a7b0674d9a6f3732d835f13ef0a77d308d4080255cd575bd97ce08ac2f6fc1011b6b33aa14af7852c92d39f8adb12da41d0bacb90acd020d5002f61fe7a7cd48810d15bb7b7a22d86d2d76627f0796b8db93b8e81161f41ee62cf9622b175f7a9ccdc7b137b6722be3ce839325a7418bc2814f729d9cd2bf2b6ea01e04159e3d42070bfa9f1c766497e1aaad62d774921244ed6280b4f2d3ad8bbf3093cc3219092dbcff2f47e202fb078dcb4ee53068c2affaab00c518c35fc340861cb7573d3e92280bc792c65d29d4740e0ebf82051fd11cb0295fd9163b9518ef56045d372ef8764b2897a56167b9f29b042a47ec8b3e68ee690b62668f2e4214faed1f9b60ca401c8008cefd5266fc905532f5f69288ed27785a630a2ebe360970d40c6ac26fa0345228292e24f3ce55ceee3f795a73a77454123f4eaa7384db80127f89c3cd87d2e761e58ae41401bfbc910caefe356529a35f9ee71c0639510880a42eedccd31748cb1f3918c197b7be239ebcee660cd11e59fd1db91014814b7aa5956660ee48036db62ce9d400b8d75c5041bfee715ca6ecb0ca08c238bd4c73b97ed3f92daedc54a3aaa3f0b7903fdeed17c93b447818950eb63e5209ed65cfcf184267a63146cac86806e36e683e28f15b10c956c659ed0da1d8658d303a2dc1096152d6ba0b25e92f26b7a3a6bfa21fec5d193cae0f74d6a100af0494a9d702d870a60c90f5c177c3ee0f34b91540501e344b00fce43a11810f89bbb17cb2e7a9349ae00b2c136804570ba8f32249c28217dcd20a8420ad7ba2605e178056220aa7e01c73e954dd4b230d85d06797875043674a99fc03a9bd05466a61211be9276cc308b89f39800333e0a6dd214461cbb77380939ae3f56ff0b983a6ee134999f3d4ba0a7464ec1893b2b3f0f85e265e8c1068104e686527e15f25a9989ae15a84e6b7696986b647edd69a0e30d995942bc079600d6648530462e2877d7458c37f54d5407e52c02139965bdcd2195d91d054b1ff4400e82904679e43d2a1f4a34f53425b49726d2f868b02e3be7f03af06c50e00fa6613620d6ad2c1cf1e1889924d526020685e7ed382a7d7a6ccab63aafd9e76a1e7764ac7cfda48e2d0dcc865be0be9f4b484f1b971c616a21f525fab9830552ba66ea65379f0472ee9f7de845fc87020d09235948fec86950cc8e9ae166d3e7b087a141763f213e9d42a75d390fefa57f88a27c55d6c3ff16694a60b6040307ff82f538495c3d7366d26357937fd66b7476e2fbfa33525e277f8c5609412a643c7abd9747f97c2145e8476afaf535a7cd271377ffa225fc2197fdd9d4766bd1c3baea648ef2306f901f9cd9173ded7af4c0727327ba5be889c554afa6b332bf74279dfb8ee6df666ef5cc90918e10168291e882bcfe70075e130d381a9b5a7cc33414ecab5224f999da93113d75c36e21881d4efc624ea8f222ee379e82a3eaaf3f6395f0b23bd0ddff3234e151a25a35fee3c1d2d9d9a98a955a88a95565cc8100cb2ea8f1eee78f6e48edd0511c7d24fbcd88bd28e04b03e2caf6f229f38ccbc65ff7b1249b53b53ea862f22409833e7f77e1b0317b4e85d0694d2bccbf302670e6360abe82f5f762c6ca4353b2fef1a195fb42518639225f5c59fa22f67eedee9257264a388ce98718286572bb42539db92b7489a5ef2fecc251fddab4679ab4bba4b6e808665f67c95939459cbd7ffb69433fd5399dd7e0f8db5420885b569f5c505b58bf6f14372dca44b28fbcd581de9c28a44a0ec62ae9730752db602320f9b837f13268f0eafdff6ce0433ff557aff951edab34231f73df957d7e480235b6a8ebd1c0df44ed623b4bbebc3365a6f325a0b7abfa77165c9e4e3f33023a11c4929fda3d36372da5222f8acaede0d0e63011d64eb1cca01f9b981075a5ba665899d4b5d5997af7cae18d6e18999a8ff71933db630716fec1ac422d7d92c8cfe05d959e2603b57ad7c4ad91f05e6a965f4bd5c2c55581a509696859ff7f02f55dc627a7a36dc3005d87868367153f057ea749dc87812c69e7c6317b4d8c2e62c067c9bc50f3b7538f2046bb019c869d532df89b5f9a6918162f5721568ff5c07688f92636443f663202a5392d8c424dffbbc6fb8737272c97f6a6d80a4484556f8b8331a2bf014da44560693be45410e31c095f223339cebc1036b398198f380be4d4da1e023284f24015c1ca135c36e4671aec493ff67a4e83f724f47b070ea3595ec163d37df2ec617785fea06f3f39b3c3526736e2b4134f6426d1744455e43e508a7e262e08804b654190d63bee3c3531f52ab2873401a8ee014ba6bd7351414b63e2e7db0f01ef7e9259261f2b6654e7c0709862998cb620a9575283c2f39ddcd46c2f11631fe07e14625d55e26960cefc52aa70cee2d569adf433363d9e62a99cc9358eba53f57f140413842b21ef69fb5fcb57fae2fa5ccf4ef9cb5ed2d96672f1650a44421839f9350c09e667d5b2aa083810de69281240e0d009ddab848e0f6cccf28201f017ce94e7aefd6f4dec4bac611337e5cc4b95b7a58dfa167982227ecf492737eda5744621e0baf798a348831857bbcd755cf13478574f70c7cb9966ea6f0803db5de5400a0793dafcec8889ac60ebefbd008be630f7335d477a56fd1cee75d841524cbd03d1dba9b34225d6344d3cf646a99157f88808070f0c9323e976aeb5365397484e19ade7fb9e897d3b6cf5da37d61af6537344ecaf24f52df689582682a5151806f4e287e6dec4d749c56cb0d16098a2eaf6279096da349300714862600cc1bcc557bba080876a7ab088dc3c67b0dfb0ce9b48d2dcde20543cc5671836958104806e998d9abc2749468a1d00a4421b60e78d74b38319066dfadfeb9ba20ba7fa73e9570465a66fec267f604f7ce9e853d4425de98b6e80ddb7f5fb07d1a63aba2651fd5da1f3a0e92ebef"
js_data = """
var CryptoJS = require('crypto-js')

function h(t) {
    var e = CryptoJS.enc.Hex.parse(t)
        , f = CryptoJS.enc.Utf8.parse("jo8j9wGw%6HbxfFn")
        , m = CryptoJS.enc.Utf8.parse("0123456789ABCDEF")
        , n = CryptoJS.enc.Base64.stringify(e)
        , a = CryptoJS.AES.decrypt(n, f, {
            iv: m,
            mode: CryptoJS.mode.CBC,
            padding: CryptoJS.pad.Pkcs7
        })
        , r = a.toString(CryptoJS.enc.Utf8);
    return r.toString()
}
"""
js = js2py.EvalJs()
js.execute(js_data)
print(js.h(text))

报错如下:
Traceback (most recent call last):
  File "D:\app\spiders\JS逆向\K哥爬虫\建筑市场监管平台企业数据\test_1.py", line 31, in <module>
    js.execute(js_data)
  File "F:\AnacondaEXE\envs\py_STOCK\lib\site-packages\js2py\evaljs.py", line 199, in execute
    exec (compiled, self._context)
  File "<EvalJS snippet>", line 15, in <module>
  File "F:\AnacondaEXE\envs\py_STOCK\lib\site-packages\js2py\base.py", line 1158, in get
    raise MakeError('ReferenceError', '%s is not defined' % prop)
js2py.internals.simplex.JsException: ReferenceError: require is not defined


我知道可以利用python的Cryptodome库可以直接把JS代码改写成python,但是不想用这种方法解决, 想通过读取JS代码的方式运行出结果, 因为遇到过于复杂的情况毕竟改写起来不太现实
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-2-22 22:36:47 | 显示全部楼层
这是干啥……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-23 09:58:21 | 显示全部楼层
require  不是NODEJS里面的东东吗  这不是原生js代码  execjs 解析不了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-24 13:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表