Python某建筑平台数据, 实现网站JS逆向解密

news2024/11/26 2:29:24

嗨喽,大家好呀~这里是爱看美女的茜茜呐

环境使用:

首先我们先来安装一下写代码的软件(对没安装的小白说)

  • Python 3.8 / 编译器

  • Pycharm 2021.2版本 / 编辑器

    • 专业版是付费的 <文章下方名片可获取魔法永久用~>

    • 社区版是免费的

模块使用:

  • json (内置模块,直接导入,无需安装)

  • requests --> pip install requests

  • execjs --> pip install PyExecJS

python第三方模块安装:

  1. win + R 输入 cmd 点击确定, 输入安装命令 pip install 模块名 (pip install requests) 回车

  2. 在pycharm中点击Terminal(终端) 输入安装命令

(如果你觉得安装速度比较慢, 你可以切换国内镜像源)


👇 👇 👇 更多精彩机密、教程,尽在下方,赶紧点击了解吧~

python源码、视频教程、插件安装教程、资料我都准备好了,直接在文末名片自取就可


基本流程思路: <适用于任何网站数据采集>

一. 数据来源分析

  1. 明确需求: 明确采集的网站以及数据内容

    • 网址: https://jzsc.mohurd.gov.cn/data/company

    • 数据: 企业信息

  2. 抓包分析: 通过浏览器去分析, 我们需要数据具体在那个链接中

    • 静态网页: 刷新网页查看数据包内
  • 动态网页: 点击到下一页数据内容 / 下滑到下一页的数据内容

    • 打开开发者工具: F12

    • 点击第二页数据内容

      加密数据: https://jzsc.mohurd.gov.cn/APi/webApi/dataservice/query/comp/list?pg=1&pgsz=15&total=450

二. 代码实现步骤:

  1. 发送请求 -> 模拟浏览器对于url地址发送请求

    url地址: 通过抓包分析找到链接地址

  2. 获取数据 -> 获取服务器返回响应数据

    开发者工具: response 响应

  3. 解析数据 -> 获取加密数据内容

  4. 保存数据 -> 通过解密, 还原明文数据 保存表格文件中

  5. 发送请求 -> 模拟浏览器对于url地址发送请求

代码展示

数据采集保存

导入模块

'''
python资料获取看这里噢!! 小编 V:Pytho8987(记得好友验证备注:6 否则可能不通过)
即可获取:文章源码/教程/资料/解答等福利,还有不错的视频学习教程和PDF电子书!
'''
# 导入数据请求模块 -> 第三方模块, 是需要安装的
import requests
# 导入模块
import execjs
# 导入json模块
import json
# 导入csv模块
import csv

创建文件对象

csv_file = open('data.csv', mode='w', encoding='utf-8', newline='')
csv_writer = csv.DictWriter(csv_file, fieldnames=[
    '企业名称',
    '统一社会信用代码',
    '法人',
    '注册属地省份',
    '注册属地城市',
])
csv_writer.writeheader()

模拟浏览器

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36'
}

多页数码

for page in range(30):

请求链接

    url = f'https://jzsc.mohurd.gov.cn/APi/webApi/dataservice/query/comp/list?pg={page}&pgsz=15&total=450'

发送请求 关键字传参, 指定参数传入到那个位置

    response = requests.get(url=url, headers=headers)

2. 获取响应数据 --> 加密数据

    data = response.text

3. 解密数据 -> 把密文转成明文 通过python代码调用JS代码

    f = open('建筑平台.js', mode='r', encoding='utf-8').read()

编译js文件

    js_code = execjs.compile(f)

调用js代码的函数 data->密文数据

    result = js_code.call('m', data)

把json字符串数据, 转成json字典数据

    json_data = json.loads(result)

for 循环遍历

'''
python资料获取看这里噢!! 小编 V:Pytho8987(记得好友验证备注:6 否则可能不通过)
即可获取:文章源码/教程/资料/解答等福利,还有不错的视频学习教程和PDF电子书!
'''
    for index in json_data['data']['list']:
        try:
            info = index['QY_REGION_NAME'].split('-')
            if len(info) == 2:
                area_1 = info[0]  # 省份
                area_2 = info[1]  # 城市
            else:
                area_1 = info[0]  # 省份
                area_2 = '未知'
            dit = {
                '企业名称': index['QY_NAME'],
                '统一社会信用代码': index['QY_ORG_CODE'],
                '法人': index['QY_FR_NAME'],
                '注册属地省份': area_1,
                '注册属地城市': area_2,
            }
            csv_writer.writerow(dit)
            print(dit)
        except:
            pass
