v-jstools插件 - 自动补环境

news2024/9/21 0:43:16

一、为啥要补环境?

我们每次逆向扣完代码存放在 nodejs 上是运行不出结果的,因为缺少浏览器环境特有的一些 window/document/navigator/localstorage 等参数,所以我们需要把这些缺少的浏览器环境补上,让这份js代码在本地nodejs环境下也能运行出结果来。

以下是Node和真实浏览器的差别:
在这里插入图片描述

补环境的基本格式

补环境可以分为三部分,上中下三层。

  • 上层放你需要补的环境参数
  • 中层放你扣好的js代码
  • 下层放生成的目标参数,通过它传递给你的爬虫

补环境的好处就是我们完全不用考虑内部的算法逻辑,让它能正常跑起来输出就行。

结构如图:
在这里插入图片描述

二、v_jstools安装

1、下载地址: https://github.com/cilame/v_jstools

2、下载解压后,打开 chrome://extensions/ , 然后把解压后的文件夹拖进去即可
在这里插入图片描述

把它从插件中取出来固定

在这里插入图片描述

三、测试案例

目标网址:aHR0cHM6Ly9xLjEwanFrYS5jb20uY24v

目标路径如下图:
在这里插入图片描述

操作步骤

1. 扣代码

1、利用hook,将cookie生成的地方找到。在console中输入一下代码,等待一会,会自动跳转到hook的cookie生成处

// 定义 hook 脚本,这样,代码读写cookie的时候,就会断点停下来,方便分析了
Object.defineProperty(document, 'cookie', {
        get: function() {
            debugger;
            return "";
        },
        set: function(value) {
            debugger;
            return value;
        },
});

然后找到右侧的堆栈的方式进行查看,发现cookie实现的 js核心 代码,如图:
在这里插入图片描述
在这里插入图片描述

新建一个js文件,直接将上面js文件所有代码复制下来,其中顶部的可以改成实时的时间更新,如图:
在这里插入图片描述
致辞,中间层扣代码已结束~

2. 利用插件自动补环境

1、配置

1.先点击打开如下两个开关,然后打开配置页面
在这里插入图片描述

2.如下插件配置详情,勾选上总开关,DOM开关,以及常用的挂钩,然后关掉该配置页面即可,如图:

在这里插入图片描述
2. 清掉缓存cookie,方法如图:
在这里插入图片描述
然后刷新网页,在滑动鼠标下滚下,防止无法正常生成临时环境,如下弹出,代表环境参数已经生成好
在这里插入图片描述
在这里插入图片描述

然后我们在刚刚新建的js文件里面ctrl+v粘贴刚刚生成的临时环境,放在最上方即可

在这里插入图片描述

3.填写执行引用

function get_cookiess() {
    console.log(document.cookie);
    cookies = document.cookie.split("; ")[0].split("=")[1];
    return cookies
};

console.log('最终生成的cookie是: ', get_cookiess());

至此,可以正常生成cookie了,但是发现生成完cookie,js一直没有停止,无法中断程序退出的现象,就是run后不能自动停掉程序。

解决方法:可以尝试将setInterval()定时函数给置空,这是因为setinterval不会清除定时器队列,每重复执行1次都会导致定时器叠加,最终卡死你的网页。

在顶部添加这个即可:

setInterval = function () {};

运行代码结果如下:
在这里插入图片描述

把它传给python代码

import requests
import execjs
import lxml
from lxml import etree

url = "https://q.10jqka.com.cn/index/index/board/all/field/zdf/order/desc/page/1/ajax/1/"


with open('D:\Spider_work\自动补全js环境.js', 'r', encoding='utf-8') as f:
    hexin_js = f.read()

cookie = execjs.compile(hexin_js).call('get_cookiess')
print('Js生成最新cookie:', cookie)

