关于python爬虫调用js时如何实现debug的骚操作

从零起步 系统入门Python爬虫工程师 学习 教程 爬虫(又被称为网页蜘蛛,网络机器人)就是模拟客户端发送网络请求,接收请求响应,一种按照一定的规则,自动地抓取互联网信息的程序。 原则上,只要是浏览器(客户端)能做的事情,爬虫都能够做。 根据被爬网站的数量的不同,我们把爬虫分为: ⦁ 通用爬虫 :通常指搜索引擎的爬虫 ⦁ 聚焦爬虫 :针对特定网站的爬虫 Robots协议:网站通过Robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取,但它仅仅是道德层面上的约束。 浏览器会主动请求js,css等内容,js会修改页面的内容,js也可以重新发送请求,最后浏 阅读详情
网上有人用了js2py,我自己用了一下,运行太慢了,没有用过pyV8,不做评论,平时主要是用execjs,用着还顺手。
在python爬虫逆向js的时候,由于js代码的复杂性,可能会直接有调用js的情况,这个时候我就选用execjs,但是用这个库,我只能得到js返回的结果,有时候需要debug,就不知道该怎么实现了,例如:
// python_ondejs.js
function add(num1, num2) {
    var num3 = 0
    // console.log(num1, num2)
    num3 = num1 + num2;
    console.log(num3)
    return num3
}
# python_nodejs.py
import execjs


def get_data(args1, args2):
    with open("python_ondejs.js", "r", encoding="utf-8") as f:
        jzsc_code = f.read()
    decrypted_data = execjs.compile(jzsc_code).call("add", args1, args2)
    print(decrypted_data)
    return decrypted_data


if __name__ == '__main__':
    get_data(1, 2)

用python调用的时候,只能获取到 add 返回的值,也就是 num3,这知识简单的一个js函数调用,如果复杂一些,需要像debug那样,查看参数的运行值,也就是js里面的console,该怎么办呢?
这个时候用到了python的另一个库 import subprocess,首先修改 .py 文件

# python_nodejs.py
import subprocess
import execjs


def get_data(args1, args2):
    with open("python_ondejs.js", "r", encoding="utf-8") as f:
        jzsc_code = f.read()
    decrypted_data = execjs.compile(jzsc_code).call("add", args1, args2)
    print(decrypted_data)
    return decrypted_data


if __name__ == '__main__':
    # get_data(1, 2)
    args1 = "1"
    args2 = "2"
    p = subprocess.Popen(['node', './python_ondejs.js', args1, args2], stdout=subprocess.PIPE)
    out = p.stdout.read()
    print('out:', "\n", out)

然后修改 js 的代码:

// python_ondejs.js
function add(num1, num2) {
    var num3 = 0
    // console.log(num1, num2)
    num3 = num1 + num2;
    console.log(num3)
    return num3
}

var num1 = parseInt(process.argv[2]);
var num2 = parseInt(process.argv[3]);
// console.log(num1, num2)
add(num1, num2)

运行就可以看到console的数据了,调试完成之后,用 execjs 调用或传参就行,subprocess 只是用来实现类似 debug 的方式,查看 js 里面的console,不要搞混淆了。

爬虫必备:Python 执行 JS 代码 —— PyExecJS、PyV8、Js2Py 在使用爬虫中,经常会遇到网页请求数据是经过 JS 处理的,特别是模拟登录的时候。而目前绝大部分前端 JS 代码都是经过混淆的,可读性极低,想理解代码逻辑需要花费大量时间。这时不要着急使用 Selenium 暴力解决,毕竟 Selenium 严重拖慢爬虫效率,我们可以尝试使用一些第三方库,来直接执行前端 JS 代码得到处理过后的结果。 选择第三方库 首先我们要选择一个合适的第三方库进行安装,帮助... 阅读详情

相关推荐

Python(爬虫篇)--- 破解加密【一】JS加密破解

“加密”的过程,就是把“明文”变成“密文”的过程。反之:“解密”的过程,就是把“密文” 变为“明文”。网页数据加密的方式有很多种,比如:JS 加密、Base64 加密、CSS 加密等。 下面让我们一起来探讨一下这些加密吧!

Zachary579的博客 6453

python使用execjs对小程序加密js进行解密-(实战篇)(吐血分享)

首先声明: 此次逆向Js只为学习交流使用,切勿用于其他非法用途,关键代码均打码 之前两篇主要是针对把小程序从手机解密出来,通过微信开发者工具打开,运行, 接着前两篇继续往下进行使用python 的execjs模块来破解mryx app 加密代码,分享片段有些是之前分享过的, 如果还在思考这个小程序的代码是怎么来的, 又是怎么在微信开发者工具上运行起来的。可以看 一下之前的分享。 微信小程序找到.wxapkg,并解压使用微信开发工具打开项目进行调试破解破解完成 使用到的环境: Python3.7 exe

qq_38219875的博客 1万+

Python反爬虫的四种常见方式-JS逆向方法论_python爬虫逆向(1)