一个小小的数据可视化
'''
python资料获取看这里噢!! 小编 V:Pytho8987(记得好友验证备注:6 否则可能不通过)
即可获取:文章源码/教程/资料/解答等福利,还有不错的视频学习教程和PDF电子书!
'''
import pandas as pd
from pyecharts import options as opts # 配置项
from pyecharts.charts import Pie # 导入饼图
# 读取文件
df = pd.read_csv('data.csv')
print(df.head())
info = df['注册属地省份'].value_counts().index.to_list() # 数据类目
num = df['注册属地省份'].value_counts().to_list() # 数据数量
print(info)
print(num)
c = (
    Pie()
    .add(
        "",
        [list(z) for z in zip(info,num,)],
        center=["40%", "50%"],
    )
    .set_global_opts(
        # 设置标题
        title_opts=opts.TitleOpts(title="注册省份占比分布"),
        legend_opts=opts.LegendOpts(type_="scroll", pos_left="80%", orient="vertical"),
    )
    .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
    # 保存html文件
    .render("注册省份占比分布.html")
)

一些小知识点

  • 模拟浏览器: 请求头

    cookie: 用户信息

    host: 域名

    referer: 防盗链

    User-Agent: 浏览器信息

  • 为什么使用requests.get():

    get/post 请求方式

    原因: 浏览器中显示请求方法是GET

  • 获取响应数据三种情况:

    response.text 获取响应文本数据

    response.json() 获取响应json数据 <必须是完整的json数据格式>

    response.content 获取响应二进制数据 音频 视频 图片 特定格式文件…
    常用于保存数据

  • 响应数据加密/请求参数加密/请求头参数加密

    通过找加密规则 <分析加密内容是如何生成出来的>

尾语

感谢你观看我的文章呐~本次航班到这里就结束啦 🛬

希望本篇文章有对你带来帮助 🎉,有学习到一点知识~

躲起来的星星🍥也在努力发光,你也要努力加油(让我们一起努力叭)。

最后,宣传一下呀~👇👇👇更多源码、资料、素材、解答、交流皆点击下方名片获取呀👇👇

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

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

相关文章

学生成绩管理神器

在信息化时代&#xff0c;你是否还在为处理大量的学生成绩数据而烦恼&#xff1f;是否还在用传统的方式&#xff0c;手动输入和整理成绩信息&#xff1f;今天&#xff0c;我将向你展示如何利用各种代码和Excel&#xff0c;打造一个学生自助查询成绩的神器&#xff0c;让数据管理…

ClickHouse 学习之基础入门(一)

第 1 章 ClickHouse 入 门 ClickHouse 是俄罗斯的 Yandex 于 2016 年开源的列式存储数据库&#xff08;DBMS&#xff09;&#xff0c;使用 C 语言编写&#xff0c;主要用于在线分析处理查询&#xff08;OLAP&#xff09;&#xff0c;能够使用 SQL 查询实时生成分析数据报告。 …

词典查询工具django-mdict

什么是 django-mdict &#xff1f; django-mdict 不是词典软件&#xff0c;是词典查询的脚本工具&#xff0c;主要目的是解决词典数量多&#xff0c;手机容量不足的问题&#xff0c;是对其他词典软件局域网在线查询功能的补充&#xff0c;是用 django 实现的 mdict 词典查询工具…

递归与快速算法

借鉴&#xff1a; 4分钟彻底掌握递归算法、斐波那契数列、快速排序&#xff0c;不再怕面试&#xff01;_哔哩哔哩_bilibili 可直接观看借鉴里的视频 快速算法

vcruntime140.dll在哪下载?vcruntime140.dll文件说明及其下载方法

vcruntime140.dll在哪下载&#xff1f;为啥还有这样的问题&#xff1f;其实就是你电脑的vcruntime140.dll文件丢失了&#xff0c;你需要重新去下载一个vcruntime140.dll文件&#xff0c;这时候你就会想这个东西到底要去哪里下载&#xff0c;今天我们就来给大家详细的解析一下&a…

AI视频 | Runway的史诗级更新真的那么震撼吗?来看我的试用体验!

就在昨天&#xff0c;Runway&#xff0c;这个生成式AI的领头羊&#xff0c;正式在X上发布了他们史诗级更新 看下视频 【视频2】 这个确实看起来太棒了 注册个账号&#xff0c;看下效果咋样 地址百度哈&#xff0c;注册登录也比较方便 直接邮箱即可 不过我是直接google账号登录的…

从使用的角度看 ByConity 和 ClickHouse 的差异

自 ClickHouse Inc 宣布其重要新功能仅在 ClickHouse Cloud 上开放以来&#xff0c;一些关注 ByConity 开源的社区小伙伴也来询问 ByConity 后续开源规划。为回答社区疑问&#xff0c;我们将之前分享的关于 ByConity 与 ClickHouse 相关功能对比的 webinar 整理为文章&#xff…

MinIO多容器配置NGINX代理实践(docker-compose版本)

