Python之JavaScript逆向系列——接口JSON信息获取与操作

简介: Python之JavaScript逆向系列——接口JSON信息获取与操作

Python之JavaScript逆向系列——Python之JavaScript逆向系列——接口JSON信息获取与操作



前言

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

在这个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

正文

想要具体的搞会操作,那么JS操作就是必须要掌握的内容,很多的数据都是通过json返回到主页进行动态加载的。

我们用上一篇文章举例:Python之JavaScript逆向系列——通过IP代理高频获取全篇小说-CSDN博客

在获取文章列表的时候我们获取的就是JSON格式的数据,那么我们就在在理开始分析了。

json格式

JSON,全称JavaScript Object Notation,是一种轻量级的数据交换格式。它采用完全独立于语言的文本格式,简洁、易读且便于机器解析和生成。JSON基于JavaScript Programming Language, Standard ECMA-262 3rd Edition-December 1999 (PDF)标准,易于人类阅读和编写,同时也易于机器解析和生成,并具有自己的数据类型。这些数据类型包括对象(Object)、数组(Array)、数字(Number)、字符串(String)、布尔值(Boolean)、null七种类型。此外,由于JSON语义与JavaScript完全兼容,在Web开发中常被用作数据交换的格式。它常常被用作API返回结果或者用于本地数据存储等场景。值得注意的是,虽然JSON的名字中包含"Object",但它并非是一种编程语言,而是一种数据格式。JSON本身并没有提供任何处理逻辑或方法,而是提供了一种方式来描述数据结构。在实际使用中,JSON通常会被转换为其他格式(如XML、CSV等)以适应特定的需求。

json格式示例

以下是一个简单的中文的JSON格式示例:

{
  "姓名": "张三",
  "年龄": 25,
  "性别": "男",
  "职业": "软件工程师",
  "技能": ["编程", "数据分析", "机器学习"],
  "项目经验": {
    "项目1": {
      "任务": "开发一个社交网络应用",
      "职责": "负责后端开发",
      "完成情况": "已完成"
    },
    "项目2": {
      "任务": "参与一个电商平台的开发",
      "职责": "负责前端设计",
      "完成情况": "正在进行中"
    }
  },
  "教育背景": {
    "学校": "清华大学",
    "专业": "计算机科学与技术",
    "学历": "本科",
    "时间": "2015-2019"
  }
}

这是一个包含姓名、年龄、性别、职业、技能、项目经验和教育背景等信息的JSON对象。每个字段都用双引号括起来的字符串表示,并且字段和值之间使用冒号分隔,多个字段之间使用大括号 {} 隔开。JSON是一种轻量级的数据交换格式,易于人类阅读和编写,同时也易于机器解析和生成。

POST请求访问API示例

请求的api地址可以看到,访问的方法是:POST,我们需要单独的加上参数与请求头就能访问了。

基础POST请求

如果我们不给参数和请求头,可以看到访问了,但是没有任何返回,因为接口不知道你要什么信息。

import requests
url = "https://bookapi.zongheng.com/api/chapter/getChapterList"
re = requests.post(url=url)
print(re.text)

添加参数的POST请求

在荷载中能看到具体的请求参数名称与参数值。

import requests
url = "https://bookapi.zongheng.com/api/chapter/getChapterList"
data = {
    "bookId": 1201723
}
re = requests.post(url=url, data=data)
print(re.text)

请求信息:

我们已经获取了对应的整个大json信息,但是这个json是字符串的,需要我们进行json格式化了。

json格式化

我们使用json的库来loads我们的json字符串。

import requests
import json
url = "https://bookapi.zongheng.com/api/chapter/getChapterList"
data = {
    "bookId": 1201723
}
re = requests.post(url=url, data=data)
json_re = json.loads(re.text)
print(json_re)

当我们输出后看到所有的双引号都变成了单引号。

现在我们就能使用json的获取格式来获取数据了。

获取json格式具体数据

import requests
import json
url = "https://bookapi.zongheng.com/api/chapter/getChapterList"
data = {
    "bookId": 1201723
}
re = requests.post(url=url, data=data)
json_re = json.loads(re.text)
result = json_re["result"]["chapterList"][0]["chapterViewList"]
for item in result:
    print("文章编号:{0}\t文章标题:{1}\t文章字数:{2}".format(item["chapterId"], item["chapterName"], item["wordNums"]))

这里可以看到具体我们需求的参数了:

python的json库loads与dumps的区别

Python的json库中的dumps和loads函数都是用于处理JSON数据的,但是它们的功能和用途有一些不同。

dumps函数(也称为JSON.dumps)是用于将Python对象转换为JSON格式的字符串。这个函数接收一个Python对象作为输入,并返回一个字符串,该字符串表示将该对象转换为JSON格式后的结果。

例如,如果你有一个Python字典,你可以使用dumps函数将其转换为JSON格式的字符串:

