网页手机号抓取程序( 微信开发工具调用接口就是参数不完整的情况(图))
优采云 发布时间: 2022-04-13 13:11网页手机号抓取程序(
微信开发工具调用接口就是参数不完整的情况(图))
index.wxml页面加上
获取用户手机号码
index里面加上
getPhoneNumber: function (e) {
console.log(e);
console.log(e.detail.iv);
console.log(e.detail.encryptedData);
wx.login({
success: function (r) {
console.log(r.code);
wx.request({
url: '/http://192.168.1.148:8000/api/applet/login?code=' + r.code + '&iv=' + e.detail.iv + '&encrypted=' + e.detail.encryptedData, //这里就写上后台解析手机号的接口
//这里的几个参数是获取授权后的加密数据,作为参数传递给后台就行了
method: 'POST',
header: {
'content-type': 'application/x-www-form-urlencoded' // POST请求
},
success(res) {
console.log(res.data)
}
})
}
})
}
AES工具类
/**
* Copyright (c) wpjava@163.com 2014 All Rights Reserved.
*/
package com.ejavashop.web.util.applet;
import java.security.spec.AlgorithmParameterSpec;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.codec.binary.Base64;
/**
*
* @Filename: AES.java
* @Version: 1.0
* @Author: 余健
* @Email: 1164273877@qq.com
*
*/
public class AES {
public static String wxDecrypt (String encrypted, String sessionKey, String iv)throws Exception {
byte[] encrypData = Base64.decodeBase64(encrypted);
byte[] ivData = Base64.decodeBase64(iv);
byte[] sKey = Base64.decodeBase64(sessionKey);
String decrypt = decrypt(sKey,ivData,encrypData);
return decrypt;
}
public static String decrypt(byte[] key, byte[] iv, byte[] encData) throws Exception {
AlgorithmParameterSpec ivSpec = new IvParameterSpec(iv);
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
SecretKeySpec keySpec = new SecretKeySpec(key, "AES");
cipher.init(Cipher.DECRYPT_MODE, keySpec, ivSpec);
//解析解密后的字符串
return new String(cipher.doFinal(encData),"UTF-8");
}
}
直接拨打电话 = AES.wxDecrypt( encrypted, sessionKey, iv);
最终返回结果
注:encrypted,iv是从小程序获取的加密参数。sessionKey是通过一次性代码获取的,有一个很奇怪的问题。无需从微信开发工具调用接口即可成功获取手机号。如果用微信开发工具调用接口,参数不全(我在后台工作,对前端不熟悉)