以下nginx配置 分别将本机的9001端口代理到minio1,minio2,minio3,minio4主机的9001端口。用于minio后台 分别将本机的9000端口代理到minio1,minio2,minio3,minio4主机的9000端口。用于minioApi events {worker_connections 1024; }http {upstream minio_console {server min…

Selenium元素定位之页面检测技巧

在进行web自动化测试的时候进行XPath或者CSS定位&#xff0c;需要检测页面元素定位是否正确&#xff0c;如果用脚本去检测&#xff0c;那么效率是极低的。 一般网上推选装额外的插件来实现页面元素定位检测 如&#xff1a;firebug。 其实F12开发者工具就能直接在页面上检测元…

广东厂家建筑木模板:桥梁工地施工的理想选择

广东地区一直以来都是中国建筑业的重要制造中心之一。在这个繁忙的地方&#xff0c;建筑行业的发展需要可靠且高质量的建筑材料。在众多的建筑材料中&#xff0c;建筑木模板作为一种重要的施工辅助工具&#xff0c;被广泛应用于桥梁工地的施工中。 广东厂家建筑木模板以其优质的…

初识RTOS

缺点&#xff1a; 如果一心多用&#xff0c;上一秒钟喂饭&#xff0c;下一秒钟回同事信息。 虽然还是一个脑子&#xff0c;一次智能处理一件事&#xff0c;但是给人的感觉就不会像上面那样了。人体就是一个嵌入式。 CPU是他的大脑。 手就是总线&#xff0c;可以操作芯片之外的…

深度学习服务器(Linux)开发环境搭建教程

当你拿到一台服务器的使用权时&#xff0c;最头疼的莫过于登陆服务区并配置开发环境。本文将从0开始&#xff0c;讲述一台刚申请的服务器远程登陆并配置开发环境的全过程。希望对你有所帮助 1.登陆服务器 打开MobaXterm软件&#xff0c;创建一个新的Session&#xff0c;选择S…

探索数据库世界的奥秘:MySQL初学者必备指南!

数据库开发-MySQL 1. 数据库操作-DQL1.1 介绍1.2 语法1.3 基本查询1.4 条件查询1.5 聚合函数1.6 分组查询1.7 排序查询1.8 分页查询1.9 案例1.9.1 案例一1.9.2 案例二 2. 多表设计2.1 一对多2.1.2 外键约束 2.2 一对一2.3 多对多 1. 数据库操作-DQL 1.1 介绍 DQL英文全称是Da…

ubuntu系统调整根目录空间

调整根目录大小&#xff1a; 一旦您释放了一部分空间&#xff0c;您可以使用 LVM 工具来调整根目录的大小。 运行 sudo lvresize -r -L <size>G /dev/mapper/ubuntu--vg-ubuntu--lv 命令&#xff0c;将根目录的逻辑卷&#xff08;logical volum…

C++算法:拼接最大数

题目 给定长度分别为 m 和 n 的两个数组&#xff0c;其元素由 0-9 构成&#xff0c;表示两个自然数各位上的数字。现在从这两个数组中选出 k (k < m n) 个数字拼接成一个新的数&#xff0c;要求从同一个数组中取出的数字保持其在原数组中的相对顺序。 求满足该条件的最大数…

记录::6d位姿数据集-meshlab简单使用-修改单位度量

制作6d数据集的时候&#xff0c;难免要对点云进行处理&#xff0c;小白记录一下操作指南 目录 1、安装 2、选中背景&#xff0c;删除 3、生成三角化 4、保存 5、修改单位度量 1、安装 Releases cnr-isti-vclab/meshlab GitHub 下载tar&#xff0c;解压&#xff0c;然后…

AI智能超越人类终破解!李飞飞高徒新作破圈,5万个合成数据碾压人类示例,备咖啡动作超丝滑

AI巨佬Geoffrey Hinton称&#xff0c;「科技公司们正在未来18个月内&#xff0c;要使用比现在GPT-4多100倍的算力训练新模型」。 更大参数的模型&#xff0c;对算力需求巨大的同时&#xff0c;对数据也提出了更高的要求。 但是&#xff0c;更多的高质量数据该从何来&#xff1…

客服行业未来的发展前景怎么样?

随着互联网和科技的快速发展&#xff0c;客服行业也在不断发展和壮大。客服行业涉及的领域非常广泛&#xff0c;包括电商、互联网、金融、医疗、教育、交通等各个行业。客服行业未来的发展前景也非常广阔。 一、人工智能客服将成为主流 人工智能技术的不断发展和成熟将会改变客…

【vscode】vscode实现c代码跳转,函数关联关系查看

这里写自定义目录标题 1. 安装插件a. C/Cb. Gtagsc. C/C GNU Global 2. 下载 GLOBAL 并配置3. 使用 1. 安装插件 a. C/C b. Gtags c. C/C GNU Global 2. 下载 GLOBAL 并配置 Windows 下 GLOBAL 下载地址&#xff1a;http://adoxa.altervista.org/global/ 注意&#xff1a;无法…

清华大学利用可解释机器学习,优化光阳极催化剂,助力光解水制氢

水的太阳能光电化学 (PEC) 分解是将太阳能高效转换为氢能的方法&#xff0c;是一种很有前景的可再生能源生产方式。然而&#xff0c;受电极性质及电极缺陷的影响&#xff0c;PEC 反应的效率较低&#xff0c;需要合适的助催化剂辅助。而电解池、光电极和助催化剂组成的 PEC 系统…