首先把Chrome浏览器保存的该网站的cookie删除,按F12到Network窗口,把“preserve log”选中(Firefox是“Persist logs”),刷新网页,这样我们就可以看到历史的Network请求记录。其实它就是JS生成的。我们要写爬虫抓某个网页里面的数据,无非是打开网页,看看源代码,如果html里面有我们要的数据,那就简单了。Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

m0_54853787的博客 1103

python如何执行js更快_Python如何执行js代码

Python如何执行js代码python执行js代码可以使用js2py库,具体使用方法如下。1、安装js2py库pipinstalljs2py2、js2py执行单个js语句js2py.eval_js(js代码)3、js2py执行js函数4、执行js文件中的js代码JavaScript代码:functionenString(data){varkey1="YHXWWLKJYXGS";var...

weixin_39785165的博客 351

Python爬虫实现12306火车票查询

昨天早上,突发奇想想要给基友弄一个火车票查询工具,顺便熟悉一下html、json、js格式,为之后制作微信小程序做准备,于是便开始了爬虫的道路。 12306网站想要爬跟之前爬静态网页并不一样,首先由于是一个查询工具,必须要先把网页设置为查询页,才能够爬取网页的信息 打开12306网站 查询北京到上海的火车票看起来网页地址并没有任何变化 这个时候就需要用到浏览器的一...

Ronny_Chan的博客 1万+

Windows(Win10、Win11)本地部署开源大模型保姆级教程

最近开源大模型可谓闹的沸沸扬扬,尤其是Microsoft开源的和Meta开源的llama3 70b,评测都已经接近了的水平。鉴于还有很多同学不会在上部署和使用本地模型,因此我们出一期保姆级教程。本文讲述了如何在上本地部署大模型。从最基础的软件安装到环境配置都进行了截图展示,希望对非计算机的同学也有所帮助。AI时代我们每个人都必须要掌握一些AI知识,相信不断学习的你一定不会被AI淘汰。这只是开始,后面我们还有很多工作要做,尤其是提示词和智能体。

AIGIS的博客 3万+

深入剖析爬虫逆向中浏览器无限debugger解决方案

深入剖析爬虫逆向中浏览器无限deb 2、禁用某处的端点 定位到某一行,鼠标右击选择Never pause here 3、条件断点 此处设置i>6 4、中间人工具替换特征的字符串(fiddler,charles) 5、重写无限debugger关键函数里面没有参杂一些其他逻辑的(在函数执行之前置空重写) 6、(function(){}).constructor === Function是true的浏览器有效(特定浏览器下的特定场景) 出现debugger后,在console选项卡中输入

大壮 1万+

李宏毅机器学习笔记第17周_概述领域自适应(Domain Adaptation)

Domain Adaptation

peaunt1的博客 1101

python的调试技巧

1. print 这是最简单的调试方法,直接显示程序数据。即便是调试Java或者C这种巨麻烦的编译语言,print仍然是常用工具。当然,我们讲的是Python,是比Java和C要方便100倍的动态解释语言,因此这个print就更有力了。 2.使用IDLE的调试器 在“Python Shell”窗口中单击“Debug”菜单中的“Debugger”菜单项,就可以启动IDLE的交互式调试器。这时,

Maryhuan的博客 1827

openEuler服务器离线安装实战:从Docker到Samba的完整避坑指南

本文提供了一份详尽的openEuler服务器离线部署实战指南,重点解决了在无网络环境下安装Docker、Samba等软件的依赖难题。文章深入对比了`dnf install`、`rpm`直接安装及禁用仓库安装三种核心方法,并分享了构建本地DNF仓库的进阶策略,旨在帮助运维人员构建高效可靠的离线部署工作流。

weixin_29210759的博客 71

解决2020R2,2022R1等版本的SCDM无法编辑草图尺寸的问题

解决2020R2,2022R1等版本的SCDM无法编辑草图尺寸的问题

y_u_yu_yu_的博客 1万+

cdp 方式的 python 爬虫

CDP ( Chrome Debugging Protocol ) == Chrome 调试协议,通过 WebSocket 直接控制 Chrome/Chromium,不需要 chromedriver 驱动,可以:渲染 JS、抓接口请求、拦截请求、执行 JS、获取 cookie、截图,适合 SPA、加密接口、反爬站点。

freeking101的博客 1万+

YOLO26改进 - C2PSA | C2PSA融合DiffAttention差分注意力:轻量级差分计算实现高效特征降噪,提升模型抗干扰能力

本文介绍了 DiffCLIP,一种将差分注意力机制集成到 CLIP 架构的视觉 - 语言模型,并将其应用于 YOLO26。差分注意力机制通过计算两个互补注意力分布的差值,抵消无关信息干扰。单头差分注意力将 Q 和 K 拆分,分别计算注意力分布后做差值融合;多头差分注意力则每个头独立执行差分操作后聚合输出。关键参数 λ 可动态调控噪声抵消强度。我们将 DiffAttention 代码集成到 YOLO26 中,替换原有模块。实验表明,改进后的 YOLO26 在图像 - 文本理解任务中表现出色。

魔改工程师的博客 601

Python反爬虫的四种常见方式-JS逆向方法论

因为我们已经在陷阱里面了,所以要刷新页面,JS的运行应该停止在设置的断点处,此时该函数尚未运行,我们在Console里面重新定义它,继续运行就可以跳过该陷阱。首先把Chrome浏览器保存的该网站的cookie删除,按F12到Network窗口,把“preserve log”选中(Firefox是“Persist logs”),刷新网页,这样我们就可以看到历史的Network请求记录。我们要写爬虫抓某个网页里面的数据,无非是打开网页,看看源代码,如果html里面有我们要的数据,那就简单了。

2401_89828751的博客 1377

060、模型蒸馏:把扩散模型压进单步的魔法

《端侧文生图模型蒸馏实战:从32步到1步的优化之道》摘要:针对边缘设备部署难题,本文分享了扩散模型蒸馏的核心经验。通过重构损失函数(感知损失+对抗训练+KL散度)、优化采样轨迹截取策略和改造学生模型架构,成功将Stable Diffusion压缩至单步推理。关键发现包括:小批量训练更有效、标签平滑保障生成多样性、双模型策略平衡质量与速度。在Cortex-A53芯片上实现300ms内生成,内存占用控制在200MB以下。特别强调工业部署需权衡压缩率与稳定性,建议保留迭代模式开关以适配不同场景需求。

2601_95651806的博客 149

Python 爬虫进阶:淘宝热卖商品价格走势抓取、反爬与分析全流程

在大数据时代,数据是商业决策的重要依据。电商平台上的商品价格走势,对于商家调整经营策略、消费者选择购买时机都有着关键的参考价值。本篇文章将深入解析如何利用 Python 爬虫抓取淘宝热卖商品的价格走势数据,并应对其中的反爬机制,最后对数据进行分析,带领大家领略 Python 爬虫在电商领域的强大应用。

yansideyucsdn的博客 1056

python爬虫笔记

python爬虫笔记

weixin_46425661的博客 2738

基于知识图谱的智能工作流引擎

随着大数据和人工智能技术的快速发展,企业和组织对数据的依赖程度日益增加。为了更好地管理和利用这些数据,知识图谱逐渐成为一种重要的工具。知识图谱不仅能够以结构化的方式表示复杂的知识,而且能够通过推理和查询提供深层次的信息。然而,如何将知识图谱应用于实际业务场景中,尤其是如何构建智能工作流引擎,仍然是一个具有挑战性的问题。智能工作流引擎是一种能够自动化执行复杂业务流程的系统,它可以通过对业务规则和数据的分析,自动生成和优化工作流,从而提高工作效率和准确性。

AI天才研究院 1869

QQ音乐JS逆向爬虫,获取调皮的sign参数,我用python全都爬!

爬虫高级必然JS逆向,QQ音乐爬虫就是一个很好的练手,读完学会了直接在你女朋友面前装一手,读完你将收获到,QQ音乐JS逆向,sign参数获取,songmid参数获取,vkey参数获取,selenium自动化解析,用python解析执行js代码。

Blog沙漏在下雨 1万+

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

深入Js2Py:解析纯Python实现的JavaScript虚拟机引擎

🚀 **Js2Py** 是一个纯Python实现的JavaScript到Python翻译器和JavaScript解释器,它让Python开发者能够在Python环境中无缝执行JavaScript代码。这个强大的工具完全用Python编写,支持Python 2和Python 3,并提供对ECMAScript 5.1的完整支持,ECMAScript 6支持目前仍处于实验阶段。 ## 🔥 为什么选

gitblog_00068的博客 524

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

python执行js爬虫_爬虫必备:Python 执行 JS 代码 —— PyExecJS、PyV8、Js2Py

在使用爬虫中,经常会遇到网页请求数据是经过 JS 处理的,特别是模拟登录时可能有加密请求。而目前绝大部分前端 JS 代码都是经过混淆的,可读性极低,想理解代码逻辑需要花费大量时间。这时不要着急使用 Selenium 暴力解决,毕竟 Selenium 严重拖慢爬虫效率,我们可以尝试使用一些第三方库,来直接执行前端 JS 代码得到处理过后的结果。PyExecJS这个库主要是将 JS 代码运行在本地的 ...

weixin_39560207的博客 356

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Python数据关联技术解析:从网络爬虫到逆向工程实战

数据关联匹配是数据处理领域的核心概念,其原理在于通过共同标识符或算法,将来自不同来源的信息进行连接。这项技术的价值在于能够整合碎片化数据,挖掘潜在联系,广泛应用于用户画像分析、社交网络研究和安全风控等场景。在工程实践中,Python凭借其强大的生态库,成为实现数据关联的关键工具,特别是在处理网络爬虫、数据清洗和协议模拟等任务时。本文以技术探讨为出发点,深入剖析了如何运用Python进行网络请求模拟与逆向分析,以及如何设计高效的数据清洗与关联算法,涵盖了从公开信息聚合到复杂协议解析的完整技术路径,为开发者提供

weixin_30458043的博客 316
上一篇: 关于pymysql增删改查的基础模板,拿走直接套用
下一篇: 关于js在pycharm里面补环境window.btoa没有定义的问题
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值