payload={}
headers = {
  'Accept': 'text/html, */*; q=0.01',
  'Accept-Language': 'zh-CN,zh;q=0.9',
  'Connection': 'keep-alive',
  'Cookie': 'v={}'.format(cookie),
  'Referer': 'https://q.10jqka.com.cn/',
  'Sec-Fetch-Dest': 'empty',
  'Sec-Fetch-Mode': 'cors',
  'Sec-Fetch-Site': 'same-origin',
  'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36',
  'X-Requested-With': 'XMLHttpRequest',
  'hexin-v': cookie,
  'sec-ch-ua': '"Not.A/Brand";v="8", "Chromium";v="114", "Google Chrome";v="114"',
  'sec-ch-ua-mobile': '?0',
  'sec-ch-ua-platform': '"Windows"'
}

response = requests.request("GET", url, headers=headers, data=payload)
print('----------------------')
html = etree.HTML(response.text)
doc_list = html.xpath("//table//tr")[1:]
for tr in doc_list:
    nums = tr.xpath('./td[1]/text()')[0]
    tds = tr.xpath('./td[2]/a/text()')[0]
    name = tr.xpath('./td[3]/a/text()')[0]
    xj_price = tr.xpath('./td[4]/text()')[0]
    zdf = tr.xpath('./td[5]/text()')[0]
    print(nums, tds, name, xj_price, zdf)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1858296.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

无人机巡检小羊仿真

详细视频地址 仿真效果 可视化三维仿真 gazebo物理仿真 px4 飞控仿真 仿qgc简易地面站 详细视频地址

每日一题——Python代码实现PAT甲级1059 Prime Factors(举一反三+思想解读+逐步优化)五千字好文

一个认为一切根源都是“自己不够强”的INTJ 个人主页:用哲学编程-CSDN博客专栏:每日一题——举一反三Python编程学习Python内置函数 Python-3.12.0文档解读 目录 我的写法 代码点评 时间复杂度分析 空间复杂度分析 改进建议 我要更强 时间复杂度…

渗透测试基础(六) MS10-046漏洞攻击

1. 漏洞介绍 1.1 漏洞介绍 Microsoft Windows快捷方式LNK文件自动执行代码漏洞。Windows支持使用快捷方式或LNK文件。LNK文件是指向本地文件的引用,点击LNK文件与点击快捷方式所制定的目标具有相同效果。Windows没有正确的处理LNK文件,特制的LNK文件可能导致Windows自动执行…

【Day02】0基础微信小程序入门-学习笔记

文章目录 模板与配置学习目标WXML 模板语法1.数据绑定(类似于 Vue2 )2. 事件绑定3. 条件渲染4.列表渲染 WXSS模板样式1. rpx尺寸单位2.样式导入3. 全局样式和局部样式 全局配置1. window2. tabBar 页面配置网络数据请求总结 持续更新~ 模板与配置 学习目…

数据挖掘常见算法(聚类)

划分方法 K-均值算法(K-means算法) 方法: 首先选择K个随机的点,称为聚类中心.对于数据集中的,每一个数据,按照距离K个中心点的距离,将其与距离最近的中心点关联起来,与同一个中心点关联的所有点聚成一类.计算每一个组的平均值,将改组所关联的中心点移动到平均值的位置重复2~…

6. Revit API UI: PreviewControl(预览控件)

6. Revit API UI: PreviewControl(预览) PreviewControl 有时我们需要一个预览功能,而Revit也提供了一个PreviewControl类来帮助我们实现这个功能。 从类的继承关系来看,PreviewControl就是一个用户自定义控件,它就…

板凳--------第20章-信号:基本概念1

tlpi_hdr.h头文件使用及设置 liao__ran 于 2020-09-29 15:12:01 发布 阅读量1.6k 收藏 5 点赞数 1 分类专栏: linux系统编程手册 版权 linux系统编程手册 专栏收录该内容 7 篇文章 1 订阅 订阅专栏 使用的头文件,主要如下: ename.c.inc erro…

【文字+视频教程】在手机上用文生软件平台CodeFlying开发一个整蛊版《Flappy Bird》

前言: 在之前的文章中我们介绍了国内首家文生软件平台码上飞CodeFlying,并且教给了大家如何用它来开发复杂的项目信息管理系统以及恶搞拼图小游戏等。今天就继续给大家带来一起用码上飞开发整蛊版《Flappy Bird》小游戏的教程。 老规矩,咱还…

