URL部分加密破解

  • 背景说明
  • 示例及分析
  • 解决方案
  • 注意

背景说明

最近在爬取网站数据时,碰到提取到的a标签的url与真实的url地址不同,将a标签中的部分内容进行了加密处理,再拼接处理,拿到真实的url,进行访问。

示例及分析

a标签: a标签href属性
http://www.sdggzyjy.gov.cn/jsgczbgg/2803000.jhtml
真实url:真实地址
http://www.sdggzyjy.gov.cn/jsgczbgg/V6MerV5ghNJQJOl+vAZ2vA.jhtml
加密文件:

$(function () {$("a").click(function () {var hh = $(this).attr("href");// 切割url http://www.sdggzyjy.gov.cn/jsgczbgg/2803000.jhtmlvar aa = hh.split("/");var aaa = aa.length;var bbb = aa[aaa - 1].split('.');// ccc 为 加密部分字符串 如 2803000var ccc = bbb[0];var cccc = bbb[1];var r = /^\+?[1-9][0-9]*$/;if (r.test(ccc) && cccc.indexOf('jhtml') != -1) {//开始进行加密处理   此处开始调用 jquery.lyh-1.1.0.js 文件中的方法var srcs = CryptoJS.enc.Utf8.parse(ccc);var k = CryptoJS.enc.Utf8.parse(s);var en = CryptoJS.AES.encrypt(srcs, k, {mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7});var ddd = en.toString();ddd = ddd.replace(/\//g, "^");//  ddd=  V6MerV5ghNJQJOl+vAZ2vAddd = ddd.substring(0, ddd.length - 2);var bbbb = ddd + '.' + bbb[1];aa[aaa - 1] = bbbb;var uuu = '';for (i = 0; i < aaa; i++) {uuu += aa[i] + '/'}uuu = uuu.substring(0, uuu.length - 1);window.open(uuu)}})
});

经过调试,确定调用文件为: jquery.lyh-1.1.0.js

解决方案

开始进行了比较多的尝试,无意中看到该篇文章:python3.6执行AES加密及解密方法
尝试直接进行AES解密,竟然成功了,代码如下

from Crypto.Cipher import AES
import base64def add_to_16(s):while len(s) % 16 != 0:s += (16 - len(s) % 16) * chr(16 - len(s) % 16)return str.encode(s)  # 返回bytesdef get_secret_url(text,key='qnbyzzwmdgghmcnm'):aes = AES.new(str.encode(key), AES.MODE_ECB)  # 初始化加密器,本例采用ECB加密模式encrypted_text = str(base64.encodebytes(aes.encrypt(add_to_16(text))), encoding='utf8').replace('\n', '')  # 加密encrypted_text=encrypted_text.replace('/', "^")  #  ddd.replace(/\//g, "^")return encrypted_text[:-2]def get_real_url(first_url,key):aa=first_url.split('/')aaa=len(aa)bbb=aa[aaa - 1].split('.')ccc = bbb[0]secret_text=get_secret_url(ccc,key=key)return first_url.replace(ccc,secret_text)url='http://www.sdggzyjy.gov.cn/jsgczbgg/2803000.jhtml'
key='******' #  此处问加密key值
url=get_real_url(s,key=key)
print(url)

结果 : http://www.sdggzyjy.gov.cn/jsgczbgg/V6MerV5ghNJQJOl+vAZ2vA.jhtml

注意

该处解密使用的是 : AES —pkcs5补码方式
而在调用jQuery文件时,传参值是 CryptoJS.pad.Pkcs7 具有一定的误导性
究其原因:因为AES并没有64位的块, 如果采用PKCS5, 那么实质上就是采用PKCS7
参看:https://www.cnblogs.com/raymond531/p/10420751.html

python爬虫--URL部分加密破解相关推荐

  1. Python爬虫之js加密破解,抓取网易云音乐评论生成词云

    js破解历程 前言 技能点 界面概况 静态网页动态网页 页面解析 step1: 找参数step2:分析js函数step3:分析参数step4: 校验step5:转为python代码 编写爬虫 很多人学 ...

  2. python爬虫JS逆向加密破解之百度翻译

    最近在从基础学习JS逆向,来分享一下百度翻译JS逆向的整个过程,也有助于自己加深记忆. JS逆向可以说是爬虫工程师必备的知识点了,但是如果对前端知识不够了解还是学起来很有难度的. 想学习的话可以在B站 ...

  3. Python爬虫-2019年我破解了商标网数据爬虫-破解反爬技术那些事情

    Python爬虫-2019年我破解了商标网!数据爬虫-破解反爬技术那些事情 由于自己一直做Python大数据挖掘技术开发,最近有不少的朋友要做大数据分析,找我帮忙商标网的数据挖掘,实现爬取中国商标网全 ...

  4. 爬虫之js加密破解抓取网易云音乐评论生成词云

    js破解历程 前言 技能点 界面概况 静态网页 动态网页 页面解析 step1: 找参数 step2:分析js函数 step3:分析参数 step4: 校验 step5:转为python代码 编写爬虫 ...

  5. python爬虫遇到crypto加密

    @TOC 爬虫遇到crypto加密 这几天疯狂加班么的时间写blog,今天处理的快,写一写之前无意见到的很厉害的网站,看了看还是网易易盾写的呢好像?全国建筑市场监管公共服务平台里的企业数据(话说这些都 ...

  6. 当Python爬虫遇到JS加密

    我们在做python爬虫的时候经常会遇到许多的反爬措施,js加密就是其中一种. 破解js加密的方法也有很多种: 1.直接驱动浏览器抓取数据,无视js加密. 2.找到本地加密的js代码,使用python ...

  7. python爬虫遇到js加密,python爬虫遇到JS加密,pyv8运行js,详细解密过程

    首先说一下什么是加密,所谓js加密大多出现在表单提交过程中,下面我将以中国电信为例,详细讲解如何利用pyv8来加密登录的密码.要说明的是pyv8目前仅仅支持python2,用的下伙伴要注意自己的pyt ...

  8. python爬虫——猫眼 fonts 字体破解

    学习之前,看了一下发现网上有教程,应该不难,但是现在都不行了,因为以前反爬虫字体只是简单的换了下字体名称,所有的参数都没有改变,所以有 TTFont 库,直接提取数值相等就可以判断这是代表哪一个字符, ...

  9. python爬虫js逆向加密,Web爬虫处理参数js加密、js混淆、js逆向

    中国空气质量在线监测平台(https://www.aqistudy.cn/html/city_detail.html)在众多的练习中,关闭了前台数据信息的展示,也就是说现在网页是这样的: 但我们主要学 ...

最新文章

  1. workerman源码分析之启动过程
  2. json对象与.net对象互相转换
  3. Windows 远程桌面管理
  4. java 常用接口的实现--compareable
  5. Java中避免if-else-if:策略模式
  6. FloatingActionButton完美显示
  7. LeetCode 623. 在二叉树中增加一行(BFS/DFS)
  8. Java SSM篇2——框架的基本认识
  9. UML交互图——鲁棒图的三元素:抽象对象,实体对象和控制对象
  10. 手把手安装flownet2-pytorch
  11. 20.并发容器之ArrayBlockingQueue和LinkedBlockingQueue实现原理详解
  12. 配置 eNSP 连接VMware虚拟机网络
  13. HardwareRenderer EGL error: EGL_BAD_SURFACE
  14. 【人工智能】无人车系统仿真软件-PreScan
  15. 【经验分享】基于创龙AM5708多核间通信的IPC例程通用开发流程
  16. 爱立信、意大利电信及高通公司基于5G毫米波创下远程传输速度纪录
  17. 2018年机器学习从业者_机器学习从业者在2020年及以后创造收入的5种方式
  18. 防雷器和电涌保护器的区别
  19. win11家庭版设置远程桌面
  20. mysql怎么查询借阅相同图书_MySQL查询练习2

热门文章

  1. 上海微创软件招聘Web开发工程师1年以上经验
  2. 有考虑上海硬件工程师工作机会的吗?
  3. 使用投影纹理进行模型贴花(Mesh Decals)
  4. java判断对象已死_JVM判断对象已死亡?
  5. 基于MFC的桌面电子时钟的设计与实现
  6. Foreign data wrappers
  7. 分治法之一维数组求和问题
  8. python根据字节长度截取字符串_python 字节流 按长度截取
  9. mnist转换为3通道的224*244,生成训练train.txt和vaild.txt
  10. Hive 的交互方式