Python之JavaScript逆向系列——4、Body

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析DNS,个人版 1个月
全局流量管理 GTM,标准版 1个月
简介: Python之JavaScript逆向系列——4、Body

Python之JavaScript逆向系列——4、Body



前言

大家好,本系列文章主要为大家提供的价值方向是网络信息获取,自动化的提取、收集、下载和记录互联网上的信息,加之自身分析,可以让价值最大化。整个内容中不会涉及到过为敏感的内容。

在这个AI+云计算+大数据时代,我们眼睛所看到的百分之九十的数据都是通过页面呈现出现的,不论是PC端、网页端还是移动端,数据渲染还是基于HTML+JavaScript进行的,而大多数的数据都是通过request请求后台API接口动态渲染的。而想成功的请求成功互联网上的开放/公开接口,必须知道它的【URL】、【Headers】、【Params】、【Body】等数据是如何生成的。我们需要了解浏览器开发者工具的功能,入门JS逆向,入门后还需要掌握例如如何【反编译js混淆】等内容,为了避免封本机IP,还需要对每次访问的IP进行代理,当我们拥有了JS逆向的能力后,根据JS所返回的动态请求参数信息便可以进行Python的具体信息获取操作,需要的知识点非常的多,故而本系列文章理论+实践会达到上百篇的文章,这篇文章是总篇,为了方便大家来直接查找所有知识点,建议之间关注收藏本篇,期望能给大家带来更高的价值。

环境准备

系统环境:win11

开发工具:PyCharm: the Python IDE for Professional Developers by JetBrains

IP代理:品易HTTP - 代理IP日更400万 - 为企业提供HTTP代理IP定制服务

api工具:Eolink - 一体化API在线管理平台_API接口管理_接口自动化测试

数据库:MySQL5.7.32——阿里云RDS数据库

主要python库:requests、PyExecJS、parsel

正文

body也就是正文内容,我们实际请求页面成功之后便会返回一个页面的所有信息,其中我们需要的内容基本都在body里面,例如我们需要在一个小说网站内获取小说的内容,可以看到当前的情况:

我们仅需要从body里面获取信息即可。需要使用到【parsel】库来筛选数据。

parsel语法

Python的`parsel`库是一个用于处理HTTP请求和解析HTTP响应的强大工具。它提供了许多功能,包括发送HTTP请求、解析响应体、解析HTML和XML文档等。下面是一个简单的示例,展示如何使用`parsel`库来发送HTTP请求并解析响应。

首先,你需要安装`parsel`库。可以使用pip命令进行安装:

pip install parsel

然后,你可以使用以下代码来发送HTTP请求并解析响应:

from parsel import Parser, urlopen
# 创建一个解析器对象
p = Parser()
# 发送HTTP GET请求到指定的URL
response = urlopen("http://example.com")
# 解析响应体
doc = p.parse(response.text)
# 遍历并打印出所有链接
for link in doc.links:
    print(link)

这个例子展示了如何使用`parsel`库的基本功能。以下是一些更高级的功能,可以帮助你更好地使用`parsel`库:

* 发送HTTP POST请求:可以使用`urlopen`函数发送POST请求,并传递一个字典作为请求体。例如:

from parsel import Parser, urlopen, Request
p = Parser()
url = "http://example.com/api"
data = {"key1": "value1", "key2": "value2"}
request = Request(url=url, method="POST", data=data)
response = urlopen(request)
doc = p.parse(response.text)

* 解析HTML和XML文档:`parsel`库还提供了解析HTML和XML文档的功能。可以使用`Selector`类来选择和提取HTML或XML文档中的元素。例如:

from parsel import Selector, urlopen
doc = Selector(text=urlopen("http://example.com/page.html").text)
print(doc.select("div.content"))  # 选择所有class为"content"的div元素

* 使用正则表达式提取数据:`parsel`库还提供了使用正则表达式提取数据的功能。可以使用`re`模块在解析过程中使用正则表达式匹配数据。例如:

import re
from parsel import Parser, urlopen, Selector, re_type_matches_named_group
doc = Selector(text=urlopen("http://example.com/page.html").text)
data = doc.text_content().strip()  # 提取文本内容,移除前后的空白字符
match = re.search(r"your-regex-pattern", data)  # 使用正则表达式匹配数据
if match and re_type_matches_named_group(match):  # 如果匹配成功并且使用了命名捕获组,提取匹配到的值
    print(match.group('named-group'))  # 输出匹配到的值名称为'named-group'的值

这只是`parsel`库的一些基本功能和使用方法。你可以查阅官方文档以获取更多详细信息和示例代码。

获取示例