024.两两交换链表中的节点,用递归和 while 循环

题意 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。 难度 中等 示例 输入:head [1,2,3,4] 输出:[…

嵌入式系统中C/C++有仓颉语言对比分析

大家好,今天给大家分享一下,如何使用仓颉,以及优势在哪里? 在 2024 年 6 月 21 日的华为开发者大会上,华为不仅官宣了下一代鸿蒙操作系统 HarmonyOS NEXT,而且还正式推出了自研的编程语言 仓颉 ,可谓是赚足了面子,遥遥领先! 值得一提的是,HarmonyOS NEXT 是华为从内到…

数据库管理系统(DBMS)

一.数据库管理系统 1.简介 数据库管理系统(Database Management System)是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称DBMS。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。用户通过DBMS访问数据库中…

无线麦克风哪个品牌音质最好,一文告诉你无线领夹麦克风怎么挑选

随着直播带货和个人视频日志(Vlog)文化的兴起,以及自媒体内容创作的蓬勃发展,我们见证了麦克风行业的迅猛发展。在这一浪潮中,无线领夹麦克风以其无与伦比的便携性和操作效率,迅速赢得了广大视频制作者的喜…

WPF——属性

一、属性 类最初只有字段与函数,字段为一个变量,访问权限可以是private,protected,public。而将字段设为private,不方便外界对类数据的操作,但是将字段设为public又怕外界对数据进行非法操作,于…

【ChatBI】超轻量Python库Vanna快速上手,对接oneapi

oneapi 准备 首先确保你有oneapi ,然后申请 kimi的api 需要去Moonshot AI - 开放平台 然后添加一个api key 然后打开oneapi的渠道界面,添加kimi。 然后点击 测试, 如果能生成响应时间,就是配置正确。 然后创建令牌 http:…

探秘美食新宠:嘴尚绝卤味,口感惊艳你的味蕾!

在繁华的都市中,一道独特的卤味小吃悄然走红,它就是“嘴尚绝卤味”。今天,就让我们一起走进这家卤味店,探寻那令人回味无穷的口感秘密。 一、初识嘴尚绝卤味 “嘴尚绝”这个名字,一听就让人联想到美食的极致诱惑。店内…

从零开始构建CNN模型

猫狗分类问题——从零开始构建CNN 我们将使用相同的体系结构,并进行一些小的更改,如下所示。 第一个线性层的输入尺寸发生变化,因为猫和狗的图像尺寸是(256,256)。添加了另一个线性层来为模型学习提供更多的灵活性。 让我们来看看实现网络架…

卷积的通俗解释

以时间和空间两个维度分别理解卷积,先用文字来描述: 时间上,任何当前信号状态都是迄至当前所有信号状态的叠加;时间上,任何当前记忆状态都是迄至当前所有记忆状态的叠加;空间上,任何位置状态都…

如何将视频里的语音转成文字?5种方法轻松解决

这个信息爆炸的时代,视频内容如同潮水般涌来,而我们经常需要从这些海量的视频资源中提取关键信息。无论是为了学习、工作还是娱乐,将视频里的语音转换成文字都是一种高效的方法。这不仅可以帮助我们更好地理解内容,还能方便我们进…

【自然语言处理系列】Python 字符串操作技巧:清理、替换与合并

在编写Python程序时,字符串处理是一项常见的任务。了解如何有效地清理、修改和合并字符串对于数据预处理、文本分析和日常编程都至关重要。本文将引导您通过一系列实用的示例来掌握Python中字符串的核心操作,包括去除不需要的空格和特殊字符、替换文本中…

轻松搞定数据可视化配色,这份指南助你一臂之力!

配色是数据可视化图表的主要因素。一组合适的配色可以表达数据的重点和趋势,而不良的配色会削弱可视化表达的有效性。在本文中,我将梳理数据可视化中使用的配色板类型,通过案例揭示数据可视化配色技巧,并介绍可生成配色板的插件&a…