Python解密GET请求加密响应Payload及RSA私钥获取问题咨询
问题描述
我正尝试使用Python requests库抓取南非铂金品类的「出口潜力」数据,需要获取每个对应国家的相关字段。
我原本认为可以直接从GET请求的响应中提取数据,但通过浏览器调试工具的网络面板查看后,发现对应数据接口的GET请求返回的响应是加密的,加密内容示例如下:
6iCAiWaW1XZJbKsS5qQ/xi/BAjjuW+be41Kv9tsJK8QuAo076JqB45lqPYR76rLsJjmRXBnrxExBXs5tJSfCeYpAPOrWE1raR+UyDJtujAgezfZV22PH16UI+RhwvBA26hcd8FvxLCCA1/DPDNNT6xKGVXi0Ykm7ih2mFcR3N5mq...
我推测该内容使用RSA算法加密,理论上可通过私钥解密数据,但我不清楚私钥的获取途径,也无法完全确认加密算法,这类加密响应我在多个其他站点也遇到过,并非仅针对当前ITC站点。
现有两个问题需要咨询:
- 如何使用Python解密这类加密数据?
- 解密所需的RSA私钥可从哪里获取?
解答
1. Python解密RSA加密数据的方法
如果确认加密方式为RSA-OAEP、哈希算法为SHA-1,可以使用pycryptodome库完成解密,操作步骤如下:
- 先安装依赖库:
pip install pycryptodome - 解密代码示例:
import base64 from Crypto.Cipher import PKCS1_OAEP from Crypto.PublicKey import RSA from Crypto.Hash import SHA1 # 加载RSA私钥 private_key = RSA.import_key(open("private.pem").read()) # 初始化解密器 cipher = PKCS1_OAEP.new(private_key, hashAlgo=SHA1) # 对接口返回的base64格式密文先做base64解码 encrypted_data = base64.b64decode("替换为你的加密响应内容") # 解密得到明文 decrypted_data = cipher.decrypt(encrypted_data) # 转成字符串即可得到原始数据,一般为JSON格式 print(decrypted_data.decode("utf-8"))
2. RSA私钥的获取方式
RSA私钥属于服务端保密信息,正常不会公开暴露,你可以从以下方向尝试获取:
- 前端JS源码检索:既然浏览器端可以正常渲染数据,说明前端代码里包含解密逻辑和私钥。打开浏览器调试工具的「Sources」面板,搜索
RSA、decrypt、private key、BEGIN RSA PRIVATE KEY这类关键词,一般能找到硬编码在JS文件里的私钥内容,部分站点会对JS做混淆,需要先解混淆再提取。 - 更简单的替代方案:不需要破解加密接口,直接用Playwright、Selenium这类无头浏览器工具模拟正常访问,直接从渲染完成的页面DOM中提取你需要的字段,完全跳过解密步骤。
内容的提问来源于stack exchange,提问作者Zanzibar88
相关产品推荐
相关产品推荐

