提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
本文在对房地产预售信息收集,在post的请求表单中发现token参数被加密,通过对密文以及在源文件中进行全局搜索发现该网站将token参数进行了RSA加密且使用了自己的加密文件,
一、全局搜索寻找加密参数的生成位置
网站链接:https://zfcj.gz.gov.cn/zfcj/fyxx/projectdetail?sProjectId=e5c21c37c4a849d79004900f85f33056
第四个搜索结果符合本文要求,进入源文件寻找加密方式
至此已经找到token的生成及其加密位置,但此处JSEncrypt()并不是通用的库的类,而是网站自建类。因此需要找到该网站的加密js文件,通过搜索找到加密的js文件
二、编写代码
1.js文件
也就是将网站的js代码扣进自己的js文件中,JSEncrypt()请自行放进js文件中,由于篇幅过长不便展示
function DoSearch(sProjectId, buildingId, houseFunctionId, unitType, houseStatusId, totalAreaId, inAreaId) {
var ak = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC1nflpr8o4Jh74z0KPEIBSt+Q4+eCkz6LdyxGZESFgpiQcdIBbWXujhczBCpGO8n1Mo+purvzyxWJIM/I41wjY9JHQSKZF2FL0IfSP8d+V3knz9MA4QHiIzwtrQEpq5U2VmzvSrLsIcPILFPQLZHgaEdQkGVu0NGAzclsMxYmNSQIDAQAB';
var encrypt = new JSEncrypt();
encrypt.setPublicKey(ak);
var token = encrypt.encrypt(sProjectId) + "@" + encrypt.encrypt(buildingId) + "@" + encrypt.encrypt(houseFunctionId) + "@" + encrypt.encrypt(unitType) + "@" + encrypt.encrypt(houseStatusId) + "@" + encrypt.encrypt(totalAreaId) + "@" + encrypt.encrypt(inAreaId);
return token;
}
2.其他代码
代码如下(示例):
def get_PreSell(url_jbxx):#获取预售证号,输入基本信息页面的链接
resp_jbxx=requests.get