根据parsel完成的一个示例,这里没有完整的内容,但是能根据语法进行一定的分析,这几篇文章都是理论,让我们后面更好的去实际操作。

def GetUrl(url):
    try:
        html = requests.get(url, headers=headers)
        sel = parsel.Selector(html.text)
        # 获取主Title
        mTitle.append(sel.css(".book-meta h1::text").getall()[0])
        href = sel.css(".volume-list ul a::attr(href)").getall()
        # 获取标题
        text = sel.css(".volume-list ul a::text").getall()
        for item1, item2 in zip(href, text):
            a_href_list = ["", ""]
            a_href_list[0] = item1
            a_href_list[1] = item2
            a_href_arr.append(a_href_list)
        print("列表获取完毕")
    except:
        print("解析异常")
相关文章
|
4月前
|
JSON JavaScript 前端开发
在Python中调用和执行JavaScript
在Python中调用和执行JavaScript主要通过`PyExecJS`库实现。安装库后,可以使用`execjs.compile`编译JS代码并用`eval`或`call`执行。此外,还能加载JavaScript库和框架,调用外部JS文件,处理返回值,以及在两者间传递数据。Python和JavaScript各有优劣,适用于不同场景,结合使用可增强项目功能和灵活性。
158 0
|
3天前
|
Web App开发 JavaScript 前端开发
使用Python调用JavaScript进行网页自动化操作
使用Python调用JavaScript进行网页自动化操作
|
2天前
|
Web App开发 JavaScript 前端开发
探索Node.js后端开发之旅深入浅出Python装饰器
【8月更文挑战第29天】在数字化时代,掌握一门后端编程语言变得尤为重要。Node.js作为一种基于JavaScript的服务端平台,因其高性能、轻量级的特性而广受欢迎。本文将引导读者了解Node.js的基本概念、核心模块以及如何利用它来构建一个简易的Web服务器。通过本文的学习,你将获得使用Node.js进行后端开发的初步技能,并理解其在现代Web开发中的应用价值。
|
2月前
|
机器学习/深度学习 数据采集 前端开发
网络爬虫开发:JavaScript与Python特性的小差异
我们以前写JavaScript的代码时,在遇到了发送请求时,都是需要去await的。 但是为什么Python代码不需要这样做呢? 这就是因为JavaScript是异步的,Python是同步的。 JavaScript就需要使用关键词await将异步代码块变为同步代码。
|
3月前
|
算法 JavaScript 前端开发
【经典算法】LCR187:破冰游戏(约瑟夫问题,Java/C/Python3/JavaScript实现含注释说明,Easy)
【经典算法】LCR187:破冰游戏(约瑟夫问题,Java/C/Python3/JavaScript实现含注释说明,Easy)
40 1
|
3月前
|
存储 JavaScript 前端开发
【经典算法】LeetCode350:两个数组的交集 II(Java/C/Python3/JavaScript实现含注释说明,Easy)
【经典算法】LeetCode350:两个数组的交集 II(Java/C/Python3/JavaScript实现含注释说明,Easy)
20 1
|
3月前
|
数据采集 前端开发 JavaScript
Python爬虫技术:动态JavaScript加载音频的解析
Python爬虫技术:动态JavaScript加载音频的解析
|
4月前
|
前端开发 JavaScript TensorFlow
如何将训练好的Python模型给JavaScript使用?
本文介绍了如何将TensorFlow模型转换为Web格式以实现浏览器中的实际应用。首先,简述了已有一个能够检测扑克牌的TensorFlow模型,目标是将其部署到Web上。接着,讲解了TensorFlow.js Converter的作用,它能将Python API创建的GraphDef模型转化为TensorFlow.js可读取的json格式,用于浏览器中的推理计算。然后,详细说明了Converter的安装、用法及不同输入输出格式,并提供了转换命令示例。最后,文中提到了模型转换后的实践步骤,包括找到导出的模型、执行转换命令以及在浏览器端部署模型的流程。
39 3
|
4月前
|
JavaScript 前端开发
<body> 中的JavaScript函数
【5月更文挑战第1天】<body> 中的JavaScript函数。
20 3
|
4月前
|
编解码 JavaScript 前端开发
【专栏】介绍了字符串Base64编解码的基本原理和在Java、Python、C++、JavaScript及Go等编程语言中的实现示例
【4月更文挑战第29天】本文介绍了字符串Base64编解码的基本原理和在Java、Python、C++、JavaScript及Go等编程语言中的实现示例。Base64编码将24位二进制数据转换为32位可打印字符,用“=”作填充。文中展示了各语言的编码解码代码,帮助开发者理解并应用于实际项目。
86 1
下一篇
云函数