import json
data = {'name': 'John', 'age': 30}
json_string = json.dumps(data)
print(json_string)  # 输出:{"name": "John", "age": 30}

另一方面,loads函数(也称为JSON.loads)是用于将JSON格式的字符串转换回Python对象。这个函数接收一个JSON格式的字符串作为输入,并返回一个Python对象,该对象表示从JSON字符串转换回Python对象的结果。

例如,如果你有一个表示Python字典的JSON格式字符串,你可以使用loads函数将其转换回一个字典:

import json
json_string = '{"name": "John", "age": 30}'
data = json.loads(json_string)
print(data)  # 输出:{'name': 'John', 'age': 30}

总结一下,dumps用于将Python对象转换为JSON格式的字符串,而loads用于将JSON格式的字符串转换回Python对象。这两种功能对于处理JSON数据来说是非常常见的。

相关文章
|
4天前
|
数据采集 JavaScript Android开发
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
29 7
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
|
2月前
|
JavaScript API C#
【Azure Developer】Python代码调用Graph API将外部用户添加到组,结果无效,也无错误信息
根据Graph API文档,在单个请求中将多个成员添加到组时,Python代码示例中的`members@odata.bind`被错误写为`members@odata_bind`,导致用户未成功添加。
52 10
|
3月前
|
缓存 监控 Linux
Python 实时获取Linux服务器信息
Python 实时获取Linux服务器信息
|
3月前
|
JSON API 数据安全/隐私保护
拍立淘按图搜索API接口返回数据的JSON格式示例
拍立淘按图搜索API接口允许用户通过上传图片来搜索相似的商品,该接口返回的通常是一个JSON格式的响应,其中包含了与上传图片相似的商品信息。以下是一个基于淘宝平台的拍立淘按图搜索API接口返回数据的JSON格式示例,同时提供对其关键字段的解释
|
3月前
|
存储 JSON 安全
商品详情(item getAPI接口)json数据格式参考
某东商品详情(item get API接口)的JSON数据格式参考如下
|
3月前
|
JSON 数据格式 索引
Python中序列化/反序列化JSON格式的数据
【11月更文挑战第4天】本文介绍了 Python 中使用 `json` 模块进行序列化和反序列化的操作。序列化是指将 Python 对象(如字典、列表)转换为 JSON 字符串,主要使用 `json.dumps` 方法。示例包括基本的字典和列表序列化,以及自定义类的序列化。反序列化则是将 JSON 字符串转换回 Python 对象,使用 `json.loads` 方法。文中还提供了具体的代码示例,展示了如何处理不同类型的 Python 对象。
|
3月前
|
JSON API 数据格式
商品详情(item getAPI接口)json数据格式参考
淘宝商品详情(item get API接口)返回的JSON数据格式是一个复杂且灵活的结构,包含多个字段和对象。以下是一个简化的JSON数据格式参考:
|
3月前
|
存储 数据采集 数据库
用 Python 爬取淘宝商品价格信息时需要注意什么?
使用 Python 爬取淘宝商品价格信息时,需注意法律和道德规范,遵守法律法规和平台规定,避免非法用途。技术上,可选择 Selenium 和 Requests 库,处理反爬措施如 IP 限制、验证码识别和请求频率控制。解析页面数据时,确定数据位置并清洗格式。数据存储可选择 CSV、Excel、JSON 或数据库,定期更新并去重。还需进行错误处理和日志记录,确保爬虫稳定运行。
|
3月前
|
数据采集 Web App开发 iOS开发
如何利用 Python 的爬虫技术获取淘宝天猫商品的价格信息?
本文介绍了使用 Python 爬虫技术获取淘宝天猫商品价格信息的两种方法。方法一使用 Selenium 模拟浏览器操作,通过定位页面元素获取价格;方法二使用 Requests 和正则表达式直接请求页面内容并提取价格。每种方法都有详细步骤和代码示例,但需注意反爬措施和法律法规。
|
3月前
|
JSON API 数据格式
店铺所有商品列表接口json数据格式示例(API接口)
当然,以下是一个示例的JSON数据格式,用于表示一个店铺所有商品列表的API接口响应

热门文章

最新文章

  • 1
    当面试官再问我JS闭包时,我能答出来的都在这里了。
    49
  • 2
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    29
  • 3
    Node.js 中实现多任务下载的并发控制策略
    34
  • 4
    【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
    26
  • 5
    【JavaScript】深入理解 let、var 和 const
    49
  • 6
    【04】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架二次开发准备工作-以及建立初步后端目录菜单列-优雅草卓伊凡商业项目实战
    47
  • 7
    【03】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架搭建-服务端-后台管理-整体搭建-优雅草卓伊凡商业项目实战
    57
  • 8
    【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
    57
  • 9
    如何通过pm2以cluster模式多进程部署next.js(包括docker下的部署)
    72
  • 10
    【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
    57
  • 推荐镜像

    更多