Python调用Js脚本方法

4 篇文章 1 订阅
订阅专栏
本文介绍了如何使用Python的execjs库调用JavaScript加密函数,解决网络爬虫中遇到的前端加密问题。首先安装execjs并编写包含加密函数的JS文件,然后在Python中编译和调用该函数,确保安装必要的依赖如CryptoJS。
摘要由CSDN通过智能技术生成
Python调用Js脚本方法

当我们进行网络爬虫的时候,遇到前端加密函数,而自己不想花费太多时间或者没法重写这个函数时,我们可以直接使用Python执行Js函数来解决这个问题。

主要使用的库函数是:execjs

1.安装库函数execjs

pip install execjs -i http://mirrors.sohu.com/Python/

2.以我遇到的例子为例

在这里插入图片描述

可以发现前端使用了加密函数,如果能找到Pthon实现的这个加密函数,可以直接调用相关的API,或者有能力的自己实现这个加密函数。否则,就在Python里面编译js代码

3.创建一个Js文件encrypt.js,内容如下(直接复制的),然后加上这个库函数的定义:

function encrypt(word) {
    const CryptoJS = require('crypto-js');
    var key = CryptoJS.enc.Utf8.parse("xiamenair1234567");
    var srcs = CryptoJS.enc.Utf8.parse(word);
    var encrypted = CryptoJS.AES.encrypt(srcs, key, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 });
    return encrypted.toString();
};

在python里面调用js脚本

import execjs
import json


def encrypt(t):
    node = execjs.get()
    ctx = node.compile(open('js/encrypt.js', encoding='utf-8', ).read(), )
    cnonce = ctx.call('encrypt', t)
    return cnonce

直接运行,发现报错!!是因为本地没有crypto-js这个库函数,因此我们需要本地安装这个库

在这里插入图片描述

因此,我们需要装一下这个库

两种方法,在当前环境下载这个库,或者全局下载,然后再compile里面指定路径。

第一种方法:

npm install crypto-js --save //当前项目下

在这里插入图片描述

此时node可以直接找到这个库

第二种方法:

全局下载,然后使用cmd参数指定文件的路径就行。

3.调用,再次执行

def encrypt(t):
    node = execjs.get()
    ctx = node.compile(open('js/encrypt.js', encoding='utf-8', ).read(), )
    cnonce = ctx.call('encrypt', t)
    return cnonce


account = encrypt("19723876319")
password = encrypt("zhxdxw123")
print(account,password)

在这里插入图片描述

成功解决,以后遇到相似的问题,只需要将对应的Js代码复制过来,然后修改相应的参数就行!!

