====老规矩,依旧免费,每天一个解密!代码在最底部====
官网地址:领导留言板-人民网
具体是下图的这个参数
一、加密参数分析
1.参数定位
上来就一个冒号大法,很明显和接口中的四个参数都对上了。
直接给他一个断点
2.看看都传了些什么参数给i()方法
多选几个搜索条件请求分析,发现只有t值是在改变的。那其他参数写死就行。结合其他接口看返回的数据分析t值存放的就是地域、领域等这些搜索条件的分类标签(代码注释中有详细解释)。
那么4个参数是什么就搞明白了,那还等什么直接进i()方法看他是个什么东西。
3.i()方法分析
进来后发现就在我们头上
一步一步走,发现在i()方法中写了一个i,这个i值是e、JSON.stringify(t)、c拼接在一起的
(备注:此时i()方法中的 e=最初e,t=最初t,c=最初l,a=最初h)
再往下走,把i这个变量传到了n ()方法中,别等了,直接进去。
4.n()方法分析
n()方法跳转到了这里,继续往里进。
明晃晃的md5,那等什么,直接把传进来的i给md5一下,看看加密后的值一不一样。
ok完成,写代码吧,这加密很简单,直接纯算。
二、加密纯算代码
====解密不易,在文章底部给点个赞+关注吧!有米的大哥给赏点,感谢!!====
import json
from hashlib import md5
urlPath = "/v2/threads/search" # 可以在方法中写死
# param样例
param = {
"position": 0, # 0为地方留言, 1为部委留言
"keywords": "", # 关键词
"fid": 4, # 地域
"domainId": None, # 领域, 部委留言没有这个参数
"typeId": None, # 类别, 部委留言没有这个参数
"timeRange": None,
"ansChecked": False,
"stTime": None,
"sortType": "0", # sortType: 默认、升序、降序
"page": 1, # 页数,最大20
"rows": 10 # 返回多少条数据,没有上限
}
# 采用三个字段appCode、token、param按一定规则处理拼接后采用md5生成signature
def encode(urlPath, param):
param = str(json.dumps(param, ensure_ascii=False))
appCode = "PC42ce3bfa4980a9" # 固定写死
appCode_md5 = md5(appCode.encode('utf8')).hexdigest()[:16] # 因为appCode是固定的,所以这个参数就是固定的,但再往里分析会发现,他也是md5加密只不过只取了前16位
token = "" # 固定写死
signature = md5((urlPath + param + appCode_md5 + token).encode('utf8')).hexdigest()
return signature
====需要22年至今的数据和完整爬虫源代码的私我====
免责声明
本文所提供的信息仅供个人学习和研究之用,不得用于任何商业目的或非法活动。不保证所提供的下载方法或工具完全有效或安全,也不对任何因使用本文内容而导致的损失或损害承担责任。在使用本文提供的方法或工具时,请自行承担风险,并确保您的行为符合相关法律法规的规定。
转载时请注明原文作者和原文链接
标签:加密,param,appCode,参数,纯算,方法,留言板,md5 From: https://blog.csdn.net/m0_60082046/article/details/144607983