Python 爬到的数据被加密了,可怎么办?

Android逆向实战篇(加密数据包破解) 目录 1. 实战背景 2. 问题分析 3. 实战记录 1) 脱壳 2) 找到解密函数 3) 重现 4. 总结 阅读本文之前,建议阅读Android逆向实战篇(Https抓包)。 1. 实战背景 由于工作需要,要爬取某款App的数据,App的具体名称此处不便透露,避免他们发现并修改加密逻辑我就得重新破解了。 爬取这款App时发现,抓包抓到的数据是加密过的,如图1所示(原数据较长... 阅读详情

点击上方“编程派”,选择设为“设为星标”

优质文章,第一时间送达!

作者:州的先生

出处:州的先生

随着网络上爬虫的横行和猖獗,各大网站为了最大限度地限制自家数据被采集,纷纷加入了各种反爬手段,比如:

  • 生成浏览器UA指纹识别;

  • 用各种验证方式(短信、滑块、点选汉字、点击)进行识别;

  • ……

这一类的反爬手段都是一层防御,类似于城堡的城门一样,只要突破这道防线,就可以为所欲为了。

除此之外,还有一些网站,会进行二层防御,对数据加入各种限制措施,比如混淆、加密等。这就像我们进了城门之后,要是想进某某内城,还得经过门口的官兵对腰牌和核验。

比如某电商网站就在数据中使用了AES加密,其返回的数据如下图所示:

经过解密之后,我们可以得到真正的数据为,如下图所示:

这就是利用Python进行AES解密实现的,下面,我们来介绍一下在Python中对数据进行AES加密和AES解密。

简介

以下内容来自于网络,大家随便看看,如果想详细了解,可以找专门的资料进行学习:

AES全称为高级加密标准,是Advanced Encryption Standard的首字母简写。

AES加密标准又称为高级加密标准Rijndael加密法,是美国国家标准技术研究所NIST旨在取代DES的21世纪的加密标准。AES的基本要求是,采用对称分组密码体制,密钥长度可以为128、192或256位,分组长度128位,算法应易在各种硬件和软件上实现。1998年NIST开始AES第一轮分析、测试和征集,共产生了15个候选算法。[1]
1999年3月完成了第二轮AES2的分析、测试。2000年10月2日美国政府正式宣布选中比利时密码学家Joan Daemen和Vincent Rijmen提出的一种密码算法Rijndael作为AES的加密算法。
AES加密数据块和密钥长度可以是128b、192b、256b中的任意一个。AES加密有很多轮的重复和变换。大致步骤如下:①密钥扩展(Key Expansion);②初始轮(InitialRound);③重复轮(Rounds),每一重复轮又包括字节间减法运算(SubBytes)、行移位(ShiftRows)、列混合(MixColurmns)、轮密钥加法运算(AddRoundKey)等操作;①最终轮(Final Round),最终轮没有列混合操作(MixColumns)。

加密

在这里,我们选用AES加密算法中的CBC模式来进行演示。

在上面我们提过,AES加密算法的CBC模式采用密钥和偏移量的方式对数据进行加密,所以我们首先定义几个公共的参数,包括原始数据、密钥、偏移量和AES的CBC模式,代码如下所示:

a = '''{'name':'州的先生','url':'zmister.com','desc':'编程应用实战'}''' # 原始数据
k = 'zmistercomzmiste'.encode('utf-8')  # 密钥
iv = b'1234567890asdfgh'  # 偏移量
mode = AES.MODE_CBC  # 模式

在这里,我们设置的密钥长度为16位字符串,也就是128位字节,在AES加密算法中,密钥的长度必须为16位字符串(128字节)、34位字符串(192字节)、32位字符串(256字节)。

接着,我们创建一个函数,用来对原始的数据进行加密:

# 加密数据
def cryp_str(value):
    value = value.encode('utf-8') # 对数据进行utf-8编码
    cryptor = AES.new(k, mode, iv) # 创建一个新的AES实例
    length = 16
    count = len(value)
    # 如果数据长度小于密钥长度
    if count < length:
        add = (length - count)
        # \0 backspace
        text = value + ('\0' * add).encode('utf-8')
    elif count > length:
        add = (length - (count % length))
        text = value + ('\0' * add).encode('utf-8')
    ciphertext = cryptor.encrypt(text) # 加密字符串
    print("原始加密数据:",ciphertext)
    ciphertext_hex = b2a_hex(ciphertext) # 字符串转十六进制数据
    print("十六进制加密:",ciphertext_hex)
    ciphertext_hex_de = ciphertext_hex.decode()
    print("十六进制加密字符串:",ciphertext_hex_de)
    return ciphertext_hex_de

我们将原始数据传入其中运行,可以得到加密后的数据,如下图所示:

在完成使用Python对数据进行AES加密之后,我们继续使用Python对AES加密的数据进行解密。

解密

相较于AES加密,AES解密要简单得多。我们首先实例化一个AES类,然后将加密的十六进制数据转换为字符串形式,接着调用AES实例的decrypt()方法对数据进行解密即可,最后再对解密的数据进行解码,就可以得到原始的数据,其代码如下所示:

# 解密数据
def decry_str(value):
    cryptor = AES.new(k, mode, iv) # 创建一个AES实例
    value_hex = a2b_hex(value) # 将十六进制数据转换为字符串
    plain_text = cryptor.decrypt(value_hex) # 对字符串进行解密
    print("解密数据:",plain_text)
    print('解码解密数据:',bytes.decode(plain_text).rstrip('\0'))
    return bytes.decode(plain_text).rstrip('\0')


我们将之前AES加密的数据作为参数传入其中并运行,最后得到解密后的原始数据,如下图所示:

这样,我们就完成了使用Python对数据进行AES加密和解密。

最后

在实际的网站中,可能数据不仅仅是通过一种加密手段进行的加密,更多的加密数据会使用多种加密手段进行混淆加密。面对这种情况,一定要先摸透数据的加密过程,不能盲目尝试。

回复下方「关键词」,获取优质资源

回复关键词「 pybook03」,立即获取主页君与小伙伴一起翻译的《Think Python 2e》电子版

回复关键词「入门资料」,立即获取主页君整理的 10 本 Python 入门书的电子版

回复关键词「m」,立即获取Python精选优质文章合集

回复关键词「book 数字」,将数字替换成 0 及以上数字,有惊喜好礼哦~

题图:pexels,CC0 授权。

好文章,我在看❤️

wireshark专栏——解密加密报文 用wireshark打开加密的报文,点击Edit选择Preferences,找到Protocal,选择SNMP协议,点击User table 点击Edit,填入对应的加密参数(设备中SNMPv3配置),点击OK即可解密。备注:这些参数是SNMPv3读取mib节点时设置的参数。 阅读详情

相关推荐

Python爬虫,请求参数加密怎么办?

目录背景介绍:目标网址:页面分析:逆向解析加密参数思路代码实现:code_js.jsJS方式实现python代码实现总结: 我是政胤 期待你的关注大家好 我是政胤.我们在请求接口的时候,发现请求参数数加密的,该如何处理呢?今天介绍两种方式完成请求参数解密,一种是通过调试js,逆向解析的方式,另一种是Python方式实现解析请求参数。 页面分析: 确定数据接口地址确定请求头和请求参数有没有加密确定返回的数据是不是加密定位到加密参数所在哪

m0_69043821的博客 7717

FiddlerObject的加解密方法

项目中接口数据突然加密了,fiddler抓包不容易看到解密数据,故修改了FiddlerObject直接解密返回数据。

u010473550的博客 2648

一起学爬虫(Python) — 01

首先要了解爬虫1.什么是爬虫1.自言自语2.为什么要学爬虫1.为了赚钱2.为了私欲3.爬虫违法吗?如何避免踩坑爬虫的分类爬与反爬robots.txt协议http协议和https协议常用请求头信息(先知道有这个东西)常用响应头信息(同上,都要通过抓包工具查看)加密方式(大致知道就好)结尾 1.什么是爬虫 1.自言自语 深思良久… 所以为什么要问这个问题呢? 传统! 每学一门技术之前都要了解我学的是什么,为什么要学,好学吗…… 但是小泽不要这么学,为什么呢? 如果跟别人一样的话,那有那么多优质的文章摆在前面,像

小泽 8616

python---js逆向-----为了理想爬到想要的数据,我们怎能放过它

这是我的gitee仓库:https://gitee.com/qin-laoda/python-exercises有兴趣的小可爱们可以点进去看看,_________________________________下面我们来按照爬虫思路找一下我们要爬的网页,并获取数据下面我以https://ggzyfw.fujian.gov.cn/business/list/来爬取想要的数据首先我们进去找到该网页,打开开发者工具找到如下所示:图中我们没有搜索到想要的内容,那我们就查看源代码看看,如图:可以看出也没有找到我们想要

m0_69984273的博客 6047

Python爬虫加密

加密 在开发爬虫的过程中,我们经常遇到的一种反爬措施是数据加密。常见的加密算法可以分为三类:对称加密算法,非对称加密算法和Hash算法(事实上不是加密算法而是摘要算法) 一、对称加密 1.定义 采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。由于其速度快,对称性加密通常在消息发送方需要加密大量数据时使用。但是,加解密双方使用同样的密钥...

微信号:RunsenLiu 1640

Python爬虫JS加密逆向实战:从定位加密入口到工程化落地

在爬虫开发中,数据采集常遇到接口参数被加密签名保护的情况,这类JS加密逆向问题本质上是将浏览器端执行的JavaScript计算逻辑迁移到Python环境,以构造合法请求。其核心原理是通过断点调试、调用栈回溯定位加密入口,再借助PyExecJS、Node.js子进程或Playwright执行还原后的JS代码,或直接翻译为Python实现。掌握签名算法识别与还原技术,能够显著提升爬虫的稳定性和抗封禁能力,广泛应用于数据采集、竞品监控、舆情分析等场景。本文按实际处理顺序,系统讲解加密形态判断、断点定位、JS执行方

weixin_31960565的博客 290

python scrapy 对爬虫爬到的url 进行md5加密

MD5是文件的“数字指纹”,加密作用很多:校验文件、校验密码等 比如对爬虫爬到的url进行加密: # -*- coding: utf-8 -*- import scrapy from scrapy.selector import Selector,HtmlXPathSelector import sys,io,hashlib class ChoutiSpider(scrapy.Spider...

java_raylu的博客 1616

专栏丨华为HN8145XR光猫获取超级管理员密码

摘要:本文详细介绍了华为HN8145xr光猫获取超级管理员权限的完整步骤。首先通过ONT使能工具补全shell,然后利用Telnet登录光猫后台进行操作。文章提供了多种获取超级密码的方法,包括配置文件解密、一键查询工具等,并针对联通光猫特别说明了默认密码格式(CUAdmin+后八位数字)。此外,还介绍了恢复出厂设置、修改SSID等实用操作,帮助用户完全掌控光猫设备。文末附有详细的命令行操作指南,适合有一定技术基础的用户参考。

8258

利用Python爬取朋友圈数据,爬到你开始怀疑人生

人生最难的事是自我认知,用Python爬取朋友圈数据,让我们重新审视自己,审视我们周围的圈子。

jacky_zhuyuanlu的博客 3万+

【计算机科学导论实验】加法图灵机模拟 题解

本文提供计算机科学导论课程“图灵机加法器”实验的个人思路,仅供参考。

Chavapa's blog 2577

博途V17 & PLCSIM & FactoryIO 连接教程

PLCSIM V17 和 FactoryIO 连接教程前言一、软件版本二、连接步骤1. 连接PLCSIM2. 博途编程3.连接FactoryIO总结 前言 该文详细讲解了新手入门博途,并通过使用自带PLCSIM和FactoryIO实现连接。 一、软件版本 TIA Portal V17 S7-PLCSIM V17 Factory IO V2.5.1 二、连接步骤 1. 连接PLCSIM 打开PLCSIM 进入项目模式 新建仿真项目 2. 博途编程 将F

soledad_chao的博客 2万+

python画图作品展示_python通过接口爬到数据并绘图展示

importrequestsimportjsonurl= 'http://music.163.com/weapi/v1/resource/comments/R_SO_4_551816010?csrf_token=568cec564ccadb5f1b29311ece2288f1'headers={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x6...

weixin_39926943的博客 159

ArcGIS Pro中如何批量替换数据源

不知您是否遇到过下面情况:ArcGIS Pro的Map/Scene中所引用的数据源被移动或重命名了,导致Map/Scene中找不到之前的数据,出现红色叹号;已有一个Map模板文件,图层的样式符号都是设置好的,想批量设置成另外一个数据源,复用该模板文件中的样式符号。 如果您在ArcGIS Pro的使用过程中遇到了上面情况,那么可以参考本篇文章,本文以图层存储在同一GDB中为例介绍。 情况一:Map中已有图层的数据源被移动了 原始Map长这样: 当数据源位置改变之后,显示找不到数据源的红色叹号: 这时如果右

xinying180的博客 7946

python通过接口爬到数据并绘图展示

import requests import json url = 'http://music.163.com/weapi/v1/resource/comments/R_SO_4_551816010?csrf_token=568cec564ccadb5f1b29311ece2288f1' headers = { 'User-Agent':'Mozilla/5.0 (Win...

weixin_30629977的博客 202

Agent 操作系统:未来的 Harness 平台

在大模型技术爆发的当下,自主智能体(Agent)已经成为AI原生应用的核心载体,但当前Agent开发面临着碎片化严重、运维难度高、规模化落地难三大核心痛点,就像1970年代没有通用操作系统的裸机编程时代,开发者需要重复造轮子解决底层基础设施问题。本文将深度解析Agent操作系统(Agent OS)作为AI原生时代的底层基础设施的核心定位,以及下一代Harness平台如何将Agent OS与成熟的DevOps、CI/CD、可观测性、成本管理能力深度融合,成为AI原生应用全生命周期管理的统一平台。

软件工程实践的博客 278

妙算(manifold-2G)通过网线连接笔记本实现静态ip上网

本质就是共享笔记本wifi,配置以太网静态ip,然后在工控机上连接

slender_1031的博客 903

Python爬虫实战:破解JS加密采集招聘平台城市薪资数据

网络爬虫是高效获取公开数据的常用手段,许多网站会在前端对请求参数进行动态签名加密,以阻止非授权爬取。要突破这一限制,就需要对JS逆向解密流程有深入理解,掌握断点调试、调用栈追踪和补环境运行等核心技能。这类技术不仅能够显著提升数据采集的稳定性和覆盖面,还能支撑更广泛的行业分析场景,例如城市薪资水平对比、岗位需求热度统计、市场调研等。本文以构建全国城市薪资排行榜为目标,分享从抓包定位核心接口到逆向还原签名,再到工程化采集、数据清洗与聚合计算的全链路实战经验,帮助读者掌握Python爬虫与JS逆向结合的方法论,并

weixin_32306957的博客 197

部署OpenClaw时设置环境变量提示export: not valid in this context的完整解决方案

OpenClaw环境变量设置错误解决方案 问题概述 在部署OpenClaw时设置环境变量出现"export: not valid in this context"错误,通常由以下原因导致: 在非交互式shell中使用export命令 在命令替换或管道中使用export 脚本文件包含Windows换行符(CRLF) 解决方案 修正脚本执行方式:确保export命令在正确的shell上下文中使用 使用source命令:通过. setup_openclaw.sh或source setup_op

博客 458

爬虫爬到的网页源代码不是真正的源代码_一、学爬虫前,你需要知道的爬虫常识...

@Author : By Runsen@Author : 2020/5/16我决定把去年写的关于Python爬虫文章整理一个专栏,垃圾的就直接删除,将多篇博文整理成一篇,还补充一下其他的东西。零基础Python专栏,到底写了什么内容希望大家都是Python大牛。1、 HTMLHTML被称为超文本标记语言,有着一系列的标签,这些标签的组合可以显示出文字,图片,视频等内容。我们平时访问的网页,就是通过...

weixin_39612058的博客 1496

Pytorch实现EdgeCNN(基于PyTorch实现)

本专栏整理了《图神经网络代码实战》,内包含了不同图神经网络的相关代码实现(PyG以及自实现),理论与实践相结合,如GCN、GAT、GraphSAGE等经典图网络,每一个代码实例都附带有完整的代码。

优快云 精品推荐 1万+

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

第二章:解密HLS流——揭秘m3u8加密与解密

初始化向量(IV)是用于AES加密算法中的一个额外的输入参数,与密钥(key)一起使用,以确保即使相同的数据块多次加密,结果也会因为不同的IV而不同。这增加了加密的安全性,因为相同的明文块不会产生相同的密文块。使用全零IV的做法通常不推荐,因为它会降低加密的安全性,因为如果多个数据块使用相同的密钥和IV进行加密,攻击者可能会利用这个模式来发起攻击。就是m3u8文件中的URL的值,有的也是完整链接,如果没有完整链接,可以通过浏览器检查点network获取对应的header里的Request URL获取。

斯人若彩虹,遇上方知有! 6407

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Python爬虫实战:破解BOSS直聘加密参数,搞定数据采集与薪资分析

网络爬虫是自动提取互联网公开数据的程序,其核心原理是模拟HTTP请求并解析返回内容。实际工程中,爬虫常面对加密参数、字体反爬、频率限制等反爬机制,掌握应对策略是稳定获取数据的关键。招聘平台数据字段规整、实时性强,非常适合作为爬虫实践与市场分析的样本。从requests直连接口到Playwright兜底,从数据清洗到SQLite存储,再到薪资分布与岗位画像可视化,完整展示了一条可落地的数据采集链路。针对BOSS直聘公开搜索页,详细拆解了接口结构、token校验、反爬绕过思路,并给出高频报错排查方法。项目以个人

weixin_30647423的博客 318

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

懒人听书爬虫(爬到了音频地址,却总是失效,却不成功)

叹服人家的加密做的成功! from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.action_chains im

weixin_40901505的博客 1169

python爬虫:关于解决request.get和点击查看网页源代码的内容不同的问题//及大神版js加密参数获取教程指路

首先声明:爬虫小白,虽然爬过几个网站,但是知识几乎都是实践中获取,如果以下说的不对的,请多指正,谢谢!谨此给和我一样的小白提供一个解题思路! 目录问题背景解决方案附:excel的下载方式 问题背景 这两天在做一个爬虫项目,要求爬取页面的附件(excel)并保存,在用分析得到的request url中的k值在源代码中搜索时,幸运的定位到网页源码中隐藏了url信息,确定了爬虫方案。如下: 照原理,我...

xiyou__的博客 6600

影刀RPA与python,js(逆向)结合使用

爬虫,大家一定很熟悉吧,而写爬虫大家一定想到的是用python,因为python有强大的第三方包,而且语法简单,对于初学者来说是很容易上手的。但是呢,不是所有数据都能让我们轻轻松松的爬到,例如对数据进行加密,登录验证码,滑块验证等反爬。这时,想到了,诶,可以使用seleiunm啊,通过对网页元素操纵,把数据获取下来。但是呢,这对初学者并不友好,尤其是非科班的。但是,有一款app,把以上的内容涵括,而且它学习成本低,上手快,实现效果强,他就是-——影刀RPA。

m0_53027469的博客 7558
上一篇: 用 Python 十年之后的一些感悟
下一篇: 使用 PyQt5 和 Echarts 打造股票数据看板
codingpy
博客等级 码龄11年 1869粉丝 104原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值