python execjs详解_Python基于execjs运行js过程解析
weixin_36322275的博客
02-09 9172
execjs 使用有了selenium+Chrome Headless 加载页面为什么还要用execjs来运行js?selenium+Chrome Headless 必然是爬虫的一大利器,可是缺点依然存在, 性能问题不可忽视。但这构不成舍弃它而不用的理由。我认为舍弃包括Chrome Headless、PhantomJS在内的无头浏览器的原因主要有以下几点:1. 页面结构改变、弹窗(一些网站的页面结...
python调用vbs脚本_xShell终端调用VBS脚本 使用方法说明
weixin_39640849的博客
12-13 1202
调用方法】1、先编写 VBS 脚本。比如我们要让 xShell 在目标设备需要确认时自动输入 y ,可以像下面这样编写脚本:Sub mainxsh.Screen.Synchronous = True ' 使窗口显示与当前输出同步xsh.Screen.WaitForString "Reboot now? (y/n)" ' 等待目标设备发回 "Reboot now? (y/n)" 字符串...
Python 调用 JS 常用的4种方式,带你学会如何解密
m0_72282564的博客
10-15 783
嗨喽,大家好呀~这里是爱看美女的茜茜呐日常 Web 端爬虫过程中,经常会遇到参数被加密的场景,因此,我们需要分析网页源代码通过调式,一层层剥离出关键的 JS 代码,使用 Python 去执行这段代码,得出参数加密前后的 Python 实现本文将聊聊利用 Python 调用 JS 的4种方式。
python运行jsexecjs基本使用
最新发布
qq_56679246的博客
08-04 392
现在大部分网站都使用JS加密和JS加载的情况,数据并不能直接被抓取出来,这时候就需要使用第三方类库来执行JS语句。官网:https://pypi.org/project/PyExecJS/使用前提:电脑需要安装。
解决PyExecJS无法安装的问题
is_Only_Me的博客
03-20 1513
我们需要在Python中执行一些JavaScript代码时,就可能需要使用到execjs模块。本文将使用两种方法进行安装execjs模块,并提供相应的代码示例。
pip install execjs报错
longe20111104的博客
08-27 5544
pip install execjs报错: Could not find a version that satisfies the requirement execjs (from versions: ) No matching distribution found for execjs 解决办法: pip install PyExecJS
python执行js代码进行aes加解密以及python代码与前端交互加解密
贵有恒,何必三更眠五更起;最无益,只怕一日曝十日寒
02-23 3834
在前后端交互的过程中,基于安全考虑,往往需要对某些数据进行加密传输,我们以传输密码为例: 如果密码明文传输的话,有被截取的风险,因此我们可以考虑采取rsa加密或者aes加密的方式,本文采用aes加密的方法进行传输。aes加解密,前后端要商定好一致的密钥 一、python调用js代码加解密 前端js代码如下: const CryptoJS = require('crypto-js'); //引用AES源码js const key = CryptoJS.enc.Utf8.parse("eeeeee
Python调用JavaScript代码的方法
12-16
以一段简单的JS脚本为例,将代码写入到文件中,其中,定义了一个方法,计算两个数的和。 //norm.js //计算两个数的和 function add(num1, num2) {  return num1 + num2; } 方法一、PyExecJS PyExecJS 是使用...
Python 调用 JS 的4种方式
hdxx2022的博客
10-17 4489
日常 Web 端爬虫过程中,经常会遇到参数被加密的场景,因此,我们需要分析网页源代码通过调式,一层层剥离出关键的 JS 代码,使用 Python 去执行这段代码,得出参数加密前后的 Python 实现本文将聊聊利用 Python 调用 JS 的4种方式上面总结了 Python 调用 JS 的 4 种方式实际爬虫项目中,一般会先使用 node 命令进行一次测试,确保没问题后,再使用前 3 种方式的任意一种进行 Python 改写。微点阅读。
flask 调用python脚本_用flask调用python脚本:最好的方法是什么?
weixin_31297157的博客
01-13 2488
我对Flask相当陌生,因此我对代码背后的逻辑以及我的思维过程是否有意义有疑问。我有一个旧的python脚本,该脚本需要大量数据,对其进行处理,然后使用matplotlib生成图。这很好。现在,我想构建一个Web应用程序,在该应用程序中,用户选择特定的输入参数,单击“提交”按钮,我的服务器(在sqlite的帮助下)检查是否已经存在绘图/使用这些参数进行绘图的数据,如果是的,然后使其可供用户下载。如...
electron-python:使用电子调用python脚本
05-25
使用电子调用python脚本。 这是有关如何使用电子应用程序调用python脚本的示例。 依存关系 该应用程序未将python安装为依赖项。 在运行该应用程序之前,应预装python&env。 指示 克隆或下载存储库。 在项目目录中...
python模块之PyExecJS 执行js代码
局外人LZ的博客
11-14 718
PyExecJS是一个Python库,它提供了一种在Python中执行JavaScript代码的方式。它基于ExecJS库,可以使用多个JavaScript运行时(如Node.js、PhantomJSJScript等)来执行JavaScript代码。使用PyExecJS,您可以在Python环境中执行JavaScript代码,从而利用JavaScript的功能和库。
python 爬虫调用 js 的库之 execjs
caribbean666的博客
08-30 6159
针对现在大部分的网站都是使用 js 加密,js 加载的,并不能直接抓取出来,这时候就不得不使用一些三方类库来执行 js 语句。
Python调用PyExecJS库运行JavaScript
XerCis的博客
07-15 2427
PyExecJS是从Ruby移植来的ExecJS,自动选择最佳运行环境来执行JavaScript程序。缺点是慢且不完全支持运行环境特性
Python 执行Javascript脚本
heiwa110的博客
05-30 409
一、安装第三方库 pip install PyExecJS 二、创建一个js文件 //test.js function add(a,b){ return a+b } 三、创建一个python文件 #testJs.py import execjs ctx = execjs.compile(open('./test.js', 'r', encoding='utf-8').read()) p...
Day 29 29.1 PyExecJS的安装
Chimengmeng的博客
04-28 973
PyExecJS模块 pyexecjs是一个可以帮助我们运行js代码的一个第三方模块 其使用是非常容易上手的. 但是它的运行是要依赖能运行js的第三方环境的 这里我们选择用node作为我们运行js的位置. 【1】 安装Nodejs 切记. 重启pycharm或者重启电脑. 【2】 安装pyexecjs pip install pyexecjs 测试一下: ...
python爬虫-execjs使用
weixin_33743248的博客
04-27 1223
python爬虫-execjs使用 ecexjs的作用 通过python代码去执行JavaScript代码的库 execjs的安装 pip install PyExecJS execjs使用之前,得先安装node环境,去网上先去下载node.js 使用代码 import execjs with open("./test.js","rb") as f: js_code = f.read(...
Python中使用execjs执行JavaScript代码:方法与常见错误解决方案
热门推荐
前端驰骋,技艺飞升,奇遇尽在其中!
08-01 1万+
Python开发中,与JavaScript代码进行交互是一种常见需求,而execjs是一个流行的库,用于在Python中执行JavaScript代码。本博客将详细介绍如何在Python中使用execjs来执行JavaScript代码,并探讨与该过程相关的常见问题和错误。我们将深入研究每种错误的原因,为读者提供解决方案和示例代码,帮助您更好地理解和解决类似的问题。
python调用js脚本
06-08
可以使用Python的`execjs`库来调用JavaScript脚本。以下是一个简单的例子: 首先,需要安装`execjs`库。可以使用以下命令: ``` pip install PyExecJS ``` 然后,可以使用以下代码来调用JavaScript脚本: ```python import execjs # JavaScript代码 js_code = """ function add(x, y) { return x + y; } """ # 执行JavaScript代码 ctx = execjs.compile(js_code) result = ctx.call("add", 1, 2) print(result) # 输出 3 ``` 在这个例子中,我们定义了一个简单的JavaScript函数`add`,然后使用`execjs.compile`方法将它编译成一个可执行的上下文。最后,我们使用`ctx.call`方法调用这个函数,并传入两个参数1和2,得到结果3。 如果需要调用外部的JavaScript文件,可以使用以下代码: ```python import execjs # 读取JavaScript文件 with open("example.js", "r") as f: js_code = f.read() # 执行JavaScript代码 ctx = execjs.compile(js_code) result = ctx.call("add", 1, 2) print(result) # 输出 3 ``` 在这个例子中,我们通过`open`函数读取了一个名为`example.js`的JavaScript文件,然后使用`execjs.compile`方法编译它,并调用其中的函数`add`。
7
原创
58
点赞
159
收藏
36
粉丝
关注
私信
写文章

热门文章

  • 爬取掌上高考(招生计划) 3724
  • 爬取深圳航空 2254
  • 企业级爬虫小项目 985
  • Anconda+Pycharm+Centos云部署 511
  • Python调用Js脚本方法 324

分类专栏

  • Python基础知识 1篇
  • 网络爬虫 4篇
  • 数据库 1篇

最新评论

  • Anconda+Pycharm+Centos云部署

    CSDN-Ada助手: 不知道 Python入门 技能树是否可以帮到你:https://edu.csdn.net/skill/python?utm_source=AI_act_python

  • 爬取掌上高考(招生计划)

    江枫渔火A: 非常好文章

  • 爬取掌上高考(招生计划)

    Eurus_King: 你好,如果我想进一步获取每一所学校每一个专业的录取分数线要怎么操作呢?

  • 爬取掌上高考(招生计划)

    moonchildink: 请问local_batch_id参数是什么含义?我发现不同省份涉及到local的这几个参数都不一样

  • 爬取掌上高考(招生计划)

    唔系&: 非常感谢,这一篇博客帮了我大忙

最新文章

  • Anconda+Pycharm+Centos云部署
  • Python推导式
  • 爬取深圳航空
2024年1篇
2023年6篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家苏州玻璃钢雕塑摆件厂家直销东莞黑色玻璃钢花盆河南大型商场美陈价格玻璃钢雕塑维修翻新河南标识玻璃钢景观雕塑定做郑州不锈钢太湖石玻璃钢雕塑定做庆阳玻璃钢动物雕塑价格新密玻璃钢彩绘雕塑生产厂家供应信誉好的玻璃钢花盆广州关公财神玻璃钢雕塑揭阳人物玻璃钢动物雕塑商场通道美陈画面西双版纳玻璃钢雕塑商家泸州成都商场美陈资讯梅州公园摆件玻璃钢雕塑玻璃钢人物不锈钢镂空雕塑小品商场互动美陈张掖玻璃钢雕塑制品厂玻璃钢卡通雕塑设计厂家白银广场玻璃钢雕塑定做广西玻璃钢仿铜雕塑价格临潼玻璃钢雕塑生产厂家盐城椭圆形玻璃钢花盆家用玻璃钢花盆价格合肥景区玻璃钢雕塑江苏玻璃钢雕塑摆件研发临汾玻璃钢海豚雕塑定制包头人物玻璃钢雕塑安装玻璃钢浮雕景观雕塑报价山西户外玻璃钢雕塑方法香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化