
网页手机号抓取程序
网页手机号抓取程序(使用一个新的网络爬虫来获取访问者的电话号码网页手机号码获取)
网站优化 • 优采云 发表了文章 • 0 个评论 • 131 次浏览 • 2021-12-15 02:13
先从第一个说起,其实就是网站或者应用开发者使用新的网络爬虫来获取访问者的电话号码。获取网页电话号码的关键是在网站的标题中插入一段设计代码,捕获指定的网站和app的手机号码。访问者访问网页时,会询问用户,但这种抓取方式速度快,因为涉嫌侵犯隐私,容易被百度搜索和k站查到,当然是为了保护他们网站的权限和总流量,很多网站管理员放弃了这种实际操作。二是找靠谱的互联网大数据运营商谈。代理合作,基本思路是,在手机上使用3g流量的访问者将可以通过https报告回馈给网站或应用程序,并且访问者的访问者报告可以测量他们的电话号码,他们做了什么访问网站,停留多长时间,可以计算访问者需求的物理模型。向提供这些专业服务的公司发送反馈信息,并为他提供营销后台管理,让他打电话处理客户需求。由于是皮肤过敏的个人信息,保护客户隐私,第二客户在这些方面的转化率会很高。@网站,他们停留了多久,并且可以计算出访客需求的物理模型。向提供这些专业服务的公司发送反馈信息,并为他提供营销后台管理,让他打电话处理客户需求。由于是皮肤过敏的个人信息,保护客户隐私,第二客户在这些方面的转化率会很高。@网站,他们停留了多久,并且可以计算出访客需求的物理模型。向提供这些专业服务的公司发送反馈信息,并为他提供营销后台管理,让他打电话处理客户需求。由于是皮肤过敏的个人信息,保护客户隐私,第二客户在这些方面的转化率会很高。
许多业务经理都会使用它。接下来主要介绍网站访问者抢手机的第二种方式。根据规律,通过运营商的大数据、人群画像的精准定位以及游客的行为,可以定位用户的需求,达到精准的营销效果。下面是手机号获取系统的截图。任何人和任何上网行为都离不开运营商对每个人的上网行为、通话行为、短信交互、实时定位等行为的存储。每一个行为都反映了客户的需求。你想要什么样的客户行为?对我们来说,无非就是查找和提取访问者手机号码的具体过程。自主研发的系统自动获取手机号程序,推荐广告,支持小额支付测试交易。请参阅上述文件。运营商根据您的要求存储每个用户的行为。型号、过滤器,完美满足客户的要求。客户可以根据上面列出的类型提出您的要求。包括但不限于电话号码类别、搜索词类别、url类别、应用类别、位置类别、短信类别,如果您需要其他维度 5、为您定制,过滤您的目标客户。低成本的源头+高效率的改造,解决客户10倍以上的盈利问题。安装方法和代码安装在移动站点前身。需要添加所有页面。如果没有单独的移动站点,安装方法是一样的。访问率,手机号抓取软件的访问率高达60%。请注意,如果你保证80%的访问率,95%以上肯定是骗子。网站程序目前我们的软件支持市面上大部分程序,如asp、php、java等,操作系统支持android、Apple系统、Symbian系统等。 查看全部
网页手机号抓取程序(使用一个新的网络爬虫来获取访问者的电话号码网页手机号码获取)
先从第一个说起,其实就是网站或者应用开发者使用新的网络爬虫来获取访问者的电话号码。获取网页电话号码的关键是在网站的标题中插入一段设计代码,捕获指定的网站和app的手机号码。访问者访问网页时,会询问用户,但这种抓取方式速度快,因为涉嫌侵犯隐私,容易被百度搜索和k站查到,当然是为了保护他们网站的权限和总流量,很多网站管理员放弃了这种实际操作。二是找靠谱的互联网大数据运营商谈。代理合作,基本思路是,在手机上使用3g流量的访问者将可以通过https报告回馈给网站或应用程序,并且访问者的访问者报告可以测量他们的电话号码,他们做了什么访问网站,停留多长时间,可以计算访问者需求的物理模型。向提供这些专业服务的公司发送反馈信息,并为他提供营销后台管理,让他打电话处理客户需求。由于是皮肤过敏的个人信息,保护客户隐私,第二客户在这些方面的转化率会很高。@网站,他们停留了多久,并且可以计算出访客需求的物理模型。向提供这些专业服务的公司发送反馈信息,并为他提供营销后台管理,让他打电话处理客户需求。由于是皮肤过敏的个人信息,保护客户隐私,第二客户在这些方面的转化率会很高。@网站,他们停留了多久,并且可以计算出访客需求的物理模型。向提供这些专业服务的公司发送反馈信息,并为他提供营销后台管理,让他打电话处理客户需求。由于是皮肤过敏的个人信息,保护客户隐私,第二客户在这些方面的转化率会很高。
许多业务经理都会使用它。接下来主要介绍网站访问者抢手机的第二种方式。根据规律,通过运营商的大数据、人群画像的精准定位以及游客的行为,可以定位用户的需求,达到精准的营销效果。下面是手机号获取系统的截图。任何人和任何上网行为都离不开运营商对每个人的上网行为、通话行为、短信交互、实时定位等行为的存储。每一个行为都反映了客户的需求。你想要什么样的客户行为?对我们来说,无非就是查找和提取访问者手机号码的具体过程。自主研发的系统自动获取手机号程序,推荐广告,支持小额支付测试交易。请参阅上述文件。运营商根据您的要求存储每个用户的行为。型号、过滤器,完美满足客户的要求。客户可以根据上面列出的类型提出您的要求。包括但不限于电话号码类别、搜索词类别、url类别、应用类别、位置类别、短信类别,如果您需要其他维度 5、为您定制,过滤您的目标客户。低成本的源头+高效率的改造,解决客户10倍以上的盈利问题。安装方法和代码安装在移动站点前身。需要添加所有页面。如果没有单独的移动站点,安装方法是一样的。访问率,手机号抓取软件的访问率高达60%。请注意,如果你保证80%的访问率,95%以上肯定是骗子。网站程序目前我们的软件支持市面上大部分程序,如asp、php、java等,操作系统支持android、Apple系统、Symbian系统等。
网页手机号抓取程序(微信服务器使用code换取sessionKey加密时使用的sessionKey一致才可解密)
网站优化 • 优采云 发表了文章 • 0 个评论 • 78 次浏览 • 2021-12-15 02:11
最近在做一个toC的小程序,把之前做的东西捡起来。但是我发现了之前踩过的一些坑,我又踩了。
实在想不起来了~花点时间做个笔记。
重点说明:获取微信用户绑定的手机号,需要先调用wx.login接口。
原理:小程序获取的手机号码信息是微信服务器加密后的信息。微信服务器会根据wx.login下发的临时码对应的sessionKey对手机号信息进行加密。使用开发者服务器上的代码换取sessionKey。只有交换的 sessionKey 与加密信息时使用的 sessionKey 一致,才能解密成功。
注意:服务端使用code交换的sessionKey不是加密时使用的sessionKey,导致解密失败。建议开发者提前登录。
一、 登录授权要求
由于业务限制,用户必须在登录小程序前对其手机号码进行授权,才能进入小程序。
前端读取App.js入口文件中的本地存储,判断是否有手机号。如果有手机号,则直接刷新用户信息登录,如果没有,则需要通过登录授权流程登录。
二、 公司内部小程序19年开发,登录授权设计。后台设计了两个界面,登录注册界面,更新用户信息界面。登录和注册接口逻辑:
1、 根据输入参数code,调用微信auth.code2Session接口换取openId和session_key。
2、 交换成功,查询user表中是否存在输入参数openId,如果存在则更新session_key,如果不存在则创建用户并保存openId和session_key。处理完毕后,将openId返回给前端。
前端调用:
在登录页面的onShow生命周期中,调用该接口,将返回的数据记录在页面状态中。
onShow: function () {
let that = this;
// 判断是否缓存手机号
that.data.purePhoneNumber = wx.getStorageSync("purePhoneNumber");
if (that.data.purePhoneNumber == '') {
wx.login({
success(res) {
WXrequest.post({
url: '/code2Session',
data: {
'jsCode': res.code
}
}).then(res => {
wx.setStorageSync('openid', res.data.openid);
that.data.openid = res.data.openid;
});
}
});
} else {
wx.showLoading({
title: '登录中' // 数据请求前loading
})
wx.switchTab({
url: '../mine/index'
})
}
}
复制代码
更新用户信息接口逻辑:
1、 根据输入参数openId到user表查询session_key,结合输入参数encryptedData和iv解密得到手机号码。
2、 手机号解密后,更新用户信息,将用户信息返回给前端。
前端调用:
用户在获取到手机号码后主动触发登录按钮并调用。
getPhoneNumber: function (e) {
let that = this;
if (e.detail.errMsg == 'getPhoneNumber:ok') {
WXrequest.post({
url: '/getWXUserPhone',
data: {
'encryptedData': e.detail.encryptedData,
'openid': that.data.openid,
'iv': e.detail.iv,
}
}).then(res => {
// 存用户手机号及用户信息
wx.setStorageSync('purePhoneNumber', res.data.purePhoneNumber);
wx.setStorageSync('userInfo', res.data);
// 跳转首页
wx.showLoading({
title: '登录中'
})
setTimeout(function () {
wx.switchTab({
url: '../mine/index'
})
}, 1000)
})
}
}
复制代码
注意:该代码有效期为五分钟。代码是在登录页面的onShow生命周期中获取的。如果用户在 5 分钟后打开页面并授权电话号码,则解密将失败。需要优化。
三、 最近开发的toC小程序登录授权设计。后台的同事设计了小程序登录+获取手机号的界面,称为登录授权界面。接口逻辑:
1、 根据输入参数code,首先调用auth.code2Session接口,换取openId和session_key。
2、 根据上一步交换的appId、encryptedData、session_key对数据进行解密,得到手机号码。
3、 查询用户表中是否存在openId,并进行逻辑处理。
如果存在,则判断用户手机号码是否与解析出的手机号码一致,一致接口返回用户信息;如果不一致,则更新手机号码,并将之前的手机号码记录在历史记录中。
如果不存在,直接创建用户并返回用户信息。
前端调用:
由于代码的原因,有效期为五分钟。获取登录页面onShow生命周期中的code并不能保证用户会在五分钟内对手机号码进行授权。
所以获取手机号成功后,调用wx.login()获取code,然后调用登录授权接口。
问题:
先获取手机号再调用wx.login(),导致后台解析手机号失败,报错:session_key is invalid。
根据以往的经验,我开始直接写代码,时间太长,忘记了一些注意事项。报错后再次阅读文档。文档明确提醒:要获取微信用户绑定的手机号,需要先调用wx.login接口。
注:阅读以下文档,了解微信对开放数据的验证解密,你会更深刻的体会到为什么需要在获取手机号之前调用wx.login接口。
解决方案:
在登录页面的onShow生命周期中,每隔几分钟刷新一次登录状态。记录页面状态下的状态,获取手机号成功后发送到后台。
componentDidShow() {
// 隐藏房子
Taro.hideHomeButton();
// code 用户登录凭证(有效期五分钟), 停留在当前页面每隔两分钟,重新刷新登陆态,否则后台解析session_key会失效
Taro.login({
success: (res) => {
this.setState({
code: res.code,
});
},
});
this.timer = setInterval(() => {
Taro.login({
success: (res) => {
this.setState({
code: res.code,
});
},
});
}, 60000 * 2);
}
// 获取手机号
getPhoneNumber(e) {
if (e.detail.errMsg.indexOf("getPhoneNumber:fail") != -1) {
if (e.detail.errMsg.indexOf("user cancel") != -1) {
toast("请不要重复点击、以免取消微信授权");
} else {
toast("允许授权将获得更好的服务");
}
} else {
this.setState({
loading: true,
});
Taro.request({
url: `${config.baseUrl}/user`,
method: "POST",
header: { "Content-Type": "application/json" },
data: {
code: this.state.code,
iv: e.detail.iv,
encryptedData: e.detail.encryptedData,
},
success: (res) => {
const redData = res.data.data || {};
if (res.data.code != 0) {
toast(res.data.msg);
} else {
Taro.setStorageSync(`${config.env}openId`, redData.openId);
Taro.setStorageSync(`${config.env}userId`, redData.userId);
Taro.setStorageSync(`${config.env}phone`, redData.phone);
this.props.dispatch({
type: "User/setUser",
payload: {
userInfo: redData,
},
});
this.setState({
loading: false,
});
}
},
fail: (err) => {
this.setState({
loading: false,
});
toast(err);
},
});
}
}
// DOM
this.getPhoneNumber(e)}
>
{this.state.loading ? "登录中" : "授权手机号"}
复制代码
四、详细了解微信登录授权机制的原理。
踩坑后,重新研究了OAuth2.0安全协议、小程序登录授权、开放数据验证解密等流程及底层原理。
稍后花时间在笔记中组织它...... 查看全部
网页手机号抓取程序(微信服务器使用code换取sessionKey加密时使用的sessionKey一致才可解密)
最近在做一个toC的小程序,把之前做的东西捡起来。但是我发现了之前踩过的一些坑,我又踩了。
实在想不起来了~花点时间做个笔记。
重点说明:获取微信用户绑定的手机号,需要先调用wx.login接口。
原理:小程序获取的手机号码信息是微信服务器加密后的信息。微信服务器会根据wx.login下发的临时码对应的sessionKey对手机号信息进行加密。使用开发者服务器上的代码换取sessionKey。只有交换的 sessionKey 与加密信息时使用的 sessionKey 一致,才能解密成功。
注意:服务端使用code交换的sessionKey不是加密时使用的sessionKey,导致解密失败。建议开发者提前登录。
一、 登录授权要求
由于业务限制,用户必须在登录小程序前对其手机号码进行授权,才能进入小程序。
前端读取App.js入口文件中的本地存储,判断是否有手机号。如果有手机号,则直接刷新用户信息登录,如果没有,则需要通过登录授权流程登录。
二、 公司内部小程序19年开发,登录授权设计。后台设计了两个界面,登录注册界面,更新用户信息界面。登录和注册接口逻辑:
1、 根据输入参数code,调用微信auth.code2Session接口换取openId和session_key。
2、 交换成功,查询user表中是否存在输入参数openId,如果存在则更新session_key,如果不存在则创建用户并保存openId和session_key。处理完毕后,将openId返回给前端。
前端调用:
在登录页面的onShow生命周期中,调用该接口,将返回的数据记录在页面状态中。
onShow: function () {
let that = this;
// 判断是否缓存手机号
that.data.purePhoneNumber = wx.getStorageSync("purePhoneNumber");
if (that.data.purePhoneNumber == '') {
wx.login({
success(res) {
WXrequest.post({
url: '/code2Session',
data: {
'jsCode': res.code
}
}).then(res => {
wx.setStorageSync('openid', res.data.openid);
that.data.openid = res.data.openid;
});
}
});
} else {
wx.showLoading({
title: '登录中' // 数据请求前loading
})
wx.switchTab({
url: '../mine/index'
})
}
}
复制代码
更新用户信息接口逻辑:
1、 根据输入参数openId到user表查询session_key,结合输入参数encryptedData和iv解密得到手机号码。
2、 手机号解密后,更新用户信息,将用户信息返回给前端。
前端调用:
用户在获取到手机号码后主动触发登录按钮并调用。
getPhoneNumber: function (e) {
let that = this;
if (e.detail.errMsg == 'getPhoneNumber:ok') {
WXrequest.post({
url: '/getWXUserPhone',
data: {
'encryptedData': e.detail.encryptedData,
'openid': that.data.openid,
'iv': e.detail.iv,
}
}).then(res => {
// 存用户手机号及用户信息
wx.setStorageSync('purePhoneNumber', res.data.purePhoneNumber);
wx.setStorageSync('userInfo', res.data);
// 跳转首页
wx.showLoading({
title: '登录中'
})
setTimeout(function () {
wx.switchTab({
url: '../mine/index'
})
}, 1000)
})
}
}
复制代码
注意:该代码有效期为五分钟。代码是在登录页面的onShow生命周期中获取的。如果用户在 5 分钟后打开页面并授权电话号码,则解密将失败。需要优化。
三、 最近开发的toC小程序登录授权设计。后台的同事设计了小程序登录+获取手机号的界面,称为登录授权界面。接口逻辑:
1、 根据输入参数code,首先调用auth.code2Session接口,换取openId和session_key。
2、 根据上一步交换的appId、encryptedData、session_key对数据进行解密,得到手机号码。
3、 查询用户表中是否存在openId,并进行逻辑处理。
如果存在,则判断用户手机号码是否与解析出的手机号码一致,一致接口返回用户信息;如果不一致,则更新手机号码,并将之前的手机号码记录在历史记录中。
如果不存在,直接创建用户并返回用户信息。
前端调用:
由于代码的原因,有效期为五分钟。获取登录页面onShow生命周期中的code并不能保证用户会在五分钟内对手机号码进行授权。
所以获取手机号成功后,调用wx.login()获取code,然后调用登录授权接口。
问题:
先获取手机号再调用wx.login(),导致后台解析手机号失败,报错:session_key is invalid。
根据以往的经验,我开始直接写代码,时间太长,忘记了一些注意事项。报错后再次阅读文档。文档明确提醒:要获取微信用户绑定的手机号,需要先调用wx.login接口。
注:阅读以下文档,了解微信对开放数据的验证解密,你会更深刻的体会到为什么需要在获取手机号之前调用wx.login接口。
解决方案:
在登录页面的onShow生命周期中,每隔几分钟刷新一次登录状态。记录页面状态下的状态,获取手机号成功后发送到后台。
componentDidShow() {
// 隐藏房子
Taro.hideHomeButton();
// code 用户登录凭证(有效期五分钟), 停留在当前页面每隔两分钟,重新刷新登陆态,否则后台解析session_key会失效
Taro.login({
success: (res) => {
this.setState({
code: res.code,
});
},
});
this.timer = setInterval(() => {
Taro.login({
success: (res) => {
this.setState({
code: res.code,
});
},
});
}, 60000 * 2);
}
// 获取手机号
getPhoneNumber(e) {
if (e.detail.errMsg.indexOf("getPhoneNumber:fail") != -1) {
if (e.detail.errMsg.indexOf("user cancel") != -1) {
toast("请不要重复点击、以免取消微信授权");
} else {
toast("允许授权将获得更好的服务");
}
} else {
this.setState({
loading: true,
});
Taro.request({
url: `${config.baseUrl}/user`,
method: "POST",
header: { "Content-Type": "application/json" },
data: {
code: this.state.code,
iv: e.detail.iv,
encryptedData: e.detail.encryptedData,
},
success: (res) => {
const redData = res.data.data || {};
if (res.data.code != 0) {
toast(res.data.msg);
} else {
Taro.setStorageSync(`${config.env}openId`, redData.openId);
Taro.setStorageSync(`${config.env}userId`, redData.userId);
Taro.setStorageSync(`${config.env}phone`, redData.phone);
this.props.dispatch({
type: "User/setUser",
payload: {
userInfo: redData,
},
});
this.setState({
loading: false,
});
}
},
fail: (err) => {
this.setState({
loading: false,
});
toast(err);
},
});
}
}
// DOM
this.getPhoneNumber(e)}
>
{this.state.loading ? "登录中" : "授权手机号"}
复制代码
四、详细了解微信登录授权机制的原理。
踩坑后,重新研究了OAuth2.0安全协议、小程序登录授权、开放数据验证解密等流程及底层原理。
稍后花时间在笔记中组织它......
网页手机号抓取程序(小程序中有注册用户信息的地方,用户需要填写手机号)
网站优化 • 优采云 发表了文章 • 0 个评论 • 46 次浏览 • 2021-12-14 19:28
小程序中有很多地方会用到注册用户信息。用户需要填写手机号等,有了这个组件,可以快速获取微信绑定的手机号,无需用户填写。
1. getPhoneNumber 组件是通过按钮实现的(其他标签无效)。在按钮中设置open-type="getPhoneNumber",绑定bindgetphonenumber事件获取回调。
2.在使用该组件之前,必须先调用登录界面。如果没有调用login,点击按钮,会提示先调用login。
App({
onLaunch: function () {
wx.login({
success: function (res) {
if (res.code) {
//发起网络请求
console.log(res.code)
} else {
console.log('获取用户登录态失败!' + res.errMsg)
}
}
});
}
})
3.通过bindgetphonenumber绑定的事件获取回调。有三个回调参数,
errMsg:用户点击取消或授权信息回调。
iv:加密算法的初始向量(如果用户不同意授权则未定义)。
encryptedData:用户信息的加密数据(如果用户不同意授权,也会返回undefined)
getPhoneNumber: function(e) {
console.log(e.detail.errMsg)
console.log(e.detail.iv)
console.log(e.detail.encryptedData)
if (e.detail.errMsg == 'getPhoneNumber:fail user deny'){
wx.showModal({
title: '提示',
showCancel: false,
content: '未授权',
success: function (res) { }
})
} else {
wx.showModal({
title: '提示',
showCancel: false,
content: '同意授权',
success: function (res) { }
})
}
}
4.最后,我们需要按照自己的业务逻辑进行处理。如果用户不同意授权,我们可能会有一个界面让他手动输入。如果不是强制获取手机号,我们可以直接跳转到页面进行下一步。. (用户不同意授权errMsg返回'getPhoneNumber: fail user deny')
5. 用户同意授权,我们可以根据登录时得到的code通过后台和微信处理得到session_key,最后通过app_id、session_key、iv、encryptedData(用户同意授权errMsg到返回'getPhoneNumber:好的')
总结
以上就是小编为大家介绍的获取手机号授权用户登录功能的微信小程序。我希望它会对你有所帮助。如果您有任何问题,请给我留言。小编会及时回复您。非常感谢大家对脸圈教程网站的支持! 查看全部
网页手机号抓取程序(小程序中有注册用户信息的地方,用户需要填写手机号)
小程序中有很多地方会用到注册用户信息。用户需要填写手机号等,有了这个组件,可以快速获取微信绑定的手机号,无需用户填写。
1. getPhoneNumber 组件是通过按钮实现的(其他标签无效)。在按钮中设置open-type="getPhoneNumber",绑定bindgetphonenumber事件获取回调。
2.在使用该组件之前,必须先调用登录界面。如果没有调用login,点击按钮,会提示先调用login。
App({
onLaunch: function () {
wx.login({
success: function (res) {
if (res.code) {
//发起网络请求
console.log(res.code)
} else {
console.log('获取用户登录态失败!' + res.errMsg)
}
}
});
}
})
3.通过bindgetphonenumber绑定的事件获取回调。有三个回调参数,
errMsg:用户点击取消或授权信息回调。
iv:加密算法的初始向量(如果用户不同意授权则未定义)。
encryptedData:用户信息的加密数据(如果用户不同意授权,也会返回undefined)

getPhoneNumber: function(e) {
console.log(e.detail.errMsg)
console.log(e.detail.iv)
console.log(e.detail.encryptedData)
if (e.detail.errMsg == 'getPhoneNumber:fail user deny'){
wx.showModal({
title: '提示',
showCancel: false,
content: '未授权',
success: function (res) { }
})
} else {
wx.showModal({
title: '提示',
showCancel: false,
content: '同意授权',
success: function (res) { }
})
}
}
4.最后,我们需要按照自己的业务逻辑进行处理。如果用户不同意授权,我们可能会有一个界面让他手动输入。如果不是强制获取手机号,我们可以直接跳转到页面进行下一步。. (用户不同意授权errMsg返回'getPhoneNumber: fail user deny')
5. 用户同意授权,我们可以根据登录时得到的code通过后台和微信处理得到session_key,最后通过app_id、session_key、iv、encryptedData(用户同意授权errMsg到返回'getPhoneNumber:好的')
总结
以上就是小编为大家介绍的获取手机号授权用户登录功能的微信小程序。我希望它会对你有所帮助。如果您有任何问题,请给我留言。小编会及时回复您。非常感谢大家对脸圈教程网站的支持!
网页手机号抓取程序(官方流程图小程序使用方法介绍String)
网站优化 • 优采云 发表了文章 • 0 个评论 • 54 次浏览 • 2021-12-14 10:06
最近在做小程序开发,遇到了很多坑。拿到小程序的手机号后,遇到了一个很傻的坑。
工艺介绍
官方流程图
小程序使用方法
组件open-type的值需要设置为getPhoneNumber。用户点击同意后,可以通过bindgetphonenumber事件回调获取微信服务器返回的加密数据,然后第三方服务器结合session_key和app_id进行解密,得到电话号码。
返回参数说明
参数类型说明
加密数据
细绳
包括敏感数据在内的完整用户信息的加密数据,详见
四
细绳
加密算法的初始向量,详见
小程序收到这些参数后,将code、encryptedData、iv发送到后台,然后在后台解密
后台解密
解密前需要session_key配合解密,所以先通过code获取session_key
# 获取openid,session_key
# Appid为小程序id
openid_url = "https://api.weixin.qq.com/sns/ ... ot%3B % (
APP_ID, APP_KEY, code
)
req = requests.get(openid_url)
rep = req.json()
session_key = rep.get("session_key")
得到session_key、encryptedData、iv后,就可以进行解密了。python2的实现代码如下:
import base64
import json
from Crypto.Cipher import AES
class WXBizDataCrypt:
def __init__(self, appId, sessionKey):
self.appId = appId
self.sessionKey = sessionKey
def decrypt(self, encryptedData, iv):
# base64 decode
sessionKey = base64.b64decode(self.sessionKey)
encryptedData = base64.b64decode(encryptedData)
iv = base64.b64decode(iv)
cipher = AES.new(sessionKey, AES.MODE_CBC, iv)
decrypted = json.loads(self._unpad(cipher.decrypt(encryptedData)))
if decrypted['watermark']['appid'] != self.appId:
raise Exception('Invalid Buffer')
return decrypted
def _unpad(self, s):
return s[:-ord(s[len(s)-1:])]
调用参数
# APP_ID为小程序id不是openid!!!
pc = wx_jm(APP_ID, session_key)
res = pc.decrypt(encryptedData, iv)
参数详情参考微信官方文档
微信官方提供多种编程语言的示例代码。点击下载
返回数据格式
{
"phoneNumber": "13580006666",
"purePhoneNumber": "13580006666",
"countryCode": "86",
"watermark":
{
"appid":"APPID",
"timestamp":TIMESTAMP
}
}
总结
以上就是小编为python获取微信小程序手机号并绑定的坑。我希望它会对你有所帮助。如有问题,请给我留言,小编会及时回复您。非常感谢您对ASPKU源代码库网站的支持!
注:请移步python教程频道阅读相关教程知识。 查看全部
网页手机号抓取程序(官方流程图小程序使用方法介绍String)
最近在做小程序开发,遇到了很多坑。拿到小程序的手机号后,遇到了一个很傻的坑。
工艺介绍

官方流程图

小程序使用方法
组件open-type的值需要设置为getPhoneNumber。用户点击同意后,可以通过bindgetphonenumber事件回调获取微信服务器返回的加密数据,然后第三方服务器结合session_key和app_id进行解密,得到电话号码。
返回参数说明
参数类型说明
加密数据
细绳
包括敏感数据在内的完整用户信息的加密数据,详见
四
细绳
加密算法的初始向量,详见
小程序收到这些参数后,将code、encryptedData、iv发送到后台,然后在后台解密
后台解密
解密前需要session_key配合解密,所以先通过code获取session_key
# 获取openid,session_key
# Appid为小程序id
openid_url = "https://api.weixin.qq.com/sns/ ... ot%3B % (
APP_ID, APP_KEY, code
)
req = requests.get(openid_url)
rep = req.json()
session_key = rep.get("session_key")
得到session_key、encryptedData、iv后,就可以进行解密了。python2的实现代码如下:
import base64
import json
from Crypto.Cipher import AES
class WXBizDataCrypt:
def __init__(self, appId, sessionKey):
self.appId = appId
self.sessionKey = sessionKey
def decrypt(self, encryptedData, iv):
# base64 decode
sessionKey = base64.b64decode(self.sessionKey)
encryptedData = base64.b64decode(encryptedData)
iv = base64.b64decode(iv)
cipher = AES.new(sessionKey, AES.MODE_CBC, iv)
decrypted = json.loads(self._unpad(cipher.decrypt(encryptedData)))
if decrypted['watermark']['appid'] != self.appId:
raise Exception('Invalid Buffer')
return decrypted
def _unpad(self, s):
return s[:-ord(s[len(s)-1:])]
调用参数
# APP_ID为小程序id不是openid!!!
pc = wx_jm(APP_ID, session_key)
res = pc.decrypt(encryptedData, iv)
参数详情参考微信官方文档
微信官方提供多种编程语言的示例代码。点击下载
返回数据格式
{
"phoneNumber": "13580006666",
"purePhoneNumber": "13580006666",
"countryCode": "86",
"watermark":
{
"appid":"APPID",
"timestamp":TIMESTAMP
}
}
总结
以上就是小编为python获取微信小程序手机号并绑定的坑。我希望它会对你有所帮助。如有问题,请给我留言,小编会及时回复您。非常感谢您对ASPKU源代码库网站的支持!
注:请移步python教程频道阅读相关教程知识。
网页手机号抓取程序(运营商大数据抓取的种类和种类大解析!! )
网站优化 • 优采云 发表了文章 • 0 个评论 • 98 次浏览 • 2021-12-14 03:17
)
一、运营商的大数据采集类型
1、如今,运营商的大数据并不均衡。市场上获取手机号码的方式有很多种。最原创的是:一是通过数据采集软件,利用采集网站软件抓取客户主动留下的手机号码。二是爬取网站,手机号已经在APP上,三是通过网站中的手机号安装代码获取手机号。这些都是通过在网站中安装抓取码然后抓取来访者的手机号获得的,但是今年6月因为被曝光而停止了。
缺点如下。一是只能抓取自己的网站访客电话号码,二是只能被php网站使用,三是涉及客户隐私,容易被百度检测晋升。
二、运营商大数据优势
运营商大数据可以根据同行提供的网站、APP、微信小程序、400电话、固话获取目标客户的手机号码。与Python不同,无需登录网站嵌入代码中,运营商大数据供运营商手机用户在网站和APP、400通话、固话使用消耗流量或资费,由运营商标注,然后model为网站,获取单次访问APP超过一分钟的目标客户手机号,所以运营商的大数据不再局限于自己的网站获取客户手机号码,任何网站、APP、400电话、固话都可以抓取获取。我们是正规的运营商,我们和运营商有深入的合作。运营商抓取数据发送给公司,然后提供专门的大数据营销后台供公司调用。
比如一个peer在百度上出价,你可以直接从peer的网站中截取流,通过外呼和短信的方式触达客户,转化客户。
三、CPA 目标客户
可能有些人对CPA这个名词有点陌生,那么就让小编来给大家解释一下什么是CPA吧。CPA是指有专业电子营销团队呼唤的目标客户,比如想要装修或者消防证的客户。, 我们提供的数据是由专业的电话营销团队与客户交谈实现的,业务方也可以收听录音。周转率为40%-50%。
由于大数据采集是直接与运营商合作,后端可以明确指定要拨打的区域,是合法正规的数据提供,长期稳定合作是可能的。
您好,我们在做精准客户拦截,云网客户获取系统
例如:
同一网站每天有多少客户访问了他们的网站,我们可以实时、频繁地拦截每天访问网站的客户的手机号码
对于同行业的400个电话,或者企业固话,每天有多少客户来电,我们可以拦截来电客户的电话号码
或者同行使用百度、今日头条、微信等平台推广落地页,我们可以实时拦截访问过该页面的客户手机号
安居客、土巴兔、瓜子二手车、宜信贷等垂直行业APP,可实时拦截指定区域或全国范围内访问APP的用户手机号码
查看全部
网页手机号抓取程序(运营商大数据抓取的种类和种类大解析!!
)
一、运营商的大数据采集类型
1、如今,运营商的大数据并不均衡。市场上获取手机号码的方式有很多种。最原创的是:一是通过数据采集软件,利用采集网站软件抓取客户主动留下的手机号码。二是爬取网站,手机号已经在APP上,三是通过网站中的手机号安装代码获取手机号。这些都是通过在网站中安装抓取码然后抓取来访者的手机号获得的,但是今年6月因为被曝光而停止了。
缺点如下。一是只能抓取自己的网站访客电话号码,二是只能被php网站使用,三是涉及客户隐私,容易被百度检测晋升。

二、运营商大数据优势
运营商大数据可以根据同行提供的网站、APP、微信小程序、400电话、固话获取目标客户的手机号码。与Python不同,无需登录网站嵌入代码中,运营商大数据供运营商手机用户在网站和APP、400通话、固话使用消耗流量或资费,由运营商标注,然后model为网站,获取单次访问APP超过一分钟的目标客户手机号,所以运营商的大数据不再局限于自己的网站获取客户手机号码,任何网站、APP、400电话、固话都可以抓取获取。我们是正规的运营商,我们和运营商有深入的合作。运营商抓取数据发送给公司,然后提供专门的大数据营销后台供公司调用。
比如一个peer在百度上出价,你可以直接从peer的网站中截取流,通过外呼和短信的方式触达客户,转化客户。

三、CPA 目标客户
可能有些人对CPA这个名词有点陌生,那么就让小编来给大家解释一下什么是CPA吧。CPA是指有专业电子营销团队呼唤的目标客户,比如想要装修或者消防证的客户。, 我们提供的数据是由专业的电话营销团队与客户交谈实现的,业务方也可以收听录音。周转率为40%-50%。
由于大数据采集是直接与运营商合作,后端可以明确指定要拨打的区域,是合法正规的数据提供,长期稳定合作是可能的。
您好,我们在做精准客户拦截,云网客户获取系统
例如:
同一网站每天有多少客户访问了他们的网站,我们可以实时、频繁地拦截每天访问网站的客户的手机号码
对于同行业的400个电话,或者企业固话,每天有多少客户来电,我们可以拦截来电客户的电话号码
或者同行使用百度、今日头条、微信等平台推广落地页,我们可以实时拦截访问过该页面的客户手机号
安居客、土巴兔、瓜子二手车、宜信贷等垂直行业APP,可实时拦截指定区域或全国范围内访问APP的用户手机号码

网页手机号抓取程序(未添加获取会员基础信息和会员手机号功能包有什么区别?)
网站优化 • 优采云 发表了文章 • 0 个评论 • 62 次浏览 • 2021-12-07 07:02
Q:获取会员基本信息功能可以获取用户支付宝的user_id吗?
A:不需要,如果需要获取用户支付宝user_id,请参考用户授权调用my.getAuthCode和alipay.system.oauth.token接口获取user_id参数。
Q:为什么获取用户基本信息时获取不到nick_name等信息?
A:当用户不配置信息时,是无法获取的。
Q:“获取会员信息”和“获取会员基本信息”两个功能包有什么区别?
A:为了提高小程序开发效率,获取会员信息功能升级为获取会员基本信息功能。升级后的功能可以通过用户授权直接在小程序终端上获取用户头像、昵称、性别、位置等基本信息,无需调用Server端接口。
Q:调用my.getOpenUserInfo时出现“isv.insufficient-isv-permissions”错误如何处理?
A:没有增加获取会员基本信息的功能包。其他错误分析请参考ISV Insufficient Authority Reporting and Solutions。
在小程序开发管理后台的能力列表中,单击添加能力。
增加获取会员基本信息的函数包。
Q:小程序可以同时获取手机号、头像、昵称等公开信息吗?
A:无法在同一个弹窗中同时获取会员的手机号、头像、昵称。
可以获取会员的手机号,分别获取用户的头像和昵称。如果用户没有设置支付宝昵称,昵称字段没有返回值。
有关详细信息,请参阅:
Q:“获取会员基本信息”是否可以获取用户ID、真实姓名等信息?
A:不能。获取会员基本信息,只能获取用户头像、昵称、性别、所在地等信息。
Q:开发者可以在小程序弹窗中授权访问会员基本信息和手机号吗?
A:不需要。分别通过两次JSAPI调用获取会员基本信息和会员手机号码;同时,为充分尊重用户的知情权和个人信息,建议开发者在业务需要时调用授权,不要获取与业务无关的信息。
Q:用户授权后,为什么没有返回昵称和头像?
答:有以下原因:
详情请参见获取用户信息的接口没有返回昵称和头像。 查看全部
网页手机号抓取程序(未添加获取会员基础信息和会员手机号功能包有什么区别?)
Q:获取会员基本信息功能可以获取用户支付宝的user_id吗?
A:不需要,如果需要获取用户支付宝user_id,请参考用户授权调用my.getAuthCode和alipay.system.oauth.token接口获取user_id参数。
Q:为什么获取用户基本信息时获取不到nick_name等信息?
A:当用户不配置信息时,是无法获取的。
Q:“获取会员信息”和“获取会员基本信息”两个功能包有什么区别?
A:为了提高小程序开发效率,获取会员信息功能升级为获取会员基本信息功能。升级后的功能可以通过用户授权直接在小程序终端上获取用户头像、昵称、性别、位置等基本信息,无需调用Server端接口。
Q:调用my.getOpenUserInfo时出现“isv.insufficient-isv-permissions”错误如何处理?
A:没有增加获取会员基本信息的功能包。其他错误分析请参考ISV Insufficient Authority Reporting and Solutions。
在小程序开发管理后台的能力列表中,单击添加能力。
增加获取会员基本信息的函数包。
Q:小程序可以同时获取手机号、头像、昵称等公开信息吗?
A:无法在同一个弹窗中同时获取会员的手机号、头像、昵称。
可以获取会员的手机号,分别获取用户的头像和昵称。如果用户没有设置支付宝昵称,昵称字段没有返回值。
有关详细信息,请参阅:
Q:“获取会员基本信息”是否可以获取用户ID、真实姓名等信息?
A:不能。获取会员基本信息,只能获取用户头像、昵称、性别、所在地等信息。
Q:开发者可以在小程序弹窗中授权访问会员基本信息和手机号吗?
A:不需要。分别通过两次JSAPI调用获取会员基本信息和会员手机号码;同时,为充分尊重用户的知情权和个人信息,建议开发者在业务需要时调用授权,不要获取与业务无关的信息。
Q:用户授权后,为什么没有返回昵称和头像?
答:有以下原因:
详情请参见获取用户信息的接口没有返回昵称和头像。
网页手机号抓取程序(全国网站手机号360安全卫士、360浏览器登录送49元月卡)
网站优化 • 优采云 发表了文章 • 0 个评论 • 51 次浏览 • 2021-12-06 11:01
网页手机号抓取程序抓取360全国网站手机号360安全卫士、360安全浏览器、360手机卫士、360浏览器登录送49元月卡全国行业网站登录送79元月卡登录送89元月卡登录送88元月卡深圳所有网站二维码复制后登录可送20元红包
让他花99买台机器
找哪些网上送福利的我觉得你现在比较需要的是稳定,省事,不在乎他的手机号如果你了解下他手机号的泄露率,那么,发个微信红包,群发给他,让他注册,注册后送他100,然后你跟他说先注册,后面的给机器上去抓取福利,说这个好像不合理,但对你们俩来说已经是最优的方案,如果还不接受,那就要考虑你们的关系,感情,爱情等方面来衡量。
我可以把全国的号码都发给你吗
我是做网站的人,我想主动送给你,就看你能不能要了。
手机安全卫士可以扫二维码登录页面领红包送免费手机月卡
app红包,
让他换一个号码。我就是这样干的,只要你想。
1.全国网站手机号2.在二维码长城那,他会收到个大礼包,里面有这一整套。
如果你想要,可以寄给我,这样的话,我告诉你怎么抓取二维码。我之前是做网站的。
我也想送
最讨厌这种手机号网上发来发去的
全国各地免费赠送你一个,让你花99块买个二维码。
我也想要对了,是不是不是全国的,是分省的,我也想要!全国联通volte,广东工信部试点, 查看全部
网页手机号抓取程序(全国网站手机号360安全卫士、360浏览器登录送49元月卡)
网页手机号抓取程序抓取360全国网站手机号360安全卫士、360安全浏览器、360手机卫士、360浏览器登录送49元月卡全国行业网站登录送79元月卡登录送89元月卡登录送88元月卡深圳所有网站二维码复制后登录可送20元红包
让他花99买台机器
找哪些网上送福利的我觉得你现在比较需要的是稳定,省事,不在乎他的手机号如果你了解下他手机号的泄露率,那么,发个微信红包,群发给他,让他注册,注册后送他100,然后你跟他说先注册,后面的给机器上去抓取福利,说这个好像不合理,但对你们俩来说已经是最优的方案,如果还不接受,那就要考虑你们的关系,感情,爱情等方面来衡量。
我可以把全国的号码都发给你吗
我是做网站的人,我想主动送给你,就看你能不能要了。
手机安全卫士可以扫二维码登录页面领红包送免费手机月卡
app红包,
让他换一个号码。我就是这样干的,只要你想。
1.全国网站手机号2.在二维码长城那,他会收到个大礼包,里面有这一整套。
如果你想要,可以寄给我,这样的话,我告诉你怎么抓取二维码。我之前是做网站的。
我也想送
最讨厌这种手机号网上发来发去的
全国各地免费赠送你一个,让你花99块买个二维码。
我也想要对了,是不是不是全国的,是分省的,我也想要!全国联通volte,广东工信部试点,
网页手机号抓取程序(运营商大数据抓取的种类和种类大解析!! )
网站优化 • 优采云 发表了文章 • 0 个评论 • 66 次浏览 • 2021-12-02 19:01
)
一、运营商的大数据采集类型
1、如今,运营商的大数据并不均衡。市场上获取手机号码的方式有很多种。最原创的是:一是通过数据采集软件,利用采集网站软件抓取客户主动留下的手机号码。二是爬取网站,手机号已经在APP上,三是通过网站中的手机号安装代码获取手机号。这些都是通过在网站中安装抓取码然后抓取来访者的手机号获得的,但是今年6月因为被曝光而停止了。
缺点如下。一是只能抓取自己的网站访客电话号码,二是只能被php网站使用,三是涉及客户隐私,容易被百度检测晋升。
二、运营商大数据优势
运营商大数据可以根据同行提供的网站、APP、微信小程序、400电话、固话,获取目标客户的手机号码。与Python不同,无需登录网站嵌入代码中,运营商的大数据在网站和APP中被运营商的手机用户使用,400次通话,固话消耗数据或费用,由运营商标注,然后型号为网站,获取目标客户单次访问APP超过一分钟的手机号码,因此运营商的大数据不再局限于自身网站获取客户手机号,任何网站、APP、400电话、固话均可抓拍获取。我们是正规运营商,与运营商有深度合作。运营商抓取数据发送给公司,然后提供专门的大数据营销后台供公司调用。
比如一个peer在百度上出价,你可以直接从peer的网站中截取流,通过外呼和短信的方式触达客户,转化客户。
三、CPA 目标客户
可能有些人对CPA这个名词有点陌生,那么就让小编来给大家解释一下什么是CPA吧。CPA是指有专业电子营销团队呼唤的目标客户,比如想要装修或者消防证的客户。, 我们提供的数据是由专业的电话营销团队与客户交谈实现的,业务方也可以收听录音。周转率为40%-50%。
由于大数据采集是直接与运营商合作,可以在后台指定区域调用,是合法正规的数据提供,可以长期稳定合作。
您好,我们在做精准客户拦截,云网客户获取系统
例如:
同一网站每天有多少客户访问了他们的网站,我们可以实时、频繁地拦截每天访问网站的客户的手机号码
对于同行业400个电话,或者企业固话,每天有多少客户拨打,我们可以截取来电客户的电话号码
或者同行使用百度、今日头条、微信等平台推广落地页,我们可以实时拦截访问过该页面的客户手机号
安居客、土巴兔、瓜子二手车、宜信贷等垂直行业APP,可实时拦截指定区域或全国范围内访问APP的用户手机号码
查看全部
网页手机号抓取程序(运营商大数据抓取的种类和种类大解析!!
)
一、运营商的大数据采集类型
1、如今,运营商的大数据并不均衡。市场上获取手机号码的方式有很多种。最原创的是:一是通过数据采集软件,利用采集网站软件抓取客户主动留下的手机号码。二是爬取网站,手机号已经在APP上,三是通过网站中的手机号安装代码获取手机号。这些都是通过在网站中安装抓取码然后抓取来访者的手机号获得的,但是今年6月因为被曝光而停止了。
缺点如下。一是只能抓取自己的网站访客电话号码,二是只能被php网站使用,三是涉及客户隐私,容易被百度检测晋升。

二、运营商大数据优势
运营商大数据可以根据同行提供的网站、APP、微信小程序、400电话、固话,获取目标客户的手机号码。与Python不同,无需登录网站嵌入代码中,运营商的大数据在网站和APP中被运营商的手机用户使用,400次通话,固话消耗数据或费用,由运营商标注,然后型号为网站,获取目标客户单次访问APP超过一分钟的手机号码,因此运营商的大数据不再局限于自身网站获取客户手机号,任何网站、APP、400电话、固话均可抓拍获取。我们是正规运营商,与运营商有深度合作。运营商抓取数据发送给公司,然后提供专门的大数据营销后台供公司调用。
比如一个peer在百度上出价,你可以直接从peer的网站中截取流,通过外呼和短信的方式触达客户,转化客户。

三、CPA 目标客户
可能有些人对CPA这个名词有点陌生,那么就让小编来给大家解释一下什么是CPA吧。CPA是指有专业电子营销团队呼唤的目标客户,比如想要装修或者消防证的客户。, 我们提供的数据是由专业的电话营销团队与客户交谈实现的,业务方也可以收听录音。周转率为40%-50%。
由于大数据采集是直接与运营商合作,可以在后台指定区域调用,是合法正规的数据提供,可以长期稳定合作。

您好,我们在做精准客户拦截,云网客户获取系统
例如:
同一网站每天有多少客户访问了他们的网站,我们可以实时、频繁地拦截每天访问网站的客户的手机号码
对于同行业400个电话,或者企业固话,每天有多少客户拨打,我们可以截取来电客户的电话号码
或者同行使用百度、今日头条、微信等平台推广落地页,我们可以实时拦截访问过该页面的客户手机号
安居客、土巴兔、瓜子二手车、宜信贷等垂直行业APP,可实时拦截指定区域或全国范围内访问APP的用户手机号码

网页手机号抓取程序( 一个微信小程序唯一标识小程序开发文档有一个难 )
网站优化 • 优采云 发表了文章 • 0 个评论 • 55 次浏览 • 2021-12-02 19:00
一个微信小程序唯一标识小程序开发文档有一个难
)
微信小程序开发获取用户手机号——用一个简单的php界面demo解密加密数据
做一个微信小程序,可以拿到用户微信绑定的手机号。小程序开发文档提供的获取电话号码的接口(getPhoneNumber())返回的是密文,需要在服务器端解密,但官方开发文档一如既往的乱七八糟。如果没有小程序开发文档的全貌,理解解密过程还是有点困难的。这里把小程序从请求用户授权获取手机号码到获取手机号码明文的整个过程串在一起,方便快捷,一目了然。
以后要做微信小程序,需要获取用户微信绑定的手机号。小程序开发文档提供的获取电话号码的接口(getPhoneNumber())返回的是密文,需要在服务器端解密,但官方开发文档一如既往的乱七八糟。如果没有小程序开发文档的全貌,理解解密过程还是有点困难的。这里把小程序从请求用户授权获取手机号码到获取手机号码明文的整个过程串起来,方便快捷理解,如下:
一. 前端相关操作:
1. 请求用户授权获取手机号码:
因为用户需要主动触发手机号接口,所以这个函数不是通过API调用的,而是需要通过组件的点击来触发,如下:
wxml:
获取手机号码
js:
1 Page({
2 getPhoneNumber: function(e) {
3 if(e.detail.errMsg == "getPhoneNumber:fail user deny") return; //用户允许授权
4 console.log("lv", e.detail.iv); //包括敏感数据在内的完整用户信息的加密数据,需要解密
5 console.log(e.detail.encryptedData); //加密算法的初始向量,解密需要用到
6 ......
7 }
8 })
2. 进入小程序登录界面:
小程序调用wx.login()获取临时登录凭证码并发送给开发者服务器。
Page({
getPhoneNumber: function(e) {
console.log(e.detail.errMsg)
console.log(e.detail.iv) //包括敏感数据在内的完整用户信息的加密数据,需要解密
console.log(e.detail.encryptedData) //加密算法的初始向量,解密需要用到
wx.login({
success: res => {
if(res.code){
console.log(res.code)
}
}
})
}
})
3. 访问腾讯服务器登录凭据验证界面:
注:官方建议是放在服务器端,这里为了方便,放在前端请求上。
注意这里传入的参数:
应用程序
小程序唯一ID
秘密
小程序的应用秘诀
js_code
登录时获取的代码
授权类型
填写为authorization_code
//2. 访问登录凭证校验接口获取session_key
wx.request({
url: "https://api.weixin.qq.com/sns/jscode2session",
data: {
'appid': "xxxxxxxx",
'secret': "xxxxxxxx",
'js_code': res.code,
'grant_type': "authorization_code"
},
method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
header: {
'content-type': 'application/json'
}, // 设置请求的 header
success: function(data) {
console.log("data", data.data.session_key)
},
fail: function(err) {
console.log(err);
}
})
4. 在自己的服务器上解密
注:解密界面可使用腾讯官方demo进行修改,具体修改稍后说明。
//3. 解密
wx.request({
url: 'http://xxxxx.com/demo/demo.php',//腾讯官方demo改造的接口页面
data: {
'encryptedData': encodeURIComponent(e.detail.encryptedData),//需要进行编码
'iv': e.detail.iv,
'session_key': data.data.session_key
},
method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
header: {
'content-type': 'application/json'
}, // 设置请求的 header
success: function(data2) {
console.log(data2.data.phoneNumber)
if(data2.statusCode == 200) {
self.setData({
phone: data2.data.phoneNumber
})
}
},
fail: function(err) {
console.log(err);
}
})
js部分整体代码如下:
getPhoneNumber: function (e) {
if (e.detail.errMsg == "getPhoneNumber:fail user deny") return;
//用户允许授权
console.log("lv", e.detail.iv);
console.log(e.detail.encryptedData);
wx.showLoading()
var self=this
//1. 调用登录接口获取临时登录code
wx.login({
success: res => {
if(res.code){
//2. 访问登录凭证校验接口获取session_key、openid
wx.request({
url: "https://api.weixin.qq.com/sns/jscode2session",
data: {
'appid': "wxcc41e47562b08129",
'secret': "50e4379d67a6860d18157c53dc6ac3c2",
'js_code': res.code,
'grant_type': "authorization_code"
},
method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
header: {
'content-type': 'application/json'
}, // 设置请求的 header
success: function (data) {
console.log("data", data)
if(data.statusCode==200){
//3. 解密
wx.request({
url: 'http://qdy8.gotoip4.com/demo/demo.php',
data: {
'encryptedData': e.detail.encryptedData,
'iv': e.detail.iv,
'session_key': data.data.session_key
},
method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
header: {
'content-type': 'application/json'
}, // 设置请求的 header
success: function (data2) {
wx.hideLoading()
console.log(data2.data.phoneNumber)
if (data2.statusCode == 200 && data2.data.phoneNumber) {
self.setData({
phone: data2.data.phoneNumber
})
}
},
fail: function (err) {
console.log(err);
}
})
}
},
fail: function (err) {
console.log(err);
}
})
}
}
})
}
二. 后端接口:
微信官方提供多种编程语言的示例代码(点击下载)。每种语言类型的接口名称相同,调用方法可参考示例。
如果只是学习研究,可以买个经济实惠的虚拟主机,一年才几十块钱,但是这种虚拟主机多为PHP,所以这里我们以PHP为例进行改造接收前端- 结束请求。
下载官方demo后,结构如下:
转换 demo.php:
将php的三个demo文件上传到虚拟主机:
然后就可以直接访问demo.php文件作为接口了。
三. 容易出现异常:
1. 访问微信的登录凭据验证接口获取session_key时,如果报如下错误,则需要清除所有缓存并重新编译(应该是appid,开发工具的坑,如果不t清除所有缓存,会出现这个错误):
无效代码,提示:[req_id: CPAsWa0325ha57]
2.解密接口返回-41003,然后查看接口参数:
查看全部
网页手机号抓取程序(
一个微信小程序唯一标识小程序开发文档有一个难
)
微信小程序开发获取用户手机号——用一个简单的php界面demo解密加密数据
做一个微信小程序,可以拿到用户微信绑定的手机号。小程序开发文档提供的获取电话号码的接口(getPhoneNumber())返回的是密文,需要在服务器端解密,但官方开发文档一如既往的乱七八糟。如果没有小程序开发文档的全貌,理解解密过程还是有点困难的。这里把小程序从请求用户授权获取手机号码到获取手机号码明文的整个过程串在一起,方便快捷,一目了然。
以后要做微信小程序,需要获取用户微信绑定的手机号。小程序开发文档提供的获取电话号码的接口(getPhoneNumber())返回的是密文,需要在服务器端解密,但官方开发文档一如既往的乱七八糟。如果没有小程序开发文档的全貌,理解解密过程还是有点困难的。这里把小程序从请求用户授权获取手机号码到获取手机号码明文的整个过程串起来,方便快捷理解,如下:
一. 前端相关操作:
1. 请求用户授权获取手机号码:
因为用户需要主动触发手机号接口,所以这个函数不是通过API调用的,而是需要通过组件的点击来触发,如下:
wxml:
获取手机号码
js:
1 Page({
2 getPhoneNumber: function(e) {
3 if(e.detail.errMsg == "getPhoneNumber:fail user deny") return; //用户允许授权
4 console.log("lv", e.detail.iv); //包括敏感数据在内的完整用户信息的加密数据,需要解密
5 console.log(e.detail.encryptedData); //加密算法的初始向量,解密需要用到
6 ......
7 }
8 })
2. 进入小程序登录界面:
小程序调用wx.login()获取临时登录凭证码并发送给开发者服务器。
Page({
getPhoneNumber: function(e) {
console.log(e.detail.errMsg)
console.log(e.detail.iv) //包括敏感数据在内的完整用户信息的加密数据,需要解密
console.log(e.detail.encryptedData) //加密算法的初始向量,解密需要用到
wx.login({
success: res => {
if(res.code){
console.log(res.code)
}
}
})
}
})
3. 访问腾讯服务器登录凭据验证界面:
注:官方建议是放在服务器端,这里为了方便,放在前端请求上。
注意这里传入的参数:
应用程序
小程序唯一ID
秘密
小程序的应用秘诀
js_code
登录时获取的代码
授权类型
填写为authorization_code
//2. 访问登录凭证校验接口获取session_key
wx.request({
url: "https://api.weixin.qq.com/sns/jscode2session",
data: {
'appid': "xxxxxxxx",
'secret': "xxxxxxxx",
'js_code': res.code,
'grant_type': "authorization_code"
},
method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
header: {
'content-type': 'application/json'
}, // 设置请求的 header
success: function(data) {
console.log("data", data.data.session_key)
},
fail: function(err) {
console.log(err);
}
})
4. 在自己的服务器上解密
注:解密界面可使用腾讯官方demo进行修改,具体修改稍后说明。
//3. 解密
wx.request({
url: 'http://xxxxx.com/demo/demo.php',//腾讯官方demo改造的接口页面
data: {
'encryptedData': encodeURIComponent(e.detail.encryptedData),//需要进行编码
'iv': e.detail.iv,
'session_key': data.data.session_key
},
method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
header: {
'content-type': 'application/json'
}, // 设置请求的 header
success: function(data2) {
console.log(data2.data.phoneNumber)
if(data2.statusCode == 200) {
self.setData({
phone: data2.data.phoneNumber
})
}
},
fail: function(err) {
console.log(err);
}
})
js部分整体代码如下:
getPhoneNumber: function (e) {
if (e.detail.errMsg == "getPhoneNumber:fail user deny") return;
//用户允许授权
console.log("lv", e.detail.iv);
console.log(e.detail.encryptedData);
wx.showLoading()
var self=this
//1. 调用登录接口获取临时登录code
wx.login({
success: res => {
if(res.code){
//2. 访问登录凭证校验接口获取session_key、openid
wx.request({
url: "https://api.weixin.qq.com/sns/jscode2session",
data: {
'appid': "wxcc41e47562b08129",
'secret': "50e4379d67a6860d18157c53dc6ac3c2",
'js_code': res.code,
'grant_type': "authorization_code"
},
method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
header: {
'content-type': 'application/json'
}, // 设置请求的 header
success: function (data) {
console.log("data", data)
if(data.statusCode==200){
//3. 解密
wx.request({
url: 'http://qdy8.gotoip4.com/demo/demo.php',
data: {
'encryptedData': e.detail.encryptedData,
'iv': e.detail.iv,
'session_key': data.data.session_key
},
method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
header: {
'content-type': 'application/json'
}, // 设置请求的 header
success: function (data2) {
wx.hideLoading()
console.log(data2.data.phoneNumber)
if (data2.statusCode == 200 && data2.data.phoneNumber) {
self.setData({
phone: data2.data.phoneNumber
})
}
},
fail: function (err) {
console.log(err);
}
})
}
},
fail: function (err) {
console.log(err);
}
})
}
}
})
}
二. 后端接口:
微信官方提供多种编程语言的示例代码(点击下载)。每种语言类型的接口名称相同,调用方法可参考示例。
如果只是学习研究,可以买个经济实惠的虚拟主机,一年才几十块钱,但是这种虚拟主机多为PHP,所以这里我们以PHP为例进行改造接收前端- 结束请求。
下载官方demo后,结构如下:

转换 demo.php:
将php的三个demo文件上传到虚拟主机:

然后就可以直接访问demo.php文件作为接口了。
三. 容易出现异常:
1. 访问微信的登录凭据验证接口获取session_key时,如果报如下错误,则需要清除所有缓存并重新编译(应该是appid,开发工具的坑,如果不t清除所有缓存,会出现这个错误):
无效代码,提示:[req_id: CPAsWa0325ha57]
2.解密接口返回-41003,然后查看接口参数:

网页手机号抓取程序(真真是提取软件灰常流弊的说的说的说)
网站优化 • 优采云 发表了文章 • 0 个评论 • 287 次浏览 • 2021-12-01 13:26
这是一个网站手机号码搜索提取工具。这是一款手机号码提取软件,已经收录在全球很多中国公司的网页上出现过。您只需要在神威手机号码搜索软件中输入搜索关键词列表,即可完成自动搜索和提取手机号码的操作,真是太可惜了!
软件介绍
网站手机号码搜索提取工具是一款提取手机号码的软件。您可以使用本软件查询手机归属地、提取内容、发送手机短信,帮助您轻松获取手机号码。
软件功能
1.可以直接从剪贴板中提取手号
2.可以从.txt.csv.html等文本文件中提取手机号码。
3. 可以从excel文件中提取手机号码,例如.xls等。
4.可以从.doc.rtf等Word文件中提取手机号码。
5.可以访问数据库提取.mdb等手机号码
6.可以从其他数据库中提取手机号码,比如ms sql server my sql oracle等。
7.可以从网站提取手机号,如果在google百度输入联系人手机,可以提取上图所示的手机号
你可以在浩瀚的互联网上搜索,找到N个以上的手机号码,是销售和客服成本最低的最有效利器。
8. 可以过滤手机号码,重复手机号码和排序手机号码
9.可以生成手机号
10. 可以大量查询手机号码归属地并导入csv excel或word
11.可以通过电脑连接手机,当然手机必须有数据线
相关介绍
网站手机号码搜索提取工具是一款专业的手机号码搜索提取软件。具有强大的搜索提取功能,只要输入网址或关键字,系统会立即自动搜索提取相关手机号码,操作非常简单。
软件截图
相关软件
p2p无限搜索工具:这是一款p2p无限搜索工具,是一款种子搜索神器,支持多种p2p协议种子和下载地址搜索,如bt、ED2K...
硬盘图片搜索工具:这是一款硬盘图片搜索工具,可以帮助您立即查找、修改和分享计算机上的所有图片。 查看全部
网页手机号抓取程序(真真是提取软件灰常流弊的说的说的说)
这是一个网站手机号码搜索提取工具。这是一款手机号码提取软件,已经收录在全球很多中国公司的网页上出现过。您只需要在神威手机号码搜索软件中输入搜索关键词列表,即可完成自动搜索和提取手机号码的操作,真是太可惜了!
软件介绍
网站手机号码搜索提取工具是一款提取手机号码的软件。您可以使用本软件查询手机归属地、提取内容、发送手机短信,帮助您轻松获取手机号码。
软件功能
1.可以直接从剪贴板中提取手号
2.可以从.txt.csv.html等文本文件中提取手机号码。
3. 可以从excel文件中提取手机号码,例如.xls等。
4.可以从.doc.rtf等Word文件中提取手机号码。
5.可以访问数据库提取.mdb等手机号码
6.可以从其他数据库中提取手机号码,比如ms sql server my sql oracle等。
7.可以从网站提取手机号,如果在google百度输入联系人手机,可以提取上图所示的手机号
你可以在浩瀚的互联网上搜索,找到N个以上的手机号码,是销售和客服成本最低的最有效利器。
8. 可以过滤手机号码,重复手机号码和排序手机号码
9.可以生成手机号
10. 可以大量查询手机号码归属地并导入csv excel或word
11.可以通过电脑连接手机,当然手机必须有数据线
相关介绍
网站手机号码搜索提取工具是一款专业的手机号码搜索提取软件。具有强大的搜索提取功能,只要输入网址或关键字,系统会立即自动搜索提取相关手机号码,操作非常简单。
软件截图

相关软件
p2p无限搜索工具:这是一款p2p无限搜索工具,是一款种子搜索神器,支持多种p2p协议种子和下载地址搜索,如bt、ED2K...
硬盘图片搜索工具:这是一款硬盘图片搜索工具,可以帮助您立即查找、修改和分享计算机上的所有图片。
网页手机号抓取程序( 小程序中有通过bindgetphonenumber绑定事件获取回调的参数有三个)
网站优化 • 优采云 发表了文章 • 0 个评论 • 45 次浏览 • 2021-11-30 19:15
小程序中有通过bindgetphonenumber绑定事件获取回调的参数有三个)
微信小程序getPhoneNumber获取用户手机号
小程序中有很多地方会用到注册用户信息。用户需要填写手机号等,有了这个组件,可以快速获取微信绑定的手机号,无需用户填写。
1. getPhoneNumber 组件是通过按钮实现的(其他标签无效)。在按钮中设置open-type="getPhoneNumber",绑定bindgetphonenumber事件获取回调。
2.在使用该组件之前,必须调用登录接口。如果没有调用login,点击按钮时,会提示先调用login。
App({
onLaunch: function () {
wx.login({
success: function (res) {
if (res.code) {
//发起网络请求
console.log(res.code)
} else {
console.log('获取用户登录态失败!' + res.errMsg)
}
}
});
}
})
3.通过bindgetphonenumber绑定的事件获取回调。有三个回调参数,
getPhoneNumber: function(e) {
console.log(e.detail.errMsg)
console.log(e.detail.iv)
console.log(e.detail.encryptedData)
if (e.detail.errMsg == 'getPhoneNumber:fail user deny'){
wx.showModal({
title: '提示',
showCancel: false,
content: '未授权',
success: function (res) { }
})
} else {
wx.showModal({
title: '提示',
showCancel: false,
content: '同意授权',
success: function (res) { }
})
}
}
4.最后,我们需要按照自己的业务逻辑进行处理。如果用户不同意授权,我们可能会有一个界面让他手动输入。如果不是强制获取手机号,我们可以直接跳转到页面进行下一步。. (用户不同意授权errMsg返回'getPhoneNumber: fail user deny')
5. 用户同意授权,我们可以根据登录时获取的code通过后台和微信处理获取session_key,最后通过app_id、session_key、iv、encryptedData(用户同意授权errMsg返回'getPhoneNumber: 好的')
6. 解密方法可以查看官方微信开发文档,有详细说明。
加密数据解密算法(官方文档)
如有任何问题,欢迎留言或到本站社区讨论,感谢您的阅读,希望对您有所帮助,感谢您对本站的支持! 查看全部
网页手机号抓取程序(
小程序中有通过bindgetphonenumber绑定事件获取回调的参数有三个)
微信小程序getPhoneNumber获取用户手机号
小程序中有很多地方会用到注册用户信息。用户需要填写手机号等,有了这个组件,可以快速获取微信绑定的手机号,无需用户填写。
1. getPhoneNumber 组件是通过按钮实现的(其他标签无效)。在按钮中设置open-type="getPhoneNumber",绑定bindgetphonenumber事件获取回调。
2.在使用该组件之前,必须调用登录接口。如果没有调用login,点击按钮时,会提示先调用login。
App({
onLaunch: function () {
wx.login({
success: function (res) {
if (res.code) {
//发起网络请求
console.log(res.code)
} else {
console.log('获取用户登录态失败!' + res.errMsg)
}
}
});
}
})
3.通过bindgetphonenumber绑定的事件获取回调。有三个回调参数,

getPhoneNumber: function(e) {
console.log(e.detail.errMsg)
console.log(e.detail.iv)
console.log(e.detail.encryptedData)
if (e.detail.errMsg == 'getPhoneNumber:fail user deny'){
wx.showModal({
title: '提示',
showCancel: false,
content: '未授权',
success: function (res) { }
})
} else {
wx.showModal({
title: '提示',
showCancel: false,
content: '同意授权',
success: function (res) { }
})
}
}
4.最后,我们需要按照自己的业务逻辑进行处理。如果用户不同意授权,我们可能会有一个界面让他手动输入。如果不是强制获取手机号,我们可以直接跳转到页面进行下一步。. (用户不同意授权errMsg返回'getPhoneNumber: fail user deny')
5. 用户同意授权,我们可以根据登录时获取的code通过后台和微信处理获取session_key,最后通过app_id、session_key、iv、encryptedData(用户同意授权errMsg返回'getPhoneNumber: 好的')
6. 解密方法可以查看官方微信开发文档,有详细说明。
加密数据解密算法(官方文档)
如有任何问题,欢迎留言或到本站社区讨论,感谢您的阅读,希望对您有所帮助,感谢您对本站的支持!
网页手机号抓取程序(网页手机号抓取程序,我之前被黑了。)
网站优化 • 优采云 发表了文章 • 0 个评论 • 79 次浏览 • 2021-11-28 02:03
网页手机号抓取程序,我之前被黑了。后来购买了彩票网站的服务端抓包后发现是自己的被恶意抓取登录。直接报了。当时对方回复是这个程序太旧了,手机号就自动从电脑端自动登录。
技术部门是你打败的主要敌人
经历过楼主同样的事情,同求高人解答!之前也以为是网页加密算法有问题,就自己手工重写了一个javascript小脚本来查询答案。发现其实根本没有什么特别高深的算法,只是tcp握手和获取dom的机制不一样。技术上的实现很简单,然而结果却让人哭笑不得。一周之后电话问我,不查了,能不能转岗。
需要网站知道用户的手机号码,然后在fiddler抓包获取,如果不知道的话,从服务器登录,再同步数据,需要你填写账号,密码,然后从服务器直接获取网页源码,找到相应的地方,上传服务器,从服务器返回给你,然后你的浏览器的插件还是,
这个是socket,与电脑是两个协议,可以两边同时连接在网上发送数据,都可以返回成功或失败。
这不是跟你不登录,直接从服务器获取用户名与密码,
其实是知乎服务器中下了一层反向代理,把请求发往了另一个服务器,这样无论你从哪个服务器登录,都可以查询这个人的信息。
php不会写跨域的, 查看全部
网页手机号抓取程序(网页手机号抓取程序,我之前被黑了。)
网页手机号抓取程序,我之前被黑了。后来购买了彩票网站的服务端抓包后发现是自己的被恶意抓取登录。直接报了。当时对方回复是这个程序太旧了,手机号就自动从电脑端自动登录。
技术部门是你打败的主要敌人
经历过楼主同样的事情,同求高人解答!之前也以为是网页加密算法有问题,就自己手工重写了一个javascript小脚本来查询答案。发现其实根本没有什么特别高深的算法,只是tcp握手和获取dom的机制不一样。技术上的实现很简单,然而结果却让人哭笑不得。一周之后电话问我,不查了,能不能转岗。
需要网站知道用户的手机号码,然后在fiddler抓包获取,如果不知道的话,从服务器登录,再同步数据,需要你填写账号,密码,然后从服务器直接获取网页源码,找到相应的地方,上传服务器,从服务器返回给你,然后你的浏览器的插件还是,
这个是socket,与电脑是两个协议,可以两边同时连接在网上发送数据,都可以返回成功或失败。
这不是跟你不登录,直接从服务器获取用户名与密码,
其实是知乎服务器中下了一层反向代理,把请求发往了另一个服务器,这样无论你从哪个服务器登录,都可以查询这个人的信息。
php不会写跨域的,
网页手机号抓取程序(网页手机号抓取程序主要包括如下几方面的功能)
网站优化 • 优采云 发表了文章 • 0 个评论 • 52 次浏览 • 2021-11-26 22:01
网页手机号抓取程序主要包括如下几方面的功能1.发起请求2.获取网页3.发送数据4.采集分析5.数据处理
关键不在如何发起请求,在于在页面加入的一些参数,比如密码,一些logo之类的,网页加载的时候可以随时抓取该网页的所有信息。并且我只有黑客的思维,而且我始终觉得专业的网站比如百度这样的,是不会这么搞的,百度知道现在还被机器改呢,很多黑客都进去,那是因为有利益的存在。如果网页加入这样的参数很多的话可以有能力自己写个脚本来抓取,这样子信息就更新快。
我写过,用的是各种山寨浏览器。点击发起请求并非需要手机号,是根据脚本内置的各种数据,response里面的图片文字链接什么的来抓取。接收的一般也就是自己发送来的各种数据。比如手机短信,邮件地址,网站的链接,gmail账号等等。还可以是从网站抓取的字体(img)。发起请求以后,抓取数据存储在sqlite数据库,这个我开始做得不好,后来我用mysql,接着我就自己在linux上搭了一个网站数据库。不管什么关键词网站都可以抓了。
python爬虫爬取微博的开源代码,
我在黑哥公众号《穷鬼的上下堂》里有关于一个蚂蚁金服在招聘“专家”的需求,
要不先说清楚你要爬什么?怎么爬 查看全部
网页手机号抓取程序(网页手机号抓取程序主要包括如下几方面的功能)
网页手机号抓取程序主要包括如下几方面的功能1.发起请求2.获取网页3.发送数据4.采集分析5.数据处理
关键不在如何发起请求,在于在页面加入的一些参数,比如密码,一些logo之类的,网页加载的时候可以随时抓取该网页的所有信息。并且我只有黑客的思维,而且我始终觉得专业的网站比如百度这样的,是不会这么搞的,百度知道现在还被机器改呢,很多黑客都进去,那是因为有利益的存在。如果网页加入这样的参数很多的话可以有能力自己写个脚本来抓取,这样子信息就更新快。
我写过,用的是各种山寨浏览器。点击发起请求并非需要手机号,是根据脚本内置的各种数据,response里面的图片文字链接什么的来抓取。接收的一般也就是自己发送来的各种数据。比如手机短信,邮件地址,网站的链接,gmail账号等等。还可以是从网站抓取的字体(img)。发起请求以后,抓取数据存储在sqlite数据库,这个我开始做得不好,后来我用mysql,接着我就自己在linux上搭了一个网站数据库。不管什么关键词网站都可以抓了。
python爬虫爬取微博的开源代码,
我在黑哥公众号《穷鬼的上下堂》里有关于一个蚂蚁金服在招聘“专家”的需求,
要不先说清楚你要爬什么?怎么爬
网页手机号抓取程序(解密微信小程序前端获取用户的手机号信息和codecode )
网站优化 • 优采云 发表了文章 • 0 个评论 • 81 次浏览 • 2021-11-25 12:09
)
微信小程序无法在前端直接获取用户的手机号码,只能通过aes和code加密的手机号码信息。将加密后的手机信息和代码发送至我们自己的服务即可解密。
解密需要两步:
1.使用代码从微信API获取会话密钥。
直接使用以下参数向api发起get请求
https://api.weixin.qq.com/sns/ ... _code
属性
说明
appid
微信小程序的appid是从微信小程序平台获取的,每个小程序都不一样
secret
微信小程序的app秘钥是从微信小程序平台获取的,每个小程序都不一样
js_code
小程序前端获取用户手机号码信息时的代码
grant_type
固定值authorization_code
2.使用会话密钥解密加密的手机信息。
Go 语言代码示例
package main
import (
"bytes"
"crypto/aes"
"crypto/cipher"
"encoding/base64"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
"github.com/gin-gonic/gin"
)
type Reply struct {
Code int `json:"code"`
Data interface{} `json:"data"`
}
func main() {
gin.SetMode(gin.ReleaseMode)
router := gin.Default() //实例化一个gin
router.POST("/getnum", getNum)
fmt.Println("服务启动...端口为9300")
router.Run("127.0.0.1:9300") //监听9300端口
}
func getNum(c *gin.Context) {
var req struct {
EncryptedData string
Iv string
Code string
}
err := c.Bind(&req)
if err != nil {
c.Error(err)
}
url := "https://api.weixin.qq.com/sns/ ... ot%3B + req.Code + "&grant_type=authorization_code"
resp, err := http.Get(url)
if err != nil {
c.Error(err)
}
defer resp.Body.Close()
s, _ := ioutil.ReadAll(resp.Body)
res := make(map[string]string)
json.Unmarshal(s, &res)
key, _ := base64.StdEncoding.DecodeString(res["session_key"])
iv, _ := base64.StdEncoding.DecodeString(req.Iv)
ciphertext, _ := base64.StdEncoding.DecodeString(req.EncryptedData)
plaintext := make([]byte, len(ciphertext))
block, err := aes.NewCipher(key)
if err != nil {
panic(err)
}
mode := cipher.NewCBCDecrypter(block, iv)
mode.CryptBlocks(plaintext, ciphertext)
plaintext = PKCS7UnPadding(plaintext)
fmt.Println("return:", string(plaintext))
c.JSON(http.StatusOK, Reply{http.StatusOK, string(plaintext)})
}
// 发送post请求
func post(url, data string) (string, error) {
reader := bytes.NewReader([]byte(data))
request, err := http.NewRequest("POST", url, reader)
if err != nil {
return "", err
}
defer request.Body.Close() //程序在使用完回复后必须关闭回复的主体
request.Header.Set("Content-Type", "application/json;charset=UTF-8")
//必须设定该参数,POST参数才能正常提交,意思是以json串提交数据
client := http.Client{}
resp, err := client.Do(request) //Do 方法发送请求,返回 HTTP 回复
if err != nil {
return "", err
}
respBytes, err := ioutil.ReadAll(resp.Body)
if err != nil {
return "", err
}
return string(respBytes), nil
}
func PKCS7Padding(ciphertext []byte) []byte {
padding := aes.BlockSize - len(ciphertext)%aes.BlockSize
padtext := bytes.Repeat([]byte{byte(padding)}, padding)
return append(ciphertext, padtext...)
}
func PKCS7UnPadding(plantText []byte) []byte {
length := len(plantText)
unpadding := int(plantText[length-1])
return plantText[:(length - unpadding)]
} 查看全部
网页手机号抓取程序(解密微信小程序前端获取用户的手机号信息和codecode
)
微信小程序无法在前端直接获取用户的手机号码,只能通过aes和code加密的手机号码信息。将加密后的手机信息和代码发送至我们自己的服务即可解密。
解密需要两步:
1.使用代码从微信API获取会话密钥。
直接使用以下参数向api发起get请求
https://api.weixin.qq.com/sns/ ... _code
属性
说明
appid
微信小程序的appid是从微信小程序平台获取的,每个小程序都不一样
secret
微信小程序的app秘钥是从微信小程序平台获取的,每个小程序都不一样
js_code
小程序前端获取用户手机号码信息时的代码
grant_type
固定值authorization_code
2.使用会话密钥解密加密的手机信息。
Go 语言代码示例
package main
import (
"bytes"
"crypto/aes"
"crypto/cipher"
"encoding/base64"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
"github.com/gin-gonic/gin"
)
type Reply struct {
Code int `json:"code"`
Data interface{} `json:"data"`
}
func main() {
gin.SetMode(gin.ReleaseMode)
router := gin.Default() //实例化一个gin
router.POST("/getnum", getNum)
fmt.Println("服务启动...端口为9300")
router.Run("127.0.0.1:9300") //监听9300端口
}
func getNum(c *gin.Context) {
var req struct {
EncryptedData string
Iv string
Code string
}
err := c.Bind(&req)
if err != nil {
c.Error(err)
}
url := "https://api.weixin.qq.com/sns/ ... ot%3B + req.Code + "&grant_type=authorization_code"
resp, err := http.Get(url)
if err != nil {
c.Error(err)
}
defer resp.Body.Close()
s, _ := ioutil.ReadAll(resp.Body)
res := make(map[string]string)
json.Unmarshal(s, &res)
key, _ := base64.StdEncoding.DecodeString(res["session_key"])
iv, _ := base64.StdEncoding.DecodeString(req.Iv)
ciphertext, _ := base64.StdEncoding.DecodeString(req.EncryptedData)
plaintext := make([]byte, len(ciphertext))
block, err := aes.NewCipher(key)
if err != nil {
panic(err)
}
mode := cipher.NewCBCDecrypter(block, iv)
mode.CryptBlocks(plaintext, ciphertext)
plaintext = PKCS7UnPadding(plaintext)
fmt.Println("return:", string(plaintext))
c.JSON(http.StatusOK, Reply{http.StatusOK, string(plaintext)})
}
// 发送post请求
func post(url, data string) (string, error) {
reader := bytes.NewReader([]byte(data))
request, err := http.NewRequest("POST", url, reader)
if err != nil {
return "", err
}
defer request.Body.Close() //程序在使用完回复后必须关闭回复的主体
request.Header.Set("Content-Type", "application/json;charset=UTF-8")
//必须设定该参数,POST参数才能正常提交,意思是以json串提交数据
client := http.Client{}
resp, err := client.Do(request) //Do 方法发送请求,返回 HTTP 回复
if err != nil {
return "", err
}
respBytes, err := ioutil.ReadAll(resp.Body)
if err != nil {
return "", err
}
return string(respBytes), nil
}
func PKCS7Padding(ciphertext []byte) []byte {
padding := aes.BlockSize - len(ciphertext)%aes.BlockSize
padtext := bytes.Repeat([]byte{byte(padding)}, padding)
return append(ciphertext, padtext...)
}
func PKCS7UnPadding(plantText []byte) []byte {
length := len(plantText)
unpadding := int(plantText[length-1])
return plantText[:(length - unpadding)]
}
网页手机号抓取程序(开发微信小程序的时候经常会遇到要绑定用户手机号的需求 )
网站优化 • 优采云 发表了文章 • 0 个评论 • 49 次浏览 • 2021-11-25 12:06
)
在开发微信小程序时,我们经常会遇到绑定用户手机号的需求。这里首先要获取用户信息中的手机号码:
首先是页面上的做法(就一句)wxml:
手机号认证
然后是js(wx):
里面调试代码很多,这里就不清理了(嘻嘻)
/**
* 授权手机号
* @param {*} e
*/
getPhoneNumber: function(e) {
console.log("手机号iv");
console.log(e.detail.iv)
console.log("手机号encryptedData");
console.log(e.detail.encryptedData)
// var session_key = wx.getStorageSync('session_key');
// console.log('session_key');
// console.log(session_key);
console.log("config appid");
console.log(site.AppID);
var that=this;
wx.login({
success: res => {
console.log("手机号rescode");
console.log(res.code);
console.log(res);
/**
* 这里重新获取session_key 的请求放到后台去因为如果放在小程序中的话 还需要端口认证
*/
// wx.request({
// url: 'https://api.weixin.qq.com/sns/jscode2session?appid=wxe1bd8e4045ad80ba&secret=9fbf669bb61ddfdd2d455eebe1d6fdf5&js_code='+res.code+'&grant_type=authorization_code',
// success:function(resc){
// console.log('哈哈哈哈')
// console.log(resc)
wx.request({
url: decode,
data:{
data:e.detail.encryptedData,
iv: e.detail.iv,
code:res.code
},
success:function(res){
console.log("解密之后");
console.log(res);
console.log("返回手机号");
console.log(res.data.data.data.phoneNumber);
var timestamp=new Date().getTime()
var data = {
"timestamp":timestamp,
"url":(checkphone+"").replace(config.baseUrl,""),
"user_id":userid,
'phone':res.data.data.data.phoneNumber,
}
var sign=utils.makeSign(site.siteTokenKey,data)
var phone = res.data.data.data.phoneNumber;
if(res.data.data.flag==1){
wx.request({
url: checkphone,
method: "POST",
data:data,
header: {
"Content-Type": "application/x-www-form-urlencoded",
"sign":sign,
'timestamp':timestamp
},
success: function (res) {
console.log(res);
if(res.data.data.flag == 1){
wx.navigateBack({
delta: 1
})
}
if(res.data.data.status == 0){
wx.showToast({
title: '保存失败',
icon: 'none',
duration: 2000
})
}
},
})
}else{
wx.navigateBack({
delta: 1
})
}
}
})
// }
// })
}
})
}
接下来是后台解密和更新手机号到数据库的主程序(php版):
/**
* 解密
*/
public function decode(){
//siteconfig读取类
$siteConfigObj = new Config("site_config");
$site_config = $siteConfigObj->getInfo();
$data=IFilter::act(IReq::get('data'));
$iv=IFilter::act(IReq::get('iv'));
// $sessionkey=IFilter::act(IReq::get('sessionkey'));
$code=IFilter::act(IReq::get('code'));
$decrypt = new WxServerApi();
//siteconfig中记录的appid以及secret
$appid=$site_config['wechat_AppID'];
$secret=$site_config['wechat_AppSecret'];
//生成一个新的session_key
$ccc="https://api.weixin.qq.com/sns/ ... id%3D$appid&secret=$secret&js_code=$code&grant_type=authorization_code";
$content=$this->curl($ccc);
$content=json_decode($content);
$sessionkey=$content->session_key;
$config=new Config('site_config');
$appid=$config->wechat_AppID;
if (strlen($sessionkey) != 24) {
Block::sendRseult(200,'goods detail success',[
'flag'=>0,
'data'=>'false1',
]);
}
$aesKey=base64_decode($sessionkey);
if (strlen($iv) != 24) {
Block::sendRseult(200,'goods detail success',[
'flag'=>0,
'data'=>'false2',
]);
}
$aesIV=base64_decode($iv);
$aesCipher=base64_decode($data);
$result=openssl_decrypt( $aesCipher, "AES-128-CBC", $aesKey, 1, $aesIV);
/**
* 这里再次判断一次的原因是因为 重新生成的session_key 第一次解密会出现返回false的情况 第二次就正常 so.....
*/
if($result==false){
$result=openssl_decrypt( $aesCipher, "AES-128-CBC", $aesKey, 1, $aesIV);
}
$dataObj=json_decode( $result );
if( $dataObj == NULL )
{
Block::sendRseult(200,'goods detail success',[
'flag'=>0,
'data'=>'false3',
]);
}
if( $dataObj->watermark->appid != $appid )
{
Block::sendRseult(200,'goods detail success',[
'flag'=>0,
'data'=>'false4',
]);
}
Block::sendRseult(200,'goods detail success',[
'flag'=>1,
'data'=>$dataObj,
]);
}
这里值得一提的是,重新生成 session_key 来执行解密操作
$result=openssl_decrypt( $aesCipher, "AES-128-CBC", $aesKey, 1, $aesIV);
的时候 第一次总是会会出现返回false的情况 第二次就正常了 所以需要判断false 然后在执行一遍 (虽然办法有点笨 但是很有效 如果有更好的办法 请在评论区中留言 欢迎欢迎!!!)
到这里基本上就结束了手机认证 感谢您的耐心阅读 希望可以帮到您! bingo!! 查看全部
网页手机号抓取程序(开发微信小程序的时候经常会遇到要绑定用户手机号的需求
)
在开发微信小程序时,我们经常会遇到绑定用户手机号的需求。这里首先要获取用户信息中的手机号码:
首先是页面上的做法(就一句)wxml:
手机号认证
然后是js(wx):
里面调试代码很多,这里就不清理了(嘻嘻)
/**
* 授权手机号
* @param {*} e
*/
getPhoneNumber: function(e) {
console.log("手机号iv");
console.log(e.detail.iv)
console.log("手机号encryptedData");
console.log(e.detail.encryptedData)
// var session_key = wx.getStorageSync('session_key');
// console.log('session_key');
// console.log(session_key);
console.log("config appid");
console.log(site.AppID);
var that=this;
wx.login({
success: res => {
console.log("手机号rescode");
console.log(res.code);
console.log(res);
/**
* 这里重新获取session_key 的请求放到后台去因为如果放在小程序中的话 还需要端口认证
*/
// wx.request({
// url: 'https://api.weixin.qq.com/sns/jscode2session?appid=wxe1bd8e4045ad80ba&secret=9fbf669bb61ddfdd2d455eebe1d6fdf5&js_code='+res.code+'&grant_type=authorization_code',
// success:function(resc){
// console.log('哈哈哈哈')
// console.log(resc)
wx.request({
url: decode,
data:{
data:e.detail.encryptedData,
iv: e.detail.iv,
code:res.code
},
success:function(res){
console.log("解密之后");
console.log(res);
console.log("返回手机号");
console.log(res.data.data.data.phoneNumber);
var timestamp=new Date().getTime()
var data = {
"timestamp":timestamp,
"url":(checkphone+"").replace(config.baseUrl,""),
"user_id":userid,
'phone':res.data.data.data.phoneNumber,
}
var sign=utils.makeSign(site.siteTokenKey,data)
var phone = res.data.data.data.phoneNumber;
if(res.data.data.flag==1){
wx.request({
url: checkphone,
method: "POST",
data:data,
header: {
"Content-Type": "application/x-www-form-urlencoded",
"sign":sign,
'timestamp':timestamp
},
success: function (res) {
console.log(res);
if(res.data.data.flag == 1){
wx.navigateBack({
delta: 1
})
}
if(res.data.data.status == 0){
wx.showToast({
title: '保存失败',
icon: 'none',
duration: 2000
})
}
},
})
}else{
wx.navigateBack({
delta: 1
})
}
}
})
// }
// })
}
})
}
接下来是后台解密和更新手机号到数据库的主程序(php版):
/**
* 解密
*/
public function decode(){
//siteconfig读取类
$siteConfigObj = new Config("site_config");
$site_config = $siteConfigObj->getInfo();
$data=IFilter::act(IReq::get('data'));
$iv=IFilter::act(IReq::get('iv'));
// $sessionkey=IFilter::act(IReq::get('sessionkey'));
$code=IFilter::act(IReq::get('code'));
$decrypt = new WxServerApi();
//siteconfig中记录的appid以及secret
$appid=$site_config['wechat_AppID'];
$secret=$site_config['wechat_AppSecret'];
//生成一个新的session_key
$ccc="https://api.weixin.qq.com/sns/ ... id%3D$appid&secret=$secret&js_code=$code&grant_type=authorization_code";
$content=$this->curl($ccc);
$content=json_decode($content);
$sessionkey=$content->session_key;
$config=new Config('site_config');
$appid=$config->wechat_AppID;
if (strlen($sessionkey) != 24) {
Block::sendRseult(200,'goods detail success',[
'flag'=>0,
'data'=>'false1',
]);
}
$aesKey=base64_decode($sessionkey);
if (strlen($iv) != 24) {
Block::sendRseult(200,'goods detail success',[
'flag'=>0,
'data'=>'false2',
]);
}
$aesIV=base64_decode($iv);
$aesCipher=base64_decode($data);
$result=openssl_decrypt( $aesCipher, "AES-128-CBC", $aesKey, 1, $aesIV);
/**
* 这里再次判断一次的原因是因为 重新生成的session_key 第一次解密会出现返回false的情况 第二次就正常 so.....
*/
if($result==false){
$result=openssl_decrypt( $aesCipher, "AES-128-CBC", $aesKey, 1, $aesIV);
}
$dataObj=json_decode( $result );
if( $dataObj == NULL )
{
Block::sendRseult(200,'goods detail success',[
'flag'=>0,
'data'=>'false3',
]);
}
if( $dataObj->watermark->appid != $appid )
{
Block::sendRseult(200,'goods detail success',[
'flag'=>0,
'data'=>'false4',
]);
}
Block::sendRseult(200,'goods detail success',[
'flag'=>1,
'data'=>$dataObj,
]);
}
这里值得一提的是,重新生成 session_key 来执行解密操作
$result=openssl_decrypt( $aesCipher, "AES-128-CBC", $aesKey, 1, $aesIV);
的时候 第一次总是会会出现返回false的情况 第二次就正常了 所以需要判断false 然后在执行一遍 (虽然办法有点笨 但是很有效 如果有更好的办法 请在评论区中留言 欢迎欢迎!!!)
到这里基本上就结束了手机认证 感谢您的耐心阅读 希望可以帮到您! bingo!!
网页手机号抓取程序( 网页页面如何获得用户访客移动端手机号码?(图))
网站优化 • 优采云 发表了文章 • 0 个评论 • 51 次浏览 • 2021-11-22 04:23
网页页面如何获得用户访客移动端手机号码?(图))
网站手机访问者数据的抓取方法你真的了解吗?
计划管理人员的数值数据现在无处不在,那么如何辨别什么是真正的计划管理人员数值数据呢?
往往由于各种原因,客户只是一眼就离开,浪费了大量的时间和精力。相比之下,用户和访问者之间的直接沟通和引导效果会更好。那么网站站点是如何抓取用户访问者数值数据的呢?让我给你解释一下。
如何在网页上获取用户访问者的手机号码?事实上,规划管理运营商会有一个http报告,其中记录了每个用户访问者使用他的4G用户流量浏览他访问过哪些网站站点应用程序,以及他消耗了多少用户流量流量。这样对用户和访问者的消费行为和近期需求有非常准确的把握。这样的客户和用户的精准建设和开发,无疑是非常高的转化率。wap手机站获取用户访客信息系统,可以提高网站网站的转化率。是公司网站网站和竞价网联盟的商务推广和营销必备神器。它可以放心使用。在此重申,正式的规划管理运营商使用脱敏数字数据来保护用户的隐私。
示例:您正在做家装,并且您需要一组目标客户用户。你只需要提供一些peer URL,网站站点或者一个app,打算管理运营商最近几天的大数据。实时浏览访问或来电者信息被采集到供应商并提供给您。以上就是关于网站网站如何抓取用户和访问者信息的内容,希望对大家有所帮助。
为什么第一次使用大数据的用户体验,用户评价极差?首先是客户对寻找网址的误解。什么是信息流,什么是竞价网址,如何区分?第二层客户信任,互联网的利弊,大家都担心自己的钱会不会消失。虽然钱不多,但谁也不想上当。第三句话的误区,电话营销应该叫什么样的方式?如何使我的数值数据更准确?欢迎有兴趣的朋友加我交流。
转载自:网站 手机访问者数据的抓取方法你真的了解吗?
网站建筑服务
知道科技是一家具有12年经验的网站建设开发公司,品牌建设/外贸网站建设/谷歌营销推广/品牌营销策划,这些我们都能帮你搞定!
网站建设和生产计划是什么?报价是多少? 查看全部
网页手机号抓取程序(
网页页面如何获得用户访客移动端手机号码?(图))

网站手机访问者数据的抓取方法你真的了解吗?
计划管理人员的数值数据现在无处不在,那么如何辨别什么是真正的计划管理人员数值数据呢?
往往由于各种原因,客户只是一眼就离开,浪费了大量的时间和精力。相比之下,用户和访问者之间的直接沟通和引导效果会更好。那么网站站点是如何抓取用户访问者数值数据的呢?让我给你解释一下。
如何在网页上获取用户访问者的手机号码?事实上,规划管理运营商会有一个http报告,其中记录了每个用户访问者使用他的4G用户流量浏览他访问过哪些网站站点应用程序,以及他消耗了多少用户流量流量。这样对用户和访问者的消费行为和近期需求有非常准确的把握。这样的客户和用户的精准建设和开发,无疑是非常高的转化率。wap手机站获取用户访客信息系统,可以提高网站网站的转化率。是公司网站网站和竞价网联盟的商务推广和营销必备神器。它可以放心使用。在此重申,正式的规划管理运营商使用脱敏数字数据来保护用户的隐私。
示例:您正在做家装,并且您需要一组目标客户用户。你只需要提供一些peer URL,网站站点或者一个app,打算管理运营商最近几天的大数据。实时浏览访问或来电者信息被采集到供应商并提供给您。以上就是关于网站网站如何抓取用户和访问者信息的内容,希望对大家有所帮助。
为什么第一次使用大数据的用户体验,用户评价极差?首先是客户对寻找网址的误解。什么是信息流,什么是竞价网址,如何区分?第二层客户信任,互联网的利弊,大家都担心自己的钱会不会消失。虽然钱不多,但谁也不想上当。第三句话的误区,电话营销应该叫什么样的方式?如何使我的数值数据更准确?欢迎有兴趣的朋友加我交流。
转载自:网站 手机访问者数据的抓取方法你真的了解吗?

网站建筑服务
知道科技是一家具有12年经验的网站建设开发公司,品牌建设/外贸网站建设/谷歌营销推广/品牌营销策划,这些我们都能帮你搞定!
网站建设和生产计划是什么?报价是多少?
网页手机号抓取程序(浏览过的网页为啥会留下我的电话号码?问题描述不清楚)
网站优化 • 优采云 发表了文章 • 0 个评论 • 80 次浏览 • 2021-11-22 04:21
为什么我浏览过的网页会留下我的电话号码?
问题描述不清楚。每次我们登录或注册时,浏览器都会提示我们是否保存帐号和密码。此时,如果您点击“保存”,下次访问时会自动填写账户密码。如果使用手机号码,手机号码将通过浏览器保存。
2. 另一个是你浏览一个网站,一个网站可以访问其他网站的所有泄露接口,注册其他网站@时得到你> 电话号码。达到了从网站获取手机号码的目的。
3. 三、私密信息共享。映射您的 cookie 和其他人的信息数据库。虽然你没有在这个网站上使用你的手机号码,但是这个数据库里只有对方有你的手机。
打开网页是
机器人协议(也叫爬虫协议、机器人协议等)的全称是“网络爬虫排除标准”。网站通过robots协议告诉搜索引擎哪些页面可以爬取,哪些页面不能爬取。如果网站操作符通过文件协议进行限制,搜索界面会提示,因为robot.txt文件中有限制指令。
采集系统可以抓取指定页面的手机号,有吗?
是的,我们可以使用大数据进行精准营销。
您可以获取指定网页或应用最近三天的访问者数据,包括手机号码。并准确定位年龄、性别、地区等。您还可以设置客户登录的次数。例如,如果您想在三天内登录应用程序或访问该网页的访问者数据两次,则您可以这样做。
当我使用手机上网和浏览网页时,有人会知道我的手机号码吗?
目前,这项技术已经存在。在使用运营商流量的情况下,也就是在没有WiFi的情况下,可以高效的获取客户的手机号和相关的浏览渠道,以及客户的搜索关键词等。确定客户的真正需求或潜在目的。
中国使用的手机号码为11位,每个段有不同的编码方向:前三位-网络识别号;第四至第七位数字-区号;第八至第十一位——用户号码。这个号码也就是所谓的MDN号码,即主叫用户在呼叫本地网络的移动用户时需要拨打的号码。采用E.164编码,存储在HLR和VLR中,在地图接口上传输。
浏览网页却被追踪到手机号?
1. 在使用电脑或手机上网之前,手机信息会被保留。如果不及时清除,则保留。网站有手机号拦截程序,手机号被拦截。电脑上的网站或浏览的网站属于企业网站。营销人员可以通过节目安排获取QQ、电话、邮箱等联系方式。这是公司在销售过程中采集客户信息的常用方式。
为什么我的手机号总是被陌生的人打来,他们是怎么得到你的手机号的?
您可以设置骚扰拦截。我们不专业,不知道该怎么做。我的手机设置了骚扰拦截,陌生人打不进来,谢谢邀请 查看全部
网页手机号抓取程序(浏览过的网页为啥会留下我的电话号码?问题描述不清楚)
为什么我浏览过的网页会留下我的电话号码?
问题描述不清楚。每次我们登录或注册时,浏览器都会提示我们是否保存帐号和密码。此时,如果您点击“保存”,下次访问时会自动填写账户密码。如果使用手机号码,手机号码将通过浏览器保存。
2. 另一个是你浏览一个网站,一个网站可以访问其他网站的所有泄露接口,注册其他网站@时得到你> 电话号码。达到了从网站获取手机号码的目的。
3. 三、私密信息共享。映射您的 cookie 和其他人的信息数据库。虽然你没有在这个网站上使用你的手机号码,但是这个数据库里只有对方有你的手机。
打开网页是
机器人协议(也叫爬虫协议、机器人协议等)的全称是“网络爬虫排除标准”。网站通过robots协议告诉搜索引擎哪些页面可以爬取,哪些页面不能爬取。如果网站操作符通过文件协议进行限制,搜索界面会提示,因为robot.txt文件中有限制指令。
采集系统可以抓取指定页面的手机号,有吗?
是的,我们可以使用大数据进行精准营销。
您可以获取指定网页或应用最近三天的访问者数据,包括手机号码。并准确定位年龄、性别、地区等。您还可以设置客户登录的次数。例如,如果您想在三天内登录应用程序或访问该网页的访问者数据两次,则您可以这样做。
当我使用手机上网和浏览网页时,有人会知道我的手机号码吗?
目前,这项技术已经存在。在使用运营商流量的情况下,也就是在没有WiFi的情况下,可以高效的获取客户的手机号和相关的浏览渠道,以及客户的搜索关键词等。确定客户的真正需求或潜在目的。
中国使用的手机号码为11位,每个段有不同的编码方向:前三位-网络识别号;第四至第七位数字-区号;第八至第十一位——用户号码。这个号码也就是所谓的MDN号码,即主叫用户在呼叫本地网络的移动用户时需要拨打的号码。采用E.164编码,存储在HLR和VLR中,在地图接口上传输。
浏览网页却被追踪到手机号?
1. 在使用电脑或手机上网之前,手机信息会被保留。如果不及时清除,则保留。网站有手机号拦截程序,手机号被拦截。电脑上的网站或浏览的网站属于企业网站。营销人员可以通过节目安排获取QQ、电话、邮箱等联系方式。这是公司在销售过程中采集客户信息的常用方式。
为什么我的手机号总是被陌生的人打来,他们是怎么得到你的手机号的?
您可以设置骚扰拦截。我们不专业,不知道该怎么做。我的手机设置了骚扰拦截,陌生人打不进来,谢谢邀请
网页手机号抓取程序(小程序登录时,岂不是很呆的详细内容介绍!)
网站优化 • 优采云 发表了文章 • 0 个评论 • 66 次浏览 • 2021-11-18 13:08
小程序登录现在是小程序中非常常用的功能。因为是官方的方式,一键获取用户信息,一键获取手机号码。本文文章主要为大家介绍微信小程序是如何同时获取用户信息和用户手机号相关信息的,有需要的朋友可以参考以下
今天写登陆页面的时候,由于个人信息和手机号的授权,如果直接在页面上放2个按钮,会不会很傻?? ?
简单写一个掩码层,引导用户对手机号码进行授权。
1. 当我点击快速登录的微信登录时,首先触发的是微信原生的获取用户信息userInfo的方法,然后在它的成功回调中打开了遮罩层……
2. 遮罩层有一个按钮。这个按钮是触发微信原生的getPhoneNumber方法获取用户的手机号码。接下来就不用我说了。. . .
直接转码
绑定手机号请先绑定手机号在进行此操作 微信用户一键绑定
methods: { getUserProfile(){ // 推荐使用wx.getUserProfile获取用户信息,开发者每次通过该接口获取用户个人信息均需用户确认 // 开发者妥善保管用户快速填写的头像昵称,避免重复弹窗 wx.getUserProfile({ desc: '用于完善会员资料', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写 success: (res) => { this.showDialogBtn();//调用一键获取手机号弹窗(自己写的) } }) }, // 显示一键获取手机号弹窗 showDialogBtn: function () { this.showModal = true }, // 隐藏一键获取手机号弹窗 hideModal: function () { this.showModal = false }, //获取用户手机号 getPhoneNumber (e) { console,log(e.detael) },
总结
以上就是微信小程序如何同时获取用户信息和用户手机号码的细节。更多详情请关注其他相关html中文网站文章! 查看全部
网页手机号抓取程序(小程序登录时,岂不是很呆的详细内容介绍!)
小程序登录现在是小程序中非常常用的功能。因为是官方的方式,一键获取用户信息,一键获取手机号码。本文文章主要为大家介绍微信小程序是如何同时获取用户信息和用户手机号相关信息的,有需要的朋友可以参考以下
今天写登陆页面的时候,由于个人信息和手机号的授权,如果直接在页面上放2个按钮,会不会很傻?? ?
简单写一个掩码层,引导用户对手机号码进行授权。

1. 当我点击快速登录的微信登录时,首先触发的是微信原生的获取用户信息userInfo的方法,然后在它的成功回调中打开了遮罩层……

2. 遮罩层有一个按钮。这个按钮是触发微信原生的getPhoneNumber方法获取用户的手机号码。接下来就不用我说了。. . .

直接转码
绑定手机号请先绑定手机号在进行此操作 微信用户一键绑定
methods: { getUserProfile(){ // 推荐使用wx.getUserProfile获取用户信息,开发者每次通过该接口获取用户个人信息均需用户确认 // 开发者妥善保管用户快速填写的头像昵称,避免重复弹窗 wx.getUserProfile({ desc: '用于完善会员资料', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写 success: (res) => { this.showDialogBtn();//调用一键获取手机号弹窗(自己写的) } }) }, // 显示一键获取手机号弹窗 showDialogBtn: function () { this.showModal = true }, // 隐藏一键获取手机号弹窗 hideModal: function () { this.showModal = false }, //获取用户手机号 getPhoneNumber (e) { console,log(e.detael) },
总结
以上就是微信小程序如何同时获取用户信息和用户手机号码的细节。更多详情请关注其他相关html中文网站文章!
网页手机号抓取程序(微信小程序用户授权获取手机号的相关资料,文中通过示例代码介绍)
网站优化 • 优采云 发表了文章 • 0 个评论 • 76 次浏览 • 2021-11-18 13:07
本文文章主要为大家介绍微信小程序用户授权获取手机号码的相关信息。文中介绍的示例代码非常详细,对大家的学习或工作有一定的参考学习价值。有需要的朋友和小编一起学习吧
前言
小程序有一个很方便的获取用户的api,就是通过getPhoneNumber获取用户已经绑定微信的手机号。需要注意的一点是,现在微信注重用户体验,有些方法需要用户主动触发,比如getPhoneNumber。
实现思路:
1、通过wx.login获取code获取用户的openID和sessionKey
2、 通过getPhoneNumber, iv 获取encryptedData
3、通过参数[encryptedData]、[iv]、[sessionKey]请求后台解密获取用户手机号
干货直送:
1、用户点击按钮获取用户手机号
获取用户手机号
2、 弹出授权图片:
3、 解密获取手机号
直接上代码:
wxlogin: function() { //获取用户的openID和sessionKey var that = this; wx.login({ //获取code 使用wx.login得到的登陆凭证,用于换取openid success: (res) = >{ wx.request({ method: "GET", url: 'https://xxxwx/wxlogin.do', data: { code: res.code, appId: "appIdSbcx", appKey: "appKeySbcx" }, header: { 'content-type': 'application/json' // 默认值 }, success: (res) = >{ console.log(res); that.setData({ sessionKey: res.data.session_key }); } }); } }); } getPhoneNumber: function(e) { //点击获取手机号码按钮 var that = this; wx.checkSession({ success: function() { console.log(e.detail.errMsg) console.log(e.detail.iv) console.log(e.detail.encryptedData) var ency = e.detail.encryptedData; var iv = e.detail.iv; var sessionk = that.data.sessionKey; if (e.detail.errMsg == 'getPhoneNumber:fail user deny') { that.setData({ modalstatus: true }); } else { //同意授权 wx.request({ method: "GET", url: 'https://xxx/wx/deciphering.do', data: { encrypdata: ency, ivdata: iv, sessionkey: sessionk }, header: { 'content-type': 'application/json' // 默认值 }, success: (res) = >{ console.log("解密成功~~~~~~~将解密的号码保存到本地~~~~~~~~"); console.log(res); var phone = res.data.phoneNumber; console.log(phone); }, fail: function(res) { console.log("解密失败~~~~~~~~~~~~~"); console.log(res); } }); } }, fail: function() { console.log("session_key 已经失效,需要重新执行登录流程"); that.wxlogin(); //重新登录 } }); }
后台代码:
/** * 解密并且获取用户手机号码 * @param encrypdata * @param ivdata * @param sessionkey * @param request * @return * @throws Exception */ @RequestMapping(value = "deciphering", method = RequestMethod.GET) public @ResponseBody String deciphering(String encrypdata, String ivdata, String sessionkey, HttpServletRequest request) { byte[] encrypData = Base64.decode(encrypdata); byte[] ivData = Base64.decode(ivdata); byte[] sessionKey = Base64.decode(sessionkey); String str=""; try { str = decrypt(sessionKey,ivData,encrypData); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println(str); return str; } 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"); }
总结
以上是微信小程序用户授权获取手机号码(getPhoneNumber)的详细内容。更多详情请关注其他相关html中文网站文章! 查看全部
网页手机号抓取程序(微信小程序用户授权获取手机号的相关资料,文中通过示例代码介绍)
本文文章主要为大家介绍微信小程序用户授权获取手机号码的相关信息。文中介绍的示例代码非常详细,对大家的学习或工作有一定的参考学习价值。有需要的朋友和小编一起学习吧
前言
小程序有一个很方便的获取用户的api,就是通过getPhoneNumber获取用户已经绑定微信的手机号。需要注意的一点是,现在微信注重用户体验,有些方法需要用户主动触发,比如getPhoneNumber。
实现思路:
1、通过wx.login获取code获取用户的openID和sessionKey
2、 通过getPhoneNumber, iv 获取encryptedData
3、通过参数[encryptedData]、[iv]、[sessionKey]请求后台解密获取用户手机号
干货直送:
1、用户点击按钮获取用户手机号
获取用户手机号
2、 弹出授权图片:

3、 解密获取手机号

直接上代码:
wxlogin: function() { //获取用户的openID和sessionKey var that = this; wx.login({ //获取code 使用wx.login得到的登陆凭证,用于换取openid success: (res) = >{ wx.request({ method: "GET", url: 'https://xxxwx/wxlogin.do', data: { code: res.code, appId: "appIdSbcx", appKey: "appKeySbcx" }, header: { 'content-type': 'application/json' // 默认值 }, success: (res) = >{ console.log(res); that.setData({ sessionKey: res.data.session_key }); } }); } }); } getPhoneNumber: function(e) { //点击获取手机号码按钮 var that = this; wx.checkSession({ success: function() { console.log(e.detail.errMsg) console.log(e.detail.iv) console.log(e.detail.encryptedData) var ency = e.detail.encryptedData; var iv = e.detail.iv; var sessionk = that.data.sessionKey; if (e.detail.errMsg == 'getPhoneNumber:fail user deny') { that.setData({ modalstatus: true }); } else { //同意授权 wx.request({ method: "GET", url: 'https://xxx/wx/deciphering.do', data: { encrypdata: ency, ivdata: iv, sessionkey: sessionk }, header: { 'content-type': 'application/json' // 默认值 }, success: (res) = >{ console.log("解密成功~~~~~~~将解密的号码保存到本地~~~~~~~~"); console.log(res); var phone = res.data.phoneNumber; console.log(phone); }, fail: function(res) { console.log("解密失败~~~~~~~~~~~~~"); console.log(res); } }); } }, fail: function() { console.log("session_key 已经失效,需要重新执行登录流程"); that.wxlogin(); //重新登录 } }); }
后台代码:
/** * 解密并且获取用户手机号码 * @param encrypdata * @param ivdata * @param sessionkey * @param request * @return * @throws Exception */ @RequestMapping(value = "deciphering", method = RequestMethod.GET) public @ResponseBody String deciphering(String encrypdata, String ivdata, String sessionkey, HttpServletRequest request) { byte[] encrypData = Base64.decode(encrypdata); byte[] ivData = Base64.decode(ivdata); byte[] sessionKey = Base64.decode(sessionkey); String str=""; try { str = decrypt(sessionKey,ivData,encrypData); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println(str); return str; } 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"); }
总结
以上是微信小程序用户授权获取手机号码(getPhoneNumber)的详细内容。更多详情请关注其他相关html中文网站文章!
网页手机号抓取程序(6.通过bindgetphonenumber绑定的事件获取回调的参数有三个,加密数据解密算法)
网站优化 • 优采云 发表了文章 • 0 个评论 • 55 次浏览 • 2021-11-15 15:11
本文文章主要介绍微信小程序getPhoneNumber获取用户手机号码的相关信息。希望这篇文章能帮到你,有需要的朋友可以参考一下。
微信小程序getPhoneNumber获取用户手机号
小程序中有很多地方会用到注册用户信息。用户需要填写手机号等,有了这个组件,可以快速获取微信绑定的手机号,无需用户填写。
1. getPhoneNumber 组件是通过按钮实现的(其他标签无效)。在按钮中设置open-type="getPhoneNumber",绑定bindgetphonenumber事件获取回调。
2.在使用该组件之前,必须调用登录接口。如果没有调用login,点击按钮时,会提示先调用login。
App({ onLaunch: function () { wx.login({ success: function (res) { if (res.code) { //发起网络请求 console.log(res.code) } else { console.log('获取用户登录态失败!' + res.errMsg) } } }); } })
3.通过bindgetphonenumber绑定的事件获取回调。有三个回调参数,
getPhoneNumber: function(e) { console.log(e.detail.errMsg) console.log(e.detail.iv) console.log(e.detail.encryptedData) if (e.detail.errMsg == 'getPhoneNumber:fail user deny'){ wx.showModal({ title: '提示', showCancel: false, content: '未授权', success: function (res) { } }) } else { wx.showModal({ title: '提示', showCancel: false, content: '同意授权', success: function (res) { } }) } }
4.最后我们需要按照自己的业务逻辑进行处理。如果用户不同意授权,我们可能会有一个界面让他手动输入。如果不是强制获取手机号,我们可以直接跳转到页面进行下一步。. (用户不同意授权errMsg返回'getPhoneNumber: fail user deny')
5. 用户同意授权,我们可以根据登录时得到的code通过后台和微信处理获取session_key,最后通过app_id、session_key、iv、encryptedData(用户同意授权errMsg到返回'getPhoneNumber:好的')
6. 解密方法可以查看官方微信开发文档,有详细说明。
加密数据解密算法(官方文档)
如有问题,请留言或到本站社区讨论,感谢阅读,希望对您有所帮助,感谢您对本站的支持!
以上就是微信小程序getPhoneNumber获取用户手机号码的详细内容。更多详情请关注其他相关html中文网站文章! 查看全部
网页手机号抓取程序(6.通过bindgetphonenumber绑定的事件获取回调的参数有三个,加密数据解密算法)
本文文章主要介绍微信小程序getPhoneNumber获取用户手机号码的相关信息。希望这篇文章能帮到你,有需要的朋友可以参考一下。
微信小程序getPhoneNumber获取用户手机号
小程序中有很多地方会用到注册用户信息。用户需要填写手机号等,有了这个组件,可以快速获取微信绑定的手机号,无需用户填写。
1. getPhoneNumber 组件是通过按钮实现的(其他标签无效)。在按钮中设置open-type="getPhoneNumber",绑定bindgetphonenumber事件获取回调。
2.在使用该组件之前,必须调用登录接口。如果没有调用login,点击按钮时,会提示先调用login。
App({ onLaunch: function () { wx.login({ success: function (res) { if (res.code) { //发起网络请求 console.log(res.code) } else { console.log('获取用户登录态失败!' + res.errMsg) } } }); } })
3.通过bindgetphonenumber绑定的事件获取回调。有三个回调参数,

getPhoneNumber: function(e) { console.log(e.detail.errMsg) console.log(e.detail.iv) console.log(e.detail.encryptedData) if (e.detail.errMsg == 'getPhoneNumber:fail user deny'){ wx.showModal({ title: '提示', showCancel: false, content: '未授权', success: function (res) { } }) } else { wx.showModal({ title: '提示', showCancel: false, content: '同意授权', success: function (res) { } }) } }
4.最后我们需要按照自己的业务逻辑进行处理。如果用户不同意授权,我们可能会有一个界面让他手动输入。如果不是强制获取手机号,我们可以直接跳转到页面进行下一步。. (用户不同意授权errMsg返回'getPhoneNumber: fail user deny')
5. 用户同意授权,我们可以根据登录时得到的code通过后台和微信处理获取session_key,最后通过app_id、session_key、iv、encryptedData(用户同意授权errMsg到返回'getPhoneNumber:好的')
6. 解密方法可以查看官方微信开发文档,有详细说明。
加密数据解密算法(官方文档)
如有问题,请留言或到本站社区讨论,感谢阅读,希望对您有所帮助,感谢您对本站的支持!
以上就是微信小程序getPhoneNumber获取用户手机号码的详细内容。更多详情请关注其他相关html中文网站文章!
网页手机号抓取程序(使用一个新的网络爬虫来获取访问者的电话号码网页手机号码获取)
网站优化 • 优采云 发表了文章 • 0 个评论 • 131 次浏览 • 2021-12-15 02:13
先从第一个说起,其实就是网站或者应用开发者使用新的网络爬虫来获取访问者的电话号码。获取网页电话号码的关键是在网站的标题中插入一段设计代码,捕获指定的网站和app的手机号码。访问者访问网页时,会询问用户,但这种抓取方式速度快,因为涉嫌侵犯隐私,容易被百度搜索和k站查到,当然是为了保护他们网站的权限和总流量,很多网站管理员放弃了这种实际操作。二是找靠谱的互联网大数据运营商谈。代理合作,基本思路是,在手机上使用3g流量的访问者将可以通过https报告回馈给网站或应用程序,并且访问者的访问者报告可以测量他们的电话号码,他们做了什么访问网站,停留多长时间,可以计算访问者需求的物理模型。向提供这些专业服务的公司发送反馈信息,并为他提供营销后台管理,让他打电话处理客户需求。由于是皮肤过敏的个人信息,保护客户隐私,第二客户在这些方面的转化率会很高。@网站,他们停留了多久,并且可以计算出访客需求的物理模型。向提供这些专业服务的公司发送反馈信息,并为他提供营销后台管理,让他打电话处理客户需求。由于是皮肤过敏的个人信息,保护客户隐私,第二客户在这些方面的转化率会很高。@网站,他们停留了多久,并且可以计算出访客需求的物理模型。向提供这些专业服务的公司发送反馈信息,并为他提供营销后台管理,让他打电话处理客户需求。由于是皮肤过敏的个人信息,保护客户隐私,第二客户在这些方面的转化率会很高。
许多业务经理都会使用它。接下来主要介绍网站访问者抢手机的第二种方式。根据规律,通过运营商的大数据、人群画像的精准定位以及游客的行为,可以定位用户的需求,达到精准的营销效果。下面是手机号获取系统的截图。任何人和任何上网行为都离不开运营商对每个人的上网行为、通话行为、短信交互、实时定位等行为的存储。每一个行为都反映了客户的需求。你想要什么样的客户行为?对我们来说,无非就是查找和提取访问者手机号码的具体过程。自主研发的系统自动获取手机号程序,推荐广告,支持小额支付测试交易。请参阅上述文件。运营商根据您的要求存储每个用户的行为。型号、过滤器,完美满足客户的要求。客户可以根据上面列出的类型提出您的要求。包括但不限于电话号码类别、搜索词类别、url类别、应用类别、位置类别、短信类别,如果您需要其他维度 5、为您定制,过滤您的目标客户。低成本的源头+高效率的改造,解决客户10倍以上的盈利问题。安装方法和代码安装在移动站点前身。需要添加所有页面。如果没有单独的移动站点,安装方法是一样的。访问率,手机号抓取软件的访问率高达60%。请注意,如果你保证80%的访问率,95%以上肯定是骗子。网站程序目前我们的软件支持市面上大部分程序,如asp、php、java等,操作系统支持android、Apple系统、Symbian系统等。 查看全部
网页手机号抓取程序(使用一个新的网络爬虫来获取访问者的电话号码网页手机号码获取)
先从第一个说起,其实就是网站或者应用开发者使用新的网络爬虫来获取访问者的电话号码。获取网页电话号码的关键是在网站的标题中插入一段设计代码,捕获指定的网站和app的手机号码。访问者访问网页时,会询问用户,但这种抓取方式速度快,因为涉嫌侵犯隐私,容易被百度搜索和k站查到,当然是为了保护他们网站的权限和总流量,很多网站管理员放弃了这种实际操作。二是找靠谱的互联网大数据运营商谈。代理合作,基本思路是,在手机上使用3g流量的访问者将可以通过https报告回馈给网站或应用程序,并且访问者的访问者报告可以测量他们的电话号码,他们做了什么访问网站,停留多长时间,可以计算访问者需求的物理模型。向提供这些专业服务的公司发送反馈信息,并为他提供营销后台管理,让他打电话处理客户需求。由于是皮肤过敏的个人信息,保护客户隐私,第二客户在这些方面的转化率会很高。@网站,他们停留了多久,并且可以计算出访客需求的物理模型。向提供这些专业服务的公司发送反馈信息,并为他提供营销后台管理,让他打电话处理客户需求。由于是皮肤过敏的个人信息,保护客户隐私,第二客户在这些方面的转化率会很高。@网站,他们停留了多久,并且可以计算出访客需求的物理模型。向提供这些专业服务的公司发送反馈信息,并为他提供营销后台管理,让他打电话处理客户需求。由于是皮肤过敏的个人信息,保护客户隐私,第二客户在这些方面的转化率会很高。
许多业务经理都会使用它。接下来主要介绍网站访问者抢手机的第二种方式。根据规律,通过运营商的大数据、人群画像的精准定位以及游客的行为,可以定位用户的需求,达到精准的营销效果。下面是手机号获取系统的截图。任何人和任何上网行为都离不开运营商对每个人的上网行为、通话行为、短信交互、实时定位等行为的存储。每一个行为都反映了客户的需求。你想要什么样的客户行为?对我们来说,无非就是查找和提取访问者手机号码的具体过程。自主研发的系统自动获取手机号程序,推荐广告,支持小额支付测试交易。请参阅上述文件。运营商根据您的要求存储每个用户的行为。型号、过滤器,完美满足客户的要求。客户可以根据上面列出的类型提出您的要求。包括但不限于电话号码类别、搜索词类别、url类别、应用类别、位置类别、短信类别,如果您需要其他维度 5、为您定制,过滤您的目标客户。低成本的源头+高效率的改造,解决客户10倍以上的盈利问题。安装方法和代码安装在移动站点前身。需要添加所有页面。如果没有单独的移动站点,安装方法是一样的。访问率,手机号抓取软件的访问率高达60%。请注意,如果你保证80%的访问率,95%以上肯定是骗子。网站程序目前我们的软件支持市面上大部分程序,如asp、php、java等,操作系统支持android、Apple系统、Symbian系统等。
网页手机号抓取程序(微信服务器使用code换取sessionKey加密时使用的sessionKey一致才可解密)
网站优化 • 优采云 发表了文章 • 0 个评论 • 78 次浏览 • 2021-12-15 02:11
最近在做一个toC的小程序,把之前做的东西捡起来。但是我发现了之前踩过的一些坑,我又踩了。
实在想不起来了~花点时间做个笔记。
重点说明:获取微信用户绑定的手机号,需要先调用wx.login接口。
原理:小程序获取的手机号码信息是微信服务器加密后的信息。微信服务器会根据wx.login下发的临时码对应的sessionKey对手机号信息进行加密。使用开发者服务器上的代码换取sessionKey。只有交换的 sessionKey 与加密信息时使用的 sessionKey 一致,才能解密成功。
注意:服务端使用code交换的sessionKey不是加密时使用的sessionKey,导致解密失败。建议开发者提前登录。
一、 登录授权要求
由于业务限制,用户必须在登录小程序前对其手机号码进行授权,才能进入小程序。
前端读取App.js入口文件中的本地存储,判断是否有手机号。如果有手机号,则直接刷新用户信息登录,如果没有,则需要通过登录授权流程登录。
二、 公司内部小程序19年开发,登录授权设计。后台设计了两个界面,登录注册界面,更新用户信息界面。登录和注册接口逻辑:
1、 根据输入参数code,调用微信auth.code2Session接口换取openId和session_key。
2、 交换成功,查询user表中是否存在输入参数openId,如果存在则更新session_key,如果不存在则创建用户并保存openId和session_key。处理完毕后,将openId返回给前端。
前端调用:
在登录页面的onShow生命周期中,调用该接口,将返回的数据记录在页面状态中。
onShow: function () {
let that = this;
// 判断是否缓存手机号
that.data.purePhoneNumber = wx.getStorageSync("purePhoneNumber");
if (that.data.purePhoneNumber == '') {
wx.login({
success(res) {
WXrequest.post({
url: '/code2Session',
data: {
'jsCode': res.code
}
}).then(res => {
wx.setStorageSync('openid', res.data.openid);
that.data.openid = res.data.openid;
});
}
});
} else {
wx.showLoading({
title: '登录中' // 数据请求前loading
})
wx.switchTab({
url: '../mine/index'
})
}
}
复制代码
更新用户信息接口逻辑:
1、 根据输入参数openId到user表查询session_key,结合输入参数encryptedData和iv解密得到手机号码。
2、 手机号解密后,更新用户信息,将用户信息返回给前端。
前端调用:
用户在获取到手机号码后主动触发登录按钮并调用。
getPhoneNumber: function (e) {
let that = this;
if (e.detail.errMsg == 'getPhoneNumber:ok') {
WXrequest.post({
url: '/getWXUserPhone',
data: {
'encryptedData': e.detail.encryptedData,
'openid': that.data.openid,
'iv': e.detail.iv,
}
}).then(res => {
// 存用户手机号及用户信息
wx.setStorageSync('purePhoneNumber', res.data.purePhoneNumber);
wx.setStorageSync('userInfo', res.data);
// 跳转首页
wx.showLoading({
title: '登录中'
})
setTimeout(function () {
wx.switchTab({
url: '../mine/index'
})
}, 1000)
})
}
}
复制代码
注意:该代码有效期为五分钟。代码是在登录页面的onShow生命周期中获取的。如果用户在 5 分钟后打开页面并授权电话号码,则解密将失败。需要优化。
三、 最近开发的toC小程序登录授权设计。后台的同事设计了小程序登录+获取手机号的界面,称为登录授权界面。接口逻辑:
1、 根据输入参数code,首先调用auth.code2Session接口,换取openId和session_key。
2、 根据上一步交换的appId、encryptedData、session_key对数据进行解密,得到手机号码。
3、 查询用户表中是否存在openId,并进行逻辑处理。
如果存在,则判断用户手机号码是否与解析出的手机号码一致,一致接口返回用户信息;如果不一致,则更新手机号码,并将之前的手机号码记录在历史记录中。
如果不存在,直接创建用户并返回用户信息。
前端调用:
由于代码的原因,有效期为五分钟。获取登录页面onShow生命周期中的code并不能保证用户会在五分钟内对手机号码进行授权。
所以获取手机号成功后,调用wx.login()获取code,然后调用登录授权接口。
问题:
先获取手机号再调用wx.login(),导致后台解析手机号失败,报错:session_key is invalid。
根据以往的经验,我开始直接写代码,时间太长,忘记了一些注意事项。报错后再次阅读文档。文档明确提醒:要获取微信用户绑定的手机号,需要先调用wx.login接口。
注:阅读以下文档,了解微信对开放数据的验证解密,你会更深刻的体会到为什么需要在获取手机号之前调用wx.login接口。
解决方案:
在登录页面的onShow生命周期中,每隔几分钟刷新一次登录状态。记录页面状态下的状态,获取手机号成功后发送到后台。
componentDidShow() {
// 隐藏房子
Taro.hideHomeButton();
// code 用户登录凭证(有效期五分钟), 停留在当前页面每隔两分钟,重新刷新登陆态,否则后台解析session_key会失效
Taro.login({
success: (res) => {
this.setState({
code: res.code,
});
},
});
this.timer = setInterval(() => {
Taro.login({
success: (res) => {
this.setState({
code: res.code,
});
},
});
}, 60000 * 2);
}
// 获取手机号
getPhoneNumber(e) {
if (e.detail.errMsg.indexOf("getPhoneNumber:fail") != -1) {
if (e.detail.errMsg.indexOf("user cancel") != -1) {
toast("请不要重复点击、以免取消微信授权");
} else {
toast("允许授权将获得更好的服务");
}
} else {
this.setState({
loading: true,
});
Taro.request({
url: `${config.baseUrl}/user`,
method: "POST",
header: { "Content-Type": "application/json" },
data: {
code: this.state.code,
iv: e.detail.iv,
encryptedData: e.detail.encryptedData,
},
success: (res) => {
const redData = res.data.data || {};
if (res.data.code != 0) {
toast(res.data.msg);
} else {
Taro.setStorageSync(`${config.env}openId`, redData.openId);
Taro.setStorageSync(`${config.env}userId`, redData.userId);
Taro.setStorageSync(`${config.env}phone`, redData.phone);
this.props.dispatch({
type: "User/setUser",
payload: {
userInfo: redData,
},
});
this.setState({
loading: false,
});
}
},
fail: (err) => {
this.setState({
loading: false,
});
toast(err);
},
});
}
}
// DOM
this.getPhoneNumber(e)}
>
{this.state.loading ? "登录中" : "授权手机号"}
复制代码
四、详细了解微信登录授权机制的原理。
踩坑后,重新研究了OAuth2.0安全协议、小程序登录授权、开放数据验证解密等流程及底层原理。
稍后花时间在笔记中组织它...... 查看全部
网页手机号抓取程序(微信服务器使用code换取sessionKey加密时使用的sessionKey一致才可解密)
最近在做一个toC的小程序,把之前做的东西捡起来。但是我发现了之前踩过的一些坑,我又踩了。
实在想不起来了~花点时间做个笔记。
重点说明:获取微信用户绑定的手机号,需要先调用wx.login接口。
原理:小程序获取的手机号码信息是微信服务器加密后的信息。微信服务器会根据wx.login下发的临时码对应的sessionKey对手机号信息进行加密。使用开发者服务器上的代码换取sessionKey。只有交换的 sessionKey 与加密信息时使用的 sessionKey 一致,才能解密成功。
注意:服务端使用code交换的sessionKey不是加密时使用的sessionKey,导致解密失败。建议开发者提前登录。
一、 登录授权要求
由于业务限制,用户必须在登录小程序前对其手机号码进行授权,才能进入小程序。
前端读取App.js入口文件中的本地存储,判断是否有手机号。如果有手机号,则直接刷新用户信息登录,如果没有,则需要通过登录授权流程登录。
二、 公司内部小程序19年开发,登录授权设计。后台设计了两个界面,登录注册界面,更新用户信息界面。登录和注册接口逻辑:
1、 根据输入参数code,调用微信auth.code2Session接口换取openId和session_key。
2、 交换成功,查询user表中是否存在输入参数openId,如果存在则更新session_key,如果不存在则创建用户并保存openId和session_key。处理完毕后,将openId返回给前端。
前端调用:
在登录页面的onShow生命周期中,调用该接口,将返回的数据记录在页面状态中。
onShow: function () {
let that = this;
// 判断是否缓存手机号
that.data.purePhoneNumber = wx.getStorageSync("purePhoneNumber");
if (that.data.purePhoneNumber == '') {
wx.login({
success(res) {
WXrequest.post({
url: '/code2Session',
data: {
'jsCode': res.code
}
}).then(res => {
wx.setStorageSync('openid', res.data.openid);
that.data.openid = res.data.openid;
});
}
});
} else {
wx.showLoading({
title: '登录中' // 数据请求前loading
})
wx.switchTab({
url: '../mine/index'
})
}
}
复制代码
更新用户信息接口逻辑:
1、 根据输入参数openId到user表查询session_key,结合输入参数encryptedData和iv解密得到手机号码。
2、 手机号解密后,更新用户信息,将用户信息返回给前端。
前端调用:
用户在获取到手机号码后主动触发登录按钮并调用。
getPhoneNumber: function (e) {
let that = this;
if (e.detail.errMsg == 'getPhoneNumber:ok') {
WXrequest.post({
url: '/getWXUserPhone',
data: {
'encryptedData': e.detail.encryptedData,
'openid': that.data.openid,
'iv': e.detail.iv,
}
}).then(res => {
// 存用户手机号及用户信息
wx.setStorageSync('purePhoneNumber', res.data.purePhoneNumber);
wx.setStorageSync('userInfo', res.data);
// 跳转首页
wx.showLoading({
title: '登录中'
})
setTimeout(function () {
wx.switchTab({
url: '../mine/index'
})
}, 1000)
})
}
}
复制代码
注意:该代码有效期为五分钟。代码是在登录页面的onShow生命周期中获取的。如果用户在 5 分钟后打开页面并授权电话号码,则解密将失败。需要优化。
三、 最近开发的toC小程序登录授权设计。后台的同事设计了小程序登录+获取手机号的界面,称为登录授权界面。接口逻辑:
1、 根据输入参数code,首先调用auth.code2Session接口,换取openId和session_key。
2、 根据上一步交换的appId、encryptedData、session_key对数据进行解密,得到手机号码。
3、 查询用户表中是否存在openId,并进行逻辑处理。
如果存在,则判断用户手机号码是否与解析出的手机号码一致,一致接口返回用户信息;如果不一致,则更新手机号码,并将之前的手机号码记录在历史记录中。
如果不存在,直接创建用户并返回用户信息。
前端调用:
由于代码的原因,有效期为五分钟。获取登录页面onShow生命周期中的code并不能保证用户会在五分钟内对手机号码进行授权。
所以获取手机号成功后,调用wx.login()获取code,然后调用登录授权接口。
问题:
先获取手机号再调用wx.login(),导致后台解析手机号失败,报错:session_key is invalid。
根据以往的经验,我开始直接写代码,时间太长,忘记了一些注意事项。报错后再次阅读文档。文档明确提醒:要获取微信用户绑定的手机号,需要先调用wx.login接口。
注:阅读以下文档,了解微信对开放数据的验证解密,你会更深刻的体会到为什么需要在获取手机号之前调用wx.login接口。
解决方案:
在登录页面的onShow生命周期中,每隔几分钟刷新一次登录状态。记录页面状态下的状态,获取手机号成功后发送到后台。
componentDidShow() {
// 隐藏房子
Taro.hideHomeButton();
// code 用户登录凭证(有效期五分钟), 停留在当前页面每隔两分钟,重新刷新登陆态,否则后台解析session_key会失效
Taro.login({
success: (res) => {
this.setState({
code: res.code,
});
},
});
this.timer = setInterval(() => {
Taro.login({
success: (res) => {
this.setState({
code: res.code,
});
},
});
}, 60000 * 2);
}
// 获取手机号
getPhoneNumber(e) {
if (e.detail.errMsg.indexOf("getPhoneNumber:fail") != -1) {
if (e.detail.errMsg.indexOf("user cancel") != -1) {
toast("请不要重复点击、以免取消微信授权");
} else {
toast("允许授权将获得更好的服务");
}
} else {
this.setState({
loading: true,
});
Taro.request({
url: `${config.baseUrl}/user`,
method: "POST",
header: { "Content-Type": "application/json" },
data: {
code: this.state.code,
iv: e.detail.iv,
encryptedData: e.detail.encryptedData,
},
success: (res) => {
const redData = res.data.data || {};
if (res.data.code != 0) {
toast(res.data.msg);
} else {
Taro.setStorageSync(`${config.env}openId`, redData.openId);
Taro.setStorageSync(`${config.env}userId`, redData.userId);
Taro.setStorageSync(`${config.env}phone`, redData.phone);
this.props.dispatch({
type: "User/setUser",
payload: {
userInfo: redData,
},
});
this.setState({
loading: false,
});
}
},
fail: (err) => {
this.setState({
loading: false,
});
toast(err);
},
});
}
}
// DOM
this.getPhoneNumber(e)}
>
{this.state.loading ? "登录中" : "授权手机号"}
复制代码
四、详细了解微信登录授权机制的原理。
踩坑后,重新研究了OAuth2.0安全协议、小程序登录授权、开放数据验证解密等流程及底层原理。
稍后花时间在笔记中组织它......
网页手机号抓取程序(小程序中有注册用户信息的地方,用户需要填写手机号)
网站优化 • 优采云 发表了文章 • 0 个评论 • 46 次浏览 • 2021-12-14 19:28
小程序中有很多地方会用到注册用户信息。用户需要填写手机号等,有了这个组件,可以快速获取微信绑定的手机号,无需用户填写。
1. getPhoneNumber 组件是通过按钮实现的(其他标签无效)。在按钮中设置open-type="getPhoneNumber",绑定bindgetphonenumber事件获取回调。
2.在使用该组件之前,必须先调用登录界面。如果没有调用login,点击按钮,会提示先调用login。
App({
onLaunch: function () {
wx.login({
success: function (res) {
if (res.code) {
//发起网络请求
console.log(res.code)
} else {
console.log('获取用户登录态失败!' + res.errMsg)
}
}
});
}
})
3.通过bindgetphonenumber绑定的事件获取回调。有三个回调参数,
errMsg:用户点击取消或授权信息回调。
iv:加密算法的初始向量(如果用户不同意授权则未定义)。
encryptedData:用户信息的加密数据(如果用户不同意授权,也会返回undefined)
getPhoneNumber: function(e) {
console.log(e.detail.errMsg)
console.log(e.detail.iv)
console.log(e.detail.encryptedData)
if (e.detail.errMsg == 'getPhoneNumber:fail user deny'){
wx.showModal({
title: '提示',
showCancel: false,
content: '未授权',
success: function (res) { }
})
} else {
wx.showModal({
title: '提示',
showCancel: false,
content: '同意授权',
success: function (res) { }
})
}
}
4.最后,我们需要按照自己的业务逻辑进行处理。如果用户不同意授权,我们可能会有一个界面让他手动输入。如果不是强制获取手机号,我们可以直接跳转到页面进行下一步。. (用户不同意授权errMsg返回'getPhoneNumber: fail user deny')
5. 用户同意授权,我们可以根据登录时得到的code通过后台和微信处理得到session_key,最后通过app_id、session_key、iv、encryptedData(用户同意授权errMsg到返回'getPhoneNumber:好的')
总结
以上就是小编为大家介绍的获取手机号授权用户登录功能的微信小程序。我希望它会对你有所帮助。如果您有任何问题,请给我留言。小编会及时回复您。非常感谢大家对脸圈教程网站的支持! 查看全部
网页手机号抓取程序(小程序中有注册用户信息的地方,用户需要填写手机号)
小程序中有很多地方会用到注册用户信息。用户需要填写手机号等,有了这个组件,可以快速获取微信绑定的手机号,无需用户填写。
1. getPhoneNumber 组件是通过按钮实现的(其他标签无效)。在按钮中设置open-type="getPhoneNumber",绑定bindgetphonenumber事件获取回调。
2.在使用该组件之前,必须先调用登录界面。如果没有调用login,点击按钮,会提示先调用login。
App({
onLaunch: function () {
wx.login({
success: function (res) {
if (res.code) {
//发起网络请求
console.log(res.code)
} else {
console.log('获取用户登录态失败!' + res.errMsg)
}
}
});
}
})
3.通过bindgetphonenumber绑定的事件获取回调。有三个回调参数,
errMsg:用户点击取消或授权信息回调。
iv:加密算法的初始向量(如果用户不同意授权则未定义)。
encryptedData:用户信息的加密数据(如果用户不同意授权,也会返回undefined)

getPhoneNumber: function(e) {
console.log(e.detail.errMsg)
console.log(e.detail.iv)
console.log(e.detail.encryptedData)
if (e.detail.errMsg == 'getPhoneNumber:fail user deny'){
wx.showModal({
title: '提示',
showCancel: false,
content: '未授权',
success: function (res) { }
})
} else {
wx.showModal({
title: '提示',
showCancel: false,
content: '同意授权',
success: function (res) { }
})
}
}
4.最后,我们需要按照自己的业务逻辑进行处理。如果用户不同意授权,我们可能会有一个界面让他手动输入。如果不是强制获取手机号,我们可以直接跳转到页面进行下一步。. (用户不同意授权errMsg返回'getPhoneNumber: fail user deny')
5. 用户同意授权,我们可以根据登录时得到的code通过后台和微信处理得到session_key,最后通过app_id、session_key、iv、encryptedData(用户同意授权errMsg到返回'getPhoneNumber:好的')
总结
以上就是小编为大家介绍的获取手机号授权用户登录功能的微信小程序。我希望它会对你有所帮助。如果您有任何问题,请给我留言。小编会及时回复您。非常感谢大家对脸圈教程网站的支持!
网页手机号抓取程序(官方流程图小程序使用方法介绍String)
网站优化 • 优采云 发表了文章 • 0 个评论 • 54 次浏览 • 2021-12-14 10:06
最近在做小程序开发,遇到了很多坑。拿到小程序的手机号后,遇到了一个很傻的坑。
工艺介绍
官方流程图
小程序使用方法
组件open-type的值需要设置为getPhoneNumber。用户点击同意后,可以通过bindgetphonenumber事件回调获取微信服务器返回的加密数据,然后第三方服务器结合session_key和app_id进行解密,得到电话号码。
返回参数说明
参数类型说明
加密数据
细绳
包括敏感数据在内的完整用户信息的加密数据,详见
四
细绳
加密算法的初始向量,详见
小程序收到这些参数后,将code、encryptedData、iv发送到后台,然后在后台解密
后台解密
解密前需要session_key配合解密,所以先通过code获取session_key
# 获取openid,session_key
# Appid为小程序id
openid_url = "https://api.weixin.qq.com/sns/ ... ot%3B % (
APP_ID, APP_KEY, code
)
req = requests.get(openid_url)
rep = req.json()
session_key = rep.get("session_key")
得到session_key、encryptedData、iv后,就可以进行解密了。python2的实现代码如下:
import base64
import json
from Crypto.Cipher import AES
class WXBizDataCrypt:
def __init__(self, appId, sessionKey):
self.appId = appId
self.sessionKey = sessionKey
def decrypt(self, encryptedData, iv):
# base64 decode
sessionKey = base64.b64decode(self.sessionKey)
encryptedData = base64.b64decode(encryptedData)
iv = base64.b64decode(iv)
cipher = AES.new(sessionKey, AES.MODE_CBC, iv)
decrypted = json.loads(self._unpad(cipher.decrypt(encryptedData)))
if decrypted['watermark']['appid'] != self.appId:
raise Exception('Invalid Buffer')
return decrypted
def _unpad(self, s):
return s[:-ord(s[len(s)-1:])]
调用参数
# APP_ID为小程序id不是openid!!!
pc = wx_jm(APP_ID, session_key)
res = pc.decrypt(encryptedData, iv)
参数详情参考微信官方文档
微信官方提供多种编程语言的示例代码。点击下载
返回数据格式
{
"phoneNumber": "13580006666",
"purePhoneNumber": "13580006666",
"countryCode": "86",
"watermark":
{
"appid":"APPID",
"timestamp":TIMESTAMP
}
}
总结
以上就是小编为python获取微信小程序手机号并绑定的坑。我希望它会对你有所帮助。如有问题,请给我留言,小编会及时回复您。非常感谢您对ASPKU源代码库网站的支持!
注:请移步python教程频道阅读相关教程知识。 查看全部
网页手机号抓取程序(官方流程图小程序使用方法介绍String)
最近在做小程序开发,遇到了很多坑。拿到小程序的手机号后,遇到了一个很傻的坑。
工艺介绍

官方流程图

小程序使用方法
组件open-type的值需要设置为getPhoneNumber。用户点击同意后,可以通过bindgetphonenumber事件回调获取微信服务器返回的加密数据,然后第三方服务器结合session_key和app_id进行解密,得到电话号码。
返回参数说明
参数类型说明
加密数据
细绳
包括敏感数据在内的完整用户信息的加密数据,详见
四
细绳
加密算法的初始向量,详见
小程序收到这些参数后,将code、encryptedData、iv发送到后台,然后在后台解密
后台解密
解密前需要session_key配合解密,所以先通过code获取session_key
# 获取openid,session_key
# Appid为小程序id
openid_url = "https://api.weixin.qq.com/sns/ ... ot%3B % (
APP_ID, APP_KEY, code
)
req = requests.get(openid_url)
rep = req.json()
session_key = rep.get("session_key")
得到session_key、encryptedData、iv后,就可以进行解密了。python2的实现代码如下:
import base64
import json
from Crypto.Cipher import AES
class WXBizDataCrypt:
def __init__(self, appId, sessionKey):
self.appId = appId
self.sessionKey = sessionKey
def decrypt(self, encryptedData, iv):
# base64 decode
sessionKey = base64.b64decode(self.sessionKey)
encryptedData = base64.b64decode(encryptedData)
iv = base64.b64decode(iv)
cipher = AES.new(sessionKey, AES.MODE_CBC, iv)
decrypted = json.loads(self._unpad(cipher.decrypt(encryptedData)))
if decrypted['watermark']['appid'] != self.appId:
raise Exception('Invalid Buffer')
return decrypted
def _unpad(self, s):
return s[:-ord(s[len(s)-1:])]
调用参数
# APP_ID为小程序id不是openid!!!
pc = wx_jm(APP_ID, session_key)
res = pc.decrypt(encryptedData, iv)
参数详情参考微信官方文档
微信官方提供多种编程语言的示例代码。点击下载
返回数据格式
{
"phoneNumber": "13580006666",
"purePhoneNumber": "13580006666",
"countryCode": "86",
"watermark":
{
"appid":"APPID",
"timestamp":TIMESTAMP
}
}
总结
以上就是小编为python获取微信小程序手机号并绑定的坑。我希望它会对你有所帮助。如有问题,请给我留言,小编会及时回复您。非常感谢您对ASPKU源代码库网站的支持!
注:请移步python教程频道阅读相关教程知识。
网页手机号抓取程序(运营商大数据抓取的种类和种类大解析!! )
网站优化 • 优采云 发表了文章 • 0 个评论 • 98 次浏览 • 2021-12-14 03:17
)
一、运营商的大数据采集类型
1、如今,运营商的大数据并不均衡。市场上获取手机号码的方式有很多种。最原创的是:一是通过数据采集软件,利用采集网站软件抓取客户主动留下的手机号码。二是爬取网站,手机号已经在APP上,三是通过网站中的手机号安装代码获取手机号。这些都是通过在网站中安装抓取码然后抓取来访者的手机号获得的,但是今年6月因为被曝光而停止了。
缺点如下。一是只能抓取自己的网站访客电话号码,二是只能被php网站使用,三是涉及客户隐私,容易被百度检测晋升。
二、运营商大数据优势
运营商大数据可以根据同行提供的网站、APP、微信小程序、400电话、固话获取目标客户的手机号码。与Python不同,无需登录网站嵌入代码中,运营商大数据供运营商手机用户在网站和APP、400通话、固话使用消耗流量或资费,由运营商标注,然后model为网站,获取单次访问APP超过一分钟的目标客户手机号,所以运营商的大数据不再局限于自己的网站获取客户手机号码,任何网站、APP、400电话、固话都可以抓取获取。我们是正规的运营商,我们和运营商有深入的合作。运营商抓取数据发送给公司,然后提供专门的大数据营销后台供公司调用。
比如一个peer在百度上出价,你可以直接从peer的网站中截取流,通过外呼和短信的方式触达客户,转化客户。
三、CPA 目标客户
可能有些人对CPA这个名词有点陌生,那么就让小编来给大家解释一下什么是CPA吧。CPA是指有专业电子营销团队呼唤的目标客户,比如想要装修或者消防证的客户。, 我们提供的数据是由专业的电话营销团队与客户交谈实现的,业务方也可以收听录音。周转率为40%-50%。
由于大数据采集是直接与运营商合作,后端可以明确指定要拨打的区域,是合法正规的数据提供,长期稳定合作是可能的。
您好,我们在做精准客户拦截,云网客户获取系统
例如:
同一网站每天有多少客户访问了他们的网站,我们可以实时、频繁地拦截每天访问网站的客户的手机号码
对于同行业的400个电话,或者企业固话,每天有多少客户来电,我们可以拦截来电客户的电话号码
或者同行使用百度、今日头条、微信等平台推广落地页,我们可以实时拦截访问过该页面的客户手机号
安居客、土巴兔、瓜子二手车、宜信贷等垂直行业APP,可实时拦截指定区域或全国范围内访问APP的用户手机号码
查看全部
网页手机号抓取程序(运营商大数据抓取的种类和种类大解析!!
)
一、运营商的大数据采集类型
1、如今,运营商的大数据并不均衡。市场上获取手机号码的方式有很多种。最原创的是:一是通过数据采集软件,利用采集网站软件抓取客户主动留下的手机号码。二是爬取网站,手机号已经在APP上,三是通过网站中的手机号安装代码获取手机号。这些都是通过在网站中安装抓取码然后抓取来访者的手机号获得的,但是今年6月因为被曝光而停止了。
缺点如下。一是只能抓取自己的网站访客电话号码,二是只能被php网站使用,三是涉及客户隐私,容易被百度检测晋升。

二、运营商大数据优势
运营商大数据可以根据同行提供的网站、APP、微信小程序、400电话、固话获取目标客户的手机号码。与Python不同,无需登录网站嵌入代码中,运营商大数据供运营商手机用户在网站和APP、400通话、固话使用消耗流量或资费,由运营商标注,然后model为网站,获取单次访问APP超过一分钟的目标客户手机号,所以运营商的大数据不再局限于自己的网站获取客户手机号码,任何网站、APP、400电话、固话都可以抓取获取。我们是正规的运营商,我们和运营商有深入的合作。运营商抓取数据发送给公司,然后提供专门的大数据营销后台供公司调用。
比如一个peer在百度上出价,你可以直接从peer的网站中截取流,通过外呼和短信的方式触达客户,转化客户。

三、CPA 目标客户
可能有些人对CPA这个名词有点陌生,那么就让小编来给大家解释一下什么是CPA吧。CPA是指有专业电子营销团队呼唤的目标客户,比如想要装修或者消防证的客户。, 我们提供的数据是由专业的电话营销团队与客户交谈实现的,业务方也可以收听录音。周转率为40%-50%。
由于大数据采集是直接与运营商合作,后端可以明确指定要拨打的区域,是合法正规的数据提供,长期稳定合作是可能的。
您好,我们在做精准客户拦截,云网客户获取系统
例如:
同一网站每天有多少客户访问了他们的网站,我们可以实时、频繁地拦截每天访问网站的客户的手机号码
对于同行业的400个电话,或者企业固话,每天有多少客户来电,我们可以拦截来电客户的电话号码
或者同行使用百度、今日头条、微信等平台推广落地页,我们可以实时拦截访问过该页面的客户手机号
安居客、土巴兔、瓜子二手车、宜信贷等垂直行业APP,可实时拦截指定区域或全国范围内访问APP的用户手机号码

网页手机号抓取程序(未添加获取会员基础信息和会员手机号功能包有什么区别?)
网站优化 • 优采云 发表了文章 • 0 个评论 • 62 次浏览 • 2021-12-07 07:02
Q:获取会员基本信息功能可以获取用户支付宝的user_id吗?
A:不需要,如果需要获取用户支付宝user_id,请参考用户授权调用my.getAuthCode和alipay.system.oauth.token接口获取user_id参数。
Q:为什么获取用户基本信息时获取不到nick_name等信息?
A:当用户不配置信息时,是无法获取的。
Q:“获取会员信息”和“获取会员基本信息”两个功能包有什么区别?
A:为了提高小程序开发效率,获取会员信息功能升级为获取会员基本信息功能。升级后的功能可以通过用户授权直接在小程序终端上获取用户头像、昵称、性别、位置等基本信息,无需调用Server端接口。
Q:调用my.getOpenUserInfo时出现“isv.insufficient-isv-permissions”错误如何处理?
A:没有增加获取会员基本信息的功能包。其他错误分析请参考ISV Insufficient Authority Reporting and Solutions。
在小程序开发管理后台的能力列表中,单击添加能力。
增加获取会员基本信息的函数包。
Q:小程序可以同时获取手机号、头像、昵称等公开信息吗?
A:无法在同一个弹窗中同时获取会员的手机号、头像、昵称。
可以获取会员的手机号,分别获取用户的头像和昵称。如果用户没有设置支付宝昵称,昵称字段没有返回值。
有关详细信息,请参阅:
Q:“获取会员基本信息”是否可以获取用户ID、真实姓名等信息?
A:不能。获取会员基本信息,只能获取用户头像、昵称、性别、所在地等信息。
Q:开发者可以在小程序弹窗中授权访问会员基本信息和手机号吗?
A:不需要。分别通过两次JSAPI调用获取会员基本信息和会员手机号码;同时,为充分尊重用户的知情权和个人信息,建议开发者在业务需要时调用授权,不要获取与业务无关的信息。
Q:用户授权后,为什么没有返回昵称和头像?
答:有以下原因:
详情请参见获取用户信息的接口没有返回昵称和头像。 查看全部
网页手机号抓取程序(未添加获取会员基础信息和会员手机号功能包有什么区别?)
Q:获取会员基本信息功能可以获取用户支付宝的user_id吗?
A:不需要,如果需要获取用户支付宝user_id,请参考用户授权调用my.getAuthCode和alipay.system.oauth.token接口获取user_id参数。
Q:为什么获取用户基本信息时获取不到nick_name等信息?
A:当用户不配置信息时,是无法获取的。
Q:“获取会员信息”和“获取会员基本信息”两个功能包有什么区别?
A:为了提高小程序开发效率,获取会员信息功能升级为获取会员基本信息功能。升级后的功能可以通过用户授权直接在小程序终端上获取用户头像、昵称、性别、位置等基本信息,无需调用Server端接口。
Q:调用my.getOpenUserInfo时出现“isv.insufficient-isv-permissions”错误如何处理?
A:没有增加获取会员基本信息的功能包。其他错误分析请参考ISV Insufficient Authority Reporting and Solutions。
在小程序开发管理后台的能力列表中,单击添加能力。
增加获取会员基本信息的函数包。
Q:小程序可以同时获取手机号、头像、昵称等公开信息吗?
A:无法在同一个弹窗中同时获取会员的手机号、头像、昵称。
可以获取会员的手机号,分别获取用户的头像和昵称。如果用户没有设置支付宝昵称,昵称字段没有返回值。
有关详细信息,请参阅:
Q:“获取会员基本信息”是否可以获取用户ID、真实姓名等信息?
A:不能。获取会员基本信息,只能获取用户头像、昵称、性别、所在地等信息。
Q:开发者可以在小程序弹窗中授权访问会员基本信息和手机号吗?
A:不需要。分别通过两次JSAPI调用获取会员基本信息和会员手机号码;同时,为充分尊重用户的知情权和个人信息,建议开发者在业务需要时调用授权,不要获取与业务无关的信息。
Q:用户授权后,为什么没有返回昵称和头像?
答:有以下原因:
详情请参见获取用户信息的接口没有返回昵称和头像。
网页手机号抓取程序(全国网站手机号360安全卫士、360浏览器登录送49元月卡)
网站优化 • 优采云 发表了文章 • 0 个评论 • 51 次浏览 • 2021-12-06 11:01
网页手机号抓取程序抓取360全国网站手机号360安全卫士、360安全浏览器、360手机卫士、360浏览器登录送49元月卡全国行业网站登录送79元月卡登录送89元月卡登录送88元月卡深圳所有网站二维码复制后登录可送20元红包
让他花99买台机器
找哪些网上送福利的我觉得你现在比较需要的是稳定,省事,不在乎他的手机号如果你了解下他手机号的泄露率,那么,发个微信红包,群发给他,让他注册,注册后送他100,然后你跟他说先注册,后面的给机器上去抓取福利,说这个好像不合理,但对你们俩来说已经是最优的方案,如果还不接受,那就要考虑你们的关系,感情,爱情等方面来衡量。
我可以把全国的号码都发给你吗
我是做网站的人,我想主动送给你,就看你能不能要了。
手机安全卫士可以扫二维码登录页面领红包送免费手机月卡
app红包,
让他换一个号码。我就是这样干的,只要你想。
1.全国网站手机号2.在二维码长城那,他会收到个大礼包,里面有这一整套。
如果你想要,可以寄给我,这样的话,我告诉你怎么抓取二维码。我之前是做网站的。
我也想送
最讨厌这种手机号网上发来发去的
全国各地免费赠送你一个,让你花99块买个二维码。
我也想要对了,是不是不是全国的,是分省的,我也想要!全国联通volte,广东工信部试点, 查看全部
网页手机号抓取程序(全国网站手机号360安全卫士、360浏览器登录送49元月卡)
网页手机号抓取程序抓取360全国网站手机号360安全卫士、360安全浏览器、360手机卫士、360浏览器登录送49元月卡全国行业网站登录送79元月卡登录送89元月卡登录送88元月卡深圳所有网站二维码复制后登录可送20元红包
让他花99买台机器
找哪些网上送福利的我觉得你现在比较需要的是稳定,省事,不在乎他的手机号如果你了解下他手机号的泄露率,那么,发个微信红包,群发给他,让他注册,注册后送他100,然后你跟他说先注册,后面的给机器上去抓取福利,说这个好像不合理,但对你们俩来说已经是最优的方案,如果还不接受,那就要考虑你们的关系,感情,爱情等方面来衡量。
我可以把全国的号码都发给你吗
我是做网站的人,我想主动送给你,就看你能不能要了。
手机安全卫士可以扫二维码登录页面领红包送免费手机月卡
app红包,
让他换一个号码。我就是这样干的,只要你想。
1.全国网站手机号2.在二维码长城那,他会收到个大礼包,里面有这一整套。
如果你想要,可以寄给我,这样的话,我告诉你怎么抓取二维码。我之前是做网站的。
我也想送
最讨厌这种手机号网上发来发去的
全国各地免费赠送你一个,让你花99块买个二维码。
我也想要对了,是不是不是全国的,是分省的,我也想要!全国联通volte,广东工信部试点,
网页手机号抓取程序(运营商大数据抓取的种类和种类大解析!! )
网站优化 • 优采云 发表了文章 • 0 个评论 • 66 次浏览 • 2021-12-02 19:01
)
一、运营商的大数据采集类型
1、如今,运营商的大数据并不均衡。市场上获取手机号码的方式有很多种。最原创的是:一是通过数据采集软件,利用采集网站软件抓取客户主动留下的手机号码。二是爬取网站,手机号已经在APP上,三是通过网站中的手机号安装代码获取手机号。这些都是通过在网站中安装抓取码然后抓取来访者的手机号获得的,但是今年6月因为被曝光而停止了。
缺点如下。一是只能抓取自己的网站访客电话号码,二是只能被php网站使用,三是涉及客户隐私,容易被百度检测晋升。
二、运营商大数据优势
运营商大数据可以根据同行提供的网站、APP、微信小程序、400电话、固话,获取目标客户的手机号码。与Python不同,无需登录网站嵌入代码中,运营商的大数据在网站和APP中被运营商的手机用户使用,400次通话,固话消耗数据或费用,由运营商标注,然后型号为网站,获取目标客户单次访问APP超过一分钟的手机号码,因此运营商的大数据不再局限于自身网站获取客户手机号,任何网站、APP、400电话、固话均可抓拍获取。我们是正规运营商,与运营商有深度合作。运营商抓取数据发送给公司,然后提供专门的大数据营销后台供公司调用。
比如一个peer在百度上出价,你可以直接从peer的网站中截取流,通过外呼和短信的方式触达客户,转化客户。
三、CPA 目标客户
可能有些人对CPA这个名词有点陌生,那么就让小编来给大家解释一下什么是CPA吧。CPA是指有专业电子营销团队呼唤的目标客户,比如想要装修或者消防证的客户。, 我们提供的数据是由专业的电话营销团队与客户交谈实现的,业务方也可以收听录音。周转率为40%-50%。
由于大数据采集是直接与运营商合作,可以在后台指定区域调用,是合法正规的数据提供,可以长期稳定合作。
您好,我们在做精准客户拦截,云网客户获取系统
例如:
同一网站每天有多少客户访问了他们的网站,我们可以实时、频繁地拦截每天访问网站的客户的手机号码
对于同行业400个电话,或者企业固话,每天有多少客户拨打,我们可以截取来电客户的电话号码
或者同行使用百度、今日头条、微信等平台推广落地页,我们可以实时拦截访问过该页面的客户手机号
安居客、土巴兔、瓜子二手车、宜信贷等垂直行业APP,可实时拦截指定区域或全国范围内访问APP的用户手机号码
查看全部
网页手机号抓取程序(运营商大数据抓取的种类和种类大解析!!
)
一、运营商的大数据采集类型
1、如今,运营商的大数据并不均衡。市场上获取手机号码的方式有很多种。最原创的是:一是通过数据采集软件,利用采集网站软件抓取客户主动留下的手机号码。二是爬取网站,手机号已经在APP上,三是通过网站中的手机号安装代码获取手机号。这些都是通过在网站中安装抓取码然后抓取来访者的手机号获得的,但是今年6月因为被曝光而停止了。
缺点如下。一是只能抓取自己的网站访客电话号码,二是只能被php网站使用,三是涉及客户隐私,容易被百度检测晋升。

二、运营商大数据优势
运营商大数据可以根据同行提供的网站、APP、微信小程序、400电话、固话,获取目标客户的手机号码。与Python不同,无需登录网站嵌入代码中,运营商的大数据在网站和APP中被运营商的手机用户使用,400次通话,固话消耗数据或费用,由运营商标注,然后型号为网站,获取目标客户单次访问APP超过一分钟的手机号码,因此运营商的大数据不再局限于自身网站获取客户手机号,任何网站、APP、400电话、固话均可抓拍获取。我们是正规运营商,与运营商有深度合作。运营商抓取数据发送给公司,然后提供专门的大数据营销后台供公司调用。
比如一个peer在百度上出价,你可以直接从peer的网站中截取流,通过外呼和短信的方式触达客户,转化客户。

三、CPA 目标客户
可能有些人对CPA这个名词有点陌生,那么就让小编来给大家解释一下什么是CPA吧。CPA是指有专业电子营销团队呼唤的目标客户,比如想要装修或者消防证的客户。, 我们提供的数据是由专业的电话营销团队与客户交谈实现的,业务方也可以收听录音。周转率为40%-50%。
由于大数据采集是直接与运营商合作,可以在后台指定区域调用,是合法正规的数据提供,可以长期稳定合作。

您好,我们在做精准客户拦截,云网客户获取系统
例如:
同一网站每天有多少客户访问了他们的网站,我们可以实时、频繁地拦截每天访问网站的客户的手机号码
对于同行业400个电话,或者企业固话,每天有多少客户拨打,我们可以截取来电客户的电话号码
或者同行使用百度、今日头条、微信等平台推广落地页,我们可以实时拦截访问过该页面的客户手机号
安居客、土巴兔、瓜子二手车、宜信贷等垂直行业APP,可实时拦截指定区域或全国范围内访问APP的用户手机号码

网页手机号抓取程序( 一个微信小程序唯一标识小程序开发文档有一个难 )
网站优化 • 优采云 发表了文章 • 0 个评论 • 55 次浏览 • 2021-12-02 19:00
一个微信小程序唯一标识小程序开发文档有一个难
)
微信小程序开发获取用户手机号——用一个简单的php界面demo解密加密数据
做一个微信小程序,可以拿到用户微信绑定的手机号。小程序开发文档提供的获取电话号码的接口(getPhoneNumber())返回的是密文,需要在服务器端解密,但官方开发文档一如既往的乱七八糟。如果没有小程序开发文档的全貌,理解解密过程还是有点困难的。这里把小程序从请求用户授权获取手机号码到获取手机号码明文的整个过程串在一起,方便快捷,一目了然。
以后要做微信小程序,需要获取用户微信绑定的手机号。小程序开发文档提供的获取电话号码的接口(getPhoneNumber())返回的是密文,需要在服务器端解密,但官方开发文档一如既往的乱七八糟。如果没有小程序开发文档的全貌,理解解密过程还是有点困难的。这里把小程序从请求用户授权获取手机号码到获取手机号码明文的整个过程串起来,方便快捷理解,如下:
一. 前端相关操作:
1. 请求用户授权获取手机号码:
因为用户需要主动触发手机号接口,所以这个函数不是通过API调用的,而是需要通过组件的点击来触发,如下:
wxml:
获取手机号码
js:
1 Page({
2 getPhoneNumber: function(e) {
3 if(e.detail.errMsg == "getPhoneNumber:fail user deny") return; //用户允许授权
4 console.log("lv", e.detail.iv); //包括敏感数据在内的完整用户信息的加密数据,需要解密
5 console.log(e.detail.encryptedData); //加密算法的初始向量,解密需要用到
6 ......
7 }
8 })
2. 进入小程序登录界面:
小程序调用wx.login()获取临时登录凭证码并发送给开发者服务器。
Page({
getPhoneNumber: function(e) {
console.log(e.detail.errMsg)
console.log(e.detail.iv) //包括敏感数据在内的完整用户信息的加密数据,需要解密
console.log(e.detail.encryptedData) //加密算法的初始向量,解密需要用到
wx.login({
success: res => {
if(res.code){
console.log(res.code)
}
}
})
}
})
3. 访问腾讯服务器登录凭据验证界面:
注:官方建议是放在服务器端,这里为了方便,放在前端请求上。
注意这里传入的参数:
应用程序
小程序唯一ID
秘密
小程序的应用秘诀
js_code
登录时获取的代码
授权类型
填写为authorization_code
//2. 访问登录凭证校验接口获取session_key
wx.request({
url: "https://api.weixin.qq.com/sns/jscode2session",
data: {
'appid': "xxxxxxxx",
'secret': "xxxxxxxx",
'js_code': res.code,
'grant_type': "authorization_code"
},
method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
header: {
'content-type': 'application/json'
}, // 设置请求的 header
success: function(data) {
console.log("data", data.data.session_key)
},
fail: function(err) {
console.log(err);
}
})
4. 在自己的服务器上解密
注:解密界面可使用腾讯官方demo进行修改,具体修改稍后说明。
//3. 解密
wx.request({
url: 'http://xxxxx.com/demo/demo.php',//腾讯官方demo改造的接口页面
data: {
'encryptedData': encodeURIComponent(e.detail.encryptedData),//需要进行编码
'iv': e.detail.iv,
'session_key': data.data.session_key
},
method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
header: {
'content-type': 'application/json'
}, // 设置请求的 header
success: function(data2) {
console.log(data2.data.phoneNumber)
if(data2.statusCode == 200) {
self.setData({
phone: data2.data.phoneNumber
})
}
},
fail: function(err) {
console.log(err);
}
})
js部分整体代码如下:
getPhoneNumber: function (e) {
if (e.detail.errMsg == "getPhoneNumber:fail user deny") return;
//用户允许授权
console.log("lv", e.detail.iv);
console.log(e.detail.encryptedData);
wx.showLoading()
var self=this
//1. 调用登录接口获取临时登录code
wx.login({
success: res => {
if(res.code){
//2. 访问登录凭证校验接口获取session_key、openid
wx.request({
url: "https://api.weixin.qq.com/sns/jscode2session",
data: {
'appid': "wxcc41e47562b08129",
'secret': "50e4379d67a6860d18157c53dc6ac3c2",
'js_code': res.code,
'grant_type': "authorization_code"
},
method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
header: {
'content-type': 'application/json'
}, // 设置请求的 header
success: function (data) {
console.log("data", data)
if(data.statusCode==200){
//3. 解密
wx.request({
url: 'http://qdy8.gotoip4.com/demo/demo.php',
data: {
'encryptedData': e.detail.encryptedData,
'iv': e.detail.iv,
'session_key': data.data.session_key
},
method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
header: {
'content-type': 'application/json'
}, // 设置请求的 header
success: function (data2) {
wx.hideLoading()
console.log(data2.data.phoneNumber)
if (data2.statusCode == 200 && data2.data.phoneNumber) {
self.setData({
phone: data2.data.phoneNumber
})
}
},
fail: function (err) {
console.log(err);
}
})
}
},
fail: function (err) {
console.log(err);
}
})
}
}
})
}
二. 后端接口:
微信官方提供多种编程语言的示例代码(点击下载)。每种语言类型的接口名称相同,调用方法可参考示例。
如果只是学习研究,可以买个经济实惠的虚拟主机,一年才几十块钱,但是这种虚拟主机多为PHP,所以这里我们以PHP为例进行改造接收前端- 结束请求。
下载官方demo后,结构如下:
转换 demo.php:
将php的三个demo文件上传到虚拟主机:
然后就可以直接访问demo.php文件作为接口了。
三. 容易出现异常:
1. 访问微信的登录凭据验证接口获取session_key时,如果报如下错误,则需要清除所有缓存并重新编译(应该是appid,开发工具的坑,如果不t清除所有缓存,会出现这个错误):
无效代码,提示:[req_id: CPAsWa0325ha57]
2.解密接口返回-41003,然后查看接口参数:
查看全部
网页手机号抓取程序(
一个微信小程序唯一标识小程序开发文档有一个难
)
微信小程序开发获取用户手机号——用一个简单的php界面demo解密加密数据
做一个微信小程序,可以拿到用户微信绑定的手机号。小程序开发文档提供的获取电话号码的接口(getPhoneNumber())返回的是密文,需要在服务器端解密,但官方开发文档一如既往的乱七八糟。如果没有小程序开发文档的全貌,理解解密过程还是有点困难的。这里把小程序从请求用户授权获取手机号码到获取手机号码明文的整个过程串在一起,方便快捷,一目了然。
以后要做微信小程序,需要获取用户微信绑定的手机号。小程序开发文档提供的获取电话号码的接口(getPhoneNumber())返回的是密文,需要在服务器端解密,但官方开发文档一如既往的乱七八糟。如果没有小程序开发文档的全貌,理解解密过程还是有点困难的。这里把小程序从请求用户授权获取手机号码到获取手机号码明文的整个过程串起来,方便快捷理解,如下:
一. 前端相关操作:
1. 请求用户授权获取手机号码:
因为用户需要主动触发手机号接口,所以这个函数不是通过API调用的,而是需要通过组件的点击来触发,如下:
wxml:
获取手机号码
js:
1 Page({
2 getPhoneNumber: function(e) {
3 if(e.detail.errMsg == "getPhoneNumber:fail user deny") return; //用户允许授权
4 console.log("lv", e.detail.iv); //包括敏感数据在内的完整用户信息的加密数据,需要解密
5 console.log(e.detail.encryptedData); //加密算法的初始向量,解密需要用到
6 ......
7 }
8 })
2. 进入小程序登录界面:
小程序调用wx.login()获取临时登录凭证码并发送给开发者服务器。
Page({
getPhoneNumber: function(e) {
console.log(e.detail.errMsg)
console.log(e.detail.iv) //包括敏感数据在内的完整用户信息的加密数据,需要解密
console.log(e.detail.encryptedData) //加密算法的初始向量,解密需要用到
wx.login({
success: res => {
if(res.code){
console.log(res.code)
}
}
})
}
})
3. 访问腾讯服务器登录凭据验证界面:
注:官方建议是放在服务器端,这里为了方便,放在前端请求上。
注意这里传入的参数:
应用程序
小程序唯一ID
秘密
小程序的应用秘诀
js_code
登录时获取的代码
授权类型
填写为authorization_code
//2. 访问登录凭证校验接口获取session_key
wx.request({
url: "https://api.weixin.qq.com/sns/jscode2session",
data: {
'appid': "xxxxxxxx",
'secret': "xxxxxxxx",
'js_code': res.code,
'grant_type': "authorization_code"
},
method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
header: {
'content-type': 'application/json'
}, // 设置请求的 header
success: function(data) {
console.log("data", data.data.session_key)
},
fail: function(err) {
console.log(err);
}
})
4. 在自己的服务器上解密
注:解密界面可使用腾讯官方demo进行修改,具体修改稍后说明。
//3. 解密
wx.request({
url: 'http://xxxxx.com/demo/demo.php',//腾讯官方demo改造的接口页面
data: {
'encryptedData': encodeURIComponent(e.detail.encryptedData),//需要进行编码
'iv': e.detail.iv,
'session_key': data.data.session_key
},
method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
header: {
'content-type': 'application/json'
}, // 设置请求的 header
success: function(data2) {
console.log(data2.data.phoneNumber)
if(data2.statusCode == 200) {
self.setData({
phone: data2.data.phoneNumber
})
}
},
fail: function(err) {
console.log(err);
}
})
js部分整体代码如下:
getPhoneNumber: function (e) {
if (e.detail.errMsg == "getPhoneNumber:fail user deny") return;
//用户允许授权
console.log("lv", e.detail.iv);
console.log(e.detail.encryptedData);
wx.showLoading()
var self=this
//1. 调用登录接口获取临时登录code
wx.login({
success: res => {
if(res.code){
//2. 访问登录凭证校验接口获取session_key、openid
wx.request({
url: "https://api.weixin.qq.com/sns/jscode2session",
data: {
'appid': "wxcc41e47562b08129",
'secret': "50e4379d67a6860d18157c53dc6ac3c2",
'js_code': res.code,
'grant_type': "authorization_code"
},
method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
header: {
'content-type': 'application/json'
}, // 设置请求的 header
success: function (data) {
console.log("data", data)
if(data.statusCode==200){
//3. 解密
wx.request({
url: 'http://qdy8.gotoip4.com/demo/demo.php',
data: {
'encryptedData': e.detail.encryptedData,
'iv': e.detail.iv,
'session_key': data.data.session_key
},
method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
header: {
'content-type': 'application/json'
}, // 设置请求的 header
success: function (data2) {
wx.hideLoading()
console.log(data2.data.phoneNumber)
if (data2.statusCode == 200 && data2.data.phoneNumber) {
self.setData({
phone: data2.data.phoneNumber
})
}
},
fail: function (err) {
console.log(err);
}
})
}
},
fail: function (err) {
console.log(err);
}
})
}
}
})
}
二. 后端接口:
微信官方提供多种编程语言的示例代码(点击下载)。每种语言类型的接口名称相同,调用方法可参考示例。
如果只是学习研究,可以买个经济实惠的虚拟主机,一年才几十块钱,但是这种虚拟主机多为PHP,所以这里我们以PHP为例进行改造接收前端- 结束请求。
下载官方demo后,结构如下:

转换 demo.php:
将php的三个demo文件上传到虚拟主机:

然后就可以直接访问demo.php文件作为接口了。
三. 容易出现异常:
1. 访问微信的登录凭据验证接口获取session_key时,如果报如下错误,则需要清除所有缓存并重新编译(应该是appid,开发工具的坑,如果不t清除所有缓存,会出现这个错误):
无效代码,提示:[req_id: CPAsWa0325ha57]
2.解密接口返回-41003,然后查看接口参数:

网页手机号抓取程序(真真是提取软件灰常流弊的说的说的说)
网站优化 • 优采云 发表了文章 • 0 个评论 • 287 次浏览 • 2021-12-01 13:26
这是一个网站手机号码搜索提取工具。这是一款手机号码提取软件,已经收录在全球很多中国公司的网页上出现过。您只需要在神威手机号码搜索软件中输入搜索关键词列表,即可完成自动搜索和提取手机号码的操作,真是太可惜了!
软件介绍
网站手机号码搜索提取工具是一款提取手机号码的软件。您可以使用本软件查询手机归属地、提取内容、发送手机短信,帮助您轻松获取手机号码。
软件功能
1.可以直接从剪贴板中提取手号
2.可以从.txt.csv.html等文本文件中提取手机号码。
3. 可以从excel文件中提取手机号码,例如.xls等。
4.可以从.doc.rtf等Word文件中提取手机号码。
5.可以访问数据库提取.mdb等手机号码
6.可以从其他数据库中提取手机号码,比如ms sql server my sql oracle等。
7.可以从网站提取手机号,如果在google百度输入联系人手机,可以提取上图所示的手机号
你可以在浩瀚的互联网上搜索,找到N个以上的手机号码,是销售和客服成本最低的最有效利器。
8. 可以过滤手机号码,重复手机号码和排序手机号码
9.可以生成手机号
10. 可以大量查询手机号码归属地并导入csv excel或word
11.可以通过电脑连接手机,当然手机必须有数据线
相关介绍
网站手机号码搜索提取工具是一款专业的手机号码搜索提取软件。具有强大的搜索提取功能,只要输入网址或关键字,系统会立即自动搜索提取相关手机号码,操作非常简单。
软件截图
相关软件
p2p无限搜索工具:这是一款p2p无限搜索工具,是一款种子搜索神器,支持多种p2p协议种子和下载地址搜索,如bt、ED2K...
硬盘图片搜索工具:这是一款硬盘图片搜索工具,可以帮助您立即查找、修改和分享计算机上的所有图片。 查看全部
网页手机号抓取程序(真真是提取软件灰常流弊的说的说的说)
这是一个网站手机号码搜索提取工具。这是一款手机号码提取软件,已经收录在全球很多中国公司的网页上出现过。您只需要在神威手机号码搜索软件中输入搜索关键词列表,即可完成自动搜索和提取手机号码的操作,真是太可惜了!
软件介绍
网站手机号码搜索提取工具是一款提取手机号码的软件。您可以使用本软件查询手机归属地、提取内容、发送手机短信,帮助您轻松获取手机号码。
软件功能
1.可以直接从剪贴板中提取手号
2.可以从.txt.csv.html等文本文件中提取手机号码。
3. 可以从excel文件中提取手机号码,例如.xls等。
4.可以从.doc.rtf等Word文件中提取手机号码。
5.可以访问数据库提取.mdb等手机号码
6.可以从其他数据库中提取手机号码,比如ms sql server my sql oracle等。
7.可以从网站提取手机号,如果在google百度输入联系人手机,可以提取上图所示的手机号
你可以在浩瀚的互联网上搜索,找到N个以上的手机号码,是销售和客服成本最低的最有效利器。
8. 可以过滤手机号码,重复手机号码和排序手机号码
9.可以生成手机号
10. 可以大量查询手机号码归属地并导入csv excel或word
11.可以通过电脑连接手机,当然手机必须有数据线
相关介绍
网站手机号码搜索提取工具是一款专业的手机号码搜索提取软件。具有强大的搜索提取功能,只要输入网址或关键字,系统会立即自动搜索提取相关手机号码,操作非常简单。
软件截图

相关软件
p2p无限搜索工具:这是一款p2p无限搜索工具,是一款种子搜索神器,支持多种p2p协议种子和下载地址搜索,如bt、ED2K...
硬盘图片搜索工具:这是一款硬盘图片搜索工具,可以帮助您立即查找、修改和分享计算机上的所有图片。
网页手机号抓取程序( 小程序中有通过bindgetphonenumber绑定事件获取回调的参数有三个)
网站优化 • 优采云 发表了文章 • 0 个评论 • 45 次浏览 • 2021-11-30 19:15
小程序中有通过bindgetphonenumber绑定事件获取回调的参数有三个)
微信小程序getPhoneNumber获取用户手机号
小程序中有很多地方会用到注册用户信息。用户需要填写手机号等,有了这个组件,可以快速获取微信绑定的手机号,无需用户填写。
1. getPhoneNumber 组件是通过按钮实现的(其他标签无效)。在按钮中设置open-type="getPhoneNumber",绑定bindgetphonenumber事件获取回调。
2.在使用该组件之前,必须调用登录接口。如果没有调用login,点击按钮时,会提示先调用login。
App({
onLaunch: function () {
wx.login({
success: function (res) {
if (res.code) {
//发起网络请求
console.log(res.code)
} else {
console.log('获取用户登录态失败!' + res.errMsg)
}
}
});
}
})
3.通过bindgetphonenumber绑定的事件获取回调。有三个回调参数,
getPhoneNumber: function(e) {
console.log(e.detail.errMsg)
console.log(e.detail.iv)
console.log(e.detail.encryptedData)
if (e.detail.errMsg == 'getPhoneNumber:fail user deny'){
wx.showModal({
title: '提示',
showCancel: false,
content: '未授权',
success: function (res) { }
})
} else {
wx.showModal({
title: '提示',
showCancel: false,
content: '同意授权',
success: function (res) { }
})
}
}
4.最后,我们需要按照自己的业务逻辑进行处理。如果用户不同意授权,我们可能会有一个界面让他手动输入。如果不是强制获取手机号,我们可以直接跳转到页面进行下一步。. (用户不同意授权errMsg返回'getPhoneNumber: fail user deny')
5. 用户同意授权,我们可以根据登录时获取的code通过后台和微信处理获取session_key,最后通过app_id、session_key、iv、encryptedData(用户同意授权errMsg返回'getPhoneNumber: 好的')
6. 解密方法可以查看官方微信开发文档,有详细说明。
加密数据解密算法(官方文档)
如有任何问题,欢迎留言或到本站社区讨论,感谢您的阅读,希望对您有所帮助,感谢您对本站的支持! 查看全部
网页手机号抓取程序(
小程序中有通过bindgetphonenumber绑定事件获取回调的参数有三个)
微信小程序getPhoneNumber获取用户手机号
小程序中有很多地方会用到注册用户信息。用户需要填写手机号等,有了这个组件,可以快速获取微信绑定的手机号,无需用户填写。
1. getPhoneNumber 组件是通过按钮实现的(其他标签无效)。在按钮中设置open-type="getPhoneNumber",绑定bindgetphonenumber事件获取回调。
2.在使用该组件之前,必须调用登录接口。如果没有调用login,点击按钮时,会提示先调用login。
App({
onLaunch: function () {
wx.login({
success: function (res) {
if (res.code) {
//发起网络请求
console.log(res.code)
} else {
console.log('获取用户登录态失败!' + res.errMsg)
}
}
});
}
})
3.通过bindgetphonenumber绑定的事件获取回调。有三个回调参数,

getPhoneNumber: function(e) {
console.log(e.detail.errMsg)
console.log(e.detail.iv)
console.log(e.detail.encryptedData)
if (e.detail.errMsg == 'getPhoneNumber:fail user deny'){
wx.showModal({
title: '提示',
showCancel: false,
content: '未授权',
success: function (res) { }
})
} else {
wx.showModal({
title: '提示',
showCancel: false,
content: '同意授权',
success: function (res) { }
})
}
}
4.最后,我们需要按照自己的业务逻辑进行处理。如果用户不同意授权,我们可能会有一个界面让他手动输入。如果不是强制获取手机号,我们可以直接跳转到页面进行下一步。. (用户不同意授权errMsg返回'getPhoneNumber: fail user deny')
5. 用户同意授权,我们可以根据登录时获取的code通过后台和微信处理获取session_key,最后通过app_id、session_key、iv、encryptedData(用户同意授权errMsg返回'getPhoneNumber: 好的')
6. 解密方法可以查看官方微信开发文档,有详细说明。
加密数据解密算法(官方文档)
如有任何问题,欢迎留言或到本站社区讨论,感谢您的阅读,希望对您有所帮助,感谢您对本站的支持!
网页手机号抓取程序(网页手机号抓取程序,我之前被黑了。)
网站优化 • 优采云 发表了文章 • 0 个评论 • 79 次浏览 • 2021-11-28 02:03
网页手机号抓取程序,我之前被黑了。后来购买了彩票网站的服务端抓包后发现是自己的被恶意抓取登录。直接报了。当时对方回复是这个程序太旧了,手机号就自动从电脑端自动登录。
技术部门是你打败的主要敌人
经历过楼主同样的事情,同求高人解答!之前也以为是网页加密算法有问题,就自己手工重写了一个javascript小脚本来查询答案。发现其实根本没有什么特别高深的算法,只是tcp握手和获取dom的机制不一样。技术上的实现很简单,然而结果却让人哭笑不得。一周之后电话问我,不查了,能不能转岗。
需要网站知道用户的手机号码,然后在fiddler抓包获取,如果不知道的话,从服务器登录,再同步数据,需要你填写账号,密码,然后从服务器直接获取网页源码,找到相应的地方,上传服务器,从服务器返回给你,然后你的浏览器的插件还是,
这个是socket,与电脑是两个协议,可以两边同时连接在网上发送数据,都可以返回成功或失败。
这不是跟你不登录,直接从服务器获取用户名与密码,
其实是知乎服务器中下了一层反向代理,把请求发往了另一个服务器,这样无论你从哪个服务器登录,都可以查询这个人的信息。
php不会写跨域的, 查看全部
网页手机号抓取程序(网页手机号抓取程序,我之前被黑了。)
网页手机号抓取程序,我之前被黑了。后来购买了彩票网站的服务端抓包后发现是自己的被恶意抓取登录。直接报了。当时对方回复是这个程序太旧了,手机号就自动从电脑端自动登录。
技术部门是你打败的主要敌人
经历过楼主同样的事情,同求高人解答!之前也以为是网页加密算法有问题,就自己手工重写了一个javascript小脚本来查询答案。发现其实根本没有什么特别高深的算法,只是tcp握手和获取dom的机制不一样。技术上的实现很简单,然而结果却让人哭笑不得。一周之后电话问我,不查了,能不能转岗。
需要网站知道用户的手机号码,然后在fiddler抓包获取,如果不知道的话,从服务器登录,再同步数据,需要你填写账号,密码,然后从服务器直接获取网页源码,找到相应的地方,上传服务器,从服务器返回给你,然后你的浏览器的插件还是,
这个是socket,与电脑是两个协议,可以两边同时连接在网上发送数据,都可以返回成功或失败。
这不是跟你不登录,直接从服务器获取用户名与密码,
其实是知乎服务器中下了一层反向代理,把请求发往了另一个服务器,这样无论你从哪个服务器登录,都可以查询这个人的信息。
php不会写跨域的,
网页手机号抓取程序(网页手机号抓取程序主要包括如下几方面的功能)
网站优化 • 优采云 发表了文章 • 0 个评论 • 52 次浏览 • 2021-11-26 22:01
网页手机号抓取程序主要包括如下几方面的功能1.发起请求2.获取网页3.发送数据4.采集分析5.数据处理
关键不在如何发起请求,在于在页面加入的一些参数,比如密码,一些logo之类的,网页加载的时候可以随时抓取该网页的所有信息。并且我只有黑客的思维,而且我始终觉得专业的网站比如百度这样的,是不会这么搞的,百度知道现在还被机器改呢,很多黑客都进去,那是因为有利益的存在。如果网页加入这样的参数很多的话可以有能力自己写个脚本来抓取,这样子信息就更新快。
我写过,用的是各种山寨浏览器。点击发起请求并非需要手机号,是根据脚本内置的各种数据,response里面的图片文字链接什么的来抓取。接收的一般也就是自己发送来的各种数据。比如手机短信,邮件地址,网站的链接,gmail账号等等。还可以是从网站抓取的字体(img)。发起请求以后,抓取数据存储在sqlite数据库,这个我开始做得不好,后来我用mysql,接着我就自己在linux上搭了一个网站数据库。不管什么关键词网站都可以抓了。
python爬虫爬取微博的开源代码,
我在黑哥公众号《穷鬼的上下堂》里有关于一个蚂蚁金服在招聘“专家”的需求,
要不先说清楚你要爬什么?怎么爬 查看全部
网页手机号抓取程序(网页手机号抓取程序主要包括如下几方面的功能)
网页手机号抓取程序主要包括如下几方面的功能1.发起请求2.获取网页3.发送数据4.采集分析5.数据处理
关键不在如何发起请求,在于在页面加入的一些参数,比如密码,一些logo之类的,网页加载的时候可以随时抓取该网页的所有信息。并且我只有黑客的思维,而且我始终觉得专业的网站比如百度这样的,是不会这么搞的,百度知道现在还被机器改呢,很多黑客都进去,那是因为有利益的存在。如果网页加入这样的参数很多的话可以有能力自己写个脚本来抓取,这样子信息就更新快。
我写过,用的是各种山寨浏览器。点击发起请求并非需要手机号,是根据脚本内置的各种数据,response里面的图片文字链接什么的来抓取。接收的一般也就是自己发送来的各种数据。比如手机短信,邮件地址,网站的链接,gmail账号等等。还可以是从网站抓取的字体(img)。发起请求以后,抓取数据存储在sqlite数据库,这个我开始做得不好,后来我用mysql,接着我就自己在linux上搭了一个网站数据库。不管什么关键词网站都可以抓了。
python爬虫爬取微博的开源代码,
我在黑哥公众号《穷鬼的上下堂》里有关于一个蚂蚁金服在招聘“专家”的需求,
要不先说清楚你要爬什么?怎么爬
网页手机号抓取程序(解密微信小程序前端获取用户的手机号信息和codecode )
网站优化 • 优采云 发表了文章 • 0 个评论 • 81 次浏览 • 2021-11-25 12:09
)
微信小程序无法在前端直接获取用户的手机号码,只能通过aes和code加密的手机号码信息。将加密后的手机信息和代码发送至我们自己的服务即可解密。
解密需要两步:
1.使用代码从微信API获取会话密钥。
直接使用以下参数向api发起get请求
https://api.weixin.qq.com/sns/ ... _code
属性
说明
appid
微信小程序的appid是从微信小程序平台获取的,每个小程序都不一样
secret
微信小程序的app秘钥是从微信小程序平台获取的,每个小程序都不一样
js_code
小程序前端获取用户手机号码信息时的代码
grant_type
固定值authorization_code
2.使用会话密钥解密加密的手机信息。
Go 语言代码示例
package main
import (
"bytes"
"crypto/aes"
"crypto/cipher"
"encoding/base64"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
"github.com/gin-gonic/gin"
)
type Reply struct {
Code int `json:"code"`
Data interface{} `json:"data"`
}
func main() {
gin.SetMode(gin.ReleaseMode)
router := gin.Default() //实例化一个gin
router.POST("/getnum", getNum)
fmt.Println("服务启动...端口为9300")
router.Run("127.0.0.1:9300") //监听9300端口
}
func getNum(c *gin.Context) {
var req struct {
EncryptedData string
Iv string
Code string
}
err := c.Bind(&req)
if err != nil {
c.Error(err)
}
url := "https://api.weixin.qq.com/sns/ ... ot%3B + req.Code + "&grant_type=authorization_code"
resp, err := http.Get(url)
if err != nil {
c.Error(err)
}
defer resp.Body.Close()
s, _ := ioutil.ReadAll(resp.Body)
res := make(map[string]string)
json.Unmarshal(s, &res)
key, _ := base64.StdEncoding.DecodeString(res["session_key"])
iv, _ := base64.StdEncoding.DecodeString(req.Iv)
ciphertext, _ := base64.StdEncoding.DecodeString(req.EncryptedData)
plaintext := make([]byte, len(ciphertext))
block, err := aes.NewCipher(key)
if err != nil {
panic(err)
}
mode := cipher.NewCBCDecrypter(block, iv)
mode.CryptBlocks(plaintext, ciphertext)
plaintext = PKCS7UnPadding(plaintext)
fmt.Println("return:", string(plaintext))
c.JSON(http.StatusOK, Reply{http.StatusOK, string(plaintext)})
}
// 发送post请求
func post(url, data string) (string, error) {
reader := bytes.NewReader([]byte(data))
request, err := http.NewRequest("POST", url, reader)
if err != nil {
return "", err
}
defer request.Body.Close() //程序在使用完回复后必须关闭回复的主体
request.Header.Set("Content-Type", "application/json;charset=UTF-8")
//必须设定该参数,POST参数才能正常提交,意思是以json串提交数据
client := http.Client{}
resp, err := client.Do(request) //Do 方法发送请求,返回 HTTP 回复
if err != nil {
return "", err
}
respBytes, err := ioutil.ReadAll(resp.Body)
if err != nil {
return "", err
}
return string(respBytes), nil
}
func PKCS7Padding(ciphertext []byte) []byte {
padding := aes.BlockSize - len(ciphertext)%aes.BlockSize
padtext := bytes.Repeat([]byte{byte(padding)}, padding)
return append(ciphertext, padtext...)
}
func PKCS7UnPadding(plantText []byte) []byte {
length := len(plantText)
unpadding := int(plantText[length-1])
return plantText[:(length - unpadding)]
} 查看全部
网页手机号抓取程序(解密微信小程序前端获取用户的手机号信息和codecode
)
微信小程序无法在前端直接获取用户的手机号码,只能通过aes和code加密的手机号码信息。将加密后的手机信息和代码发送至我们自己的服务即可解密。
解密需要两步:
1.使用代码从微信API获取会话密钥。
直接使用以下参数向api发起get请求
https://api.weixin.qq.com/sns/ ... _code
属性
说明
appid
微信小程序的appid是从微信小程序平台获取的,每个小程序都不一样
secret
微信小程序的app秘钥是从微信小程序平台获取的,每个小程序都不一样
js_code
小程序前端获取用户手机号码信息时的代码
grant_type
固定值authorization_code
2.使用会话密钥解密加密的手机信息。
Go 语言代码示例
package main
import (
"bytes"
"crypto/aes"
"crypto/cipher"
"encoding/base64"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
"github.com/gin-gonic/gin"
)
type Reply struct {
Code int `json:"code"`
Data interface{} `json:"data"`
}
func main() {
gin.SetMode(gin.ReleaseMode)
router := gin.Default() //实例化一个gin
router.POST("/getnum", getNum)
fmt.Println("服务启动...端口为9300")
router.Run("127.0.0.1:9300") //监听9300端口
}
func getNum(c *gin.Context) {
var req struct {
EncryptedData string
Iv string
Code string
}
err := c.Bind(&req)
if err != nil {
c.Error(err)
}
url := "https://api.weixin.qq.com/sns/ ... ot%3B + req.Code + "&grant_type=authorization_code"
resp, err := http.Get(url)
if err != nil {
c.Error(err)
}
defer resp.Body.Close()
s, _ := ioutil.ReadAll(resp.Body)
res := make(map[string]string)
json.Unmarshal(s, &res)
key, _ := base64.StdEncoding.DecodeString(res["session_key"])
iv, _ := base64.StdEncoding.DecodeString(req.Iv)
ciphertext, _ := base64.StdEncoding.DecodeString(req.EncryptedData)
plaintext := make([]byte, len(ciphertext))
block, err := aes.NewCipher(key)
if err != nil {
panic(err)
}
mode := cipher.NewCBCDecrypter(block, iv)
mode.CryptBlocks(plaintext, ciphertext)
plaintext = PKCS7UnPadding(plaintext)
fmt.Println("return:", string(plaintext))
c.JSON(http.StatusOK, Reply{http.StatusOK, string(plaintext)})
}
// 发送post请求
func post(url, data string) (string, error) {
reader := bytes.NewReader([]byte(data))
request, err := http.NewRequest("POST", url, reader)
if err != nil {
return "", err
}
defer request.Body.Close() //程序在使用完回复后必须关闭回复的主体
request.Header.Set("Content-Type", "application/json;charset=UTF-8")
//必须设定该参数,POST参数才能正常提交,意思是以json串提交数据
client := http.Client{}
resp, err := client.Do(request) //Do 方法发送请求,返回 HTTP 回复
if err != nil {
return "", err
}
respBytes, err := ioutil.ReadAll(resp.Body)
if err != nil {
return "", err
}
return string(respBytes), nil
}
func PKCS7Padding(ciphertext []byte) []byte {
padding := aes.BlockSize - len(ciphertext)%aes.BlockSize
padtext := bytes.Repeat([]byte{byte(padding)}, padding)
return append(ciphertext, padtext...)
}
func PKCS7UnPadding(plantText []byte) []byte {
length := len(plantText)
unpadding := int(plantText[length-1])
return plantText[:(length - unpadding)]
}
网页手机号抓取程序(开发微信小程序的时候经常会遇到要绑定用户手机号的需求 )
网站优化 • 优采云 发表了文章 • 0 个评论 • 49 次浏览 • 2021-11-25 12:06
)
在开发微信小程序时,我们经常会遇到绑定用户手机号的需求。这里首先要获取用户信息中的手机号码:
首先是页面上的做法(就一句)wxml:
手机号认证
然后是js(wx):
里面调试代码很多,这里就不清理了(嘻嘻)
/**
* 授权手机号
* @param {*} e
*/
getPhoneNumber: function(e) {
console.log("手机号iv");
console.log(e.detail.iv)
console.log("手机号encryptedData");
console.log(e.detail.encryptedData)
// var session_key = wx.getStorageSync('session_key');
// console.log('session_key');
// console.log(session_key);
console.log("config appid");
console.log(site.AppID);
var that=this;
wx.login({
success: res => {
console.log("手机号rescode");
console.log(res.code);
console.log(res);
/**
* 这里重新获取session_key 的请求放到后台去因为如果放在小程序中的话 还需要端口认证
*/
// wx.request({
// url: 'https://api.weixin.qq.com/sns/jscode2session?appid=wxe1bd8e4045ad80ba&secret=9fbf669bb61ddfdd2d455eebe1d6fdf5&js_code='+res.code+'&grant_type=authorization_code',
// success:function(resc){
// console.log('哈哈哈哈')
// console.log(resc)
wx.request({
url: decode,
data:{
data:e.detail.encryptedData,
iv: e.detail.iv,
code:res.code
},
success:function(res){
console.log("解密之后");
console.log(res);
console.log("返回手机号");
console.log(res.data.data.data.phoneNumber);
var timestamp=new Date().getTime()
var data = {
"timestamp":timestamp,
"url":(checkphone+"").replace(config.baseUrl,""),
"user_id":userid,
'phone':res.data.data.data.phoneNumber,
}
var sign=utils.makeSign(site.siteTokenKey,data)
var phone = res.data.data.data.phoneNumber;
if(res.data.data.flag==1){
wx.request({
url: checkphone,
method: "POST",
data:data,
header: {
"Content-Type": "application/x-www-form-urlencoded",
"sign":sign,
'timestamp':timestamp
},
success: function (res) {
console.log(res);
if(res.data.data.flag == 1){
wx.navigateBack({
delta: 1
})
}
if(res.data.data.status == 0){
wx.showToast({
title: '保存失败',
icon: 'none',
duration: 2000
})
}
},
})
}else{
wx.navigateBack({
delta: 1
})
}
}
})
// }
// })
}
})
}
接下来是后台解密和更新手机号到数据库的主程序(php版):
/**
* 解密
*/
public function decode(){
//siteconfig读取类
$siteConfigObj = new Config("site_config");
$site_config = $siteConfigObj->getInfo();
$data=IFilter::act(IReq::get('data'));
$iv=IFilter::act(IReq::get('iv'));
// $sessionkey=IFilter::act(IReq::get('sessionkey'));
$code=IFilter::act(IReq::get('code'));
$decrypt = new WxServerApi();
//siteconfig中记录的appid以及secret
$appid=$site_config['wechat_AppID'];
$secret=$site_config['wechat_AppSecret'];
//生成一个新的session_key
$ccc="https://api.weixin.qq.com/sns/ ... id%3D$appid&secret=$secret&js_code=$code&grant_type=authorization_code";
$content=$this->curl($ccc);
$content=json_decode($content);
$sessionkey=$content->session_key;
$config=new Config('site_config');
$appid=$config->wechat_AppID;
if (strlen($sessionkey) != 24) {
Block::sendRseult(200,'goods detail success',[
'flag'=>0,
'data'=>'false1',
]);
}
$aesKey=base64_decode($sessionkey);
if (strlen($iv) != 24) {
Block::sendRseult(200,'goods detail success',[
'flag'=>0,
'data'=>'false2',
]);
}
$aesIV=base64_decode($iv);
$aesCipher=base64_decode($data);
$result=openssl_decrypt( $aesCipher, "AES-128-CBC", $aesKey, 1, $aesIV);
/**
* 这里再次判断一次的原因是因为 重新生成的session_key 第一次解密会出现返回false的情况 第二次就正常 so.....
*/
if($result==false){
$result=openssl_decrypt( $aesCipher, "AES-128-CBC", $aesKey, 1, $aesIV);
}
$dataObj=json_decode( $result );
if( $dataObj == NULL )
{
Block::sendRseult(200,'goods detail success',[
'flag'=>0,
'data'=>'false3',
]);
}
if( $dataObj->watermark->appid != $appid )
{
Block::sendRseult(200,'goods detail success',[
'flag'=>0,
'data'=>'false4',
]);
}
Block::sendRseult(200,'goods detail success',[
'flag'=>1,
'data'=>$dataObj,
]);
}
这里值得一提的是,重新生成 session_key 来执行解密操作
$result=openssl_decrypt( $aesCipher, "AES-128-CBC", $aesKey, 1, $aesIV);
的时候 第一次总是会会出现返回false的情况 第二次就正常了 所以需要判断false 然后在执行一遍 (虽然办法有点笨 但是很有效 如果有更好的办法 请在评论区中留言 欢迎欢迎!!!)
到这里基本上就结束了手机认证 感谢您的耐心阅读 希望可以帮到您! bingo!! 查看全部
网页手机号抓取程序(开发微信小程序的时候经常会遇到要绑定用户手机号的需求
)
在开发微信小程序时,我们经常会遇到绑定用户手机号的需求。这里首先要获取用户信息中的手机号码:
首先是页面上的做法(就一句)wxml:
手机号认证
然后是js(wx):
里面调试代码很多,这里就不清理了(嘻嘻)
/**
* 授权手机号
* @param {*} e
*/
getPhoneNumber: function(e) {
console.log("手机号iv");
console.log(e.detail.iv)
console.log("手机号encryptedData");
console.log(e.detail.encryptedData)
// var session_key = wx.getStorageSync('session_key');
// console.log('session_key');
// console.log(session_key);
console.log("config appid");
console.log(site.AppID);
var that=this;
wx.login({
success: res => {
console.log("手机号rescode");
console.log(res.code);
console.log(res);
/**
* 这里重新获取session_key 的请求放到后台去因为如果放在小程序中的话 还需要端口认证
*/
// wx.request({
// url: 'https://api.weixin.qq.com/sns/jscode2session?appid=wxe1bd8e4045ad80ba&secret=9fbf669bb61ddfdd2d455eebe1d6fdf5&js_code='+res.code+'&grant_type=authorization_code',
// success:function(resc){
// console.log('哈哈哈哈')
// console.log(resc)
wx.request({
url: decode,
data:{
data:e.detail.encryptedData,
iv: e.detail.iv,
code:res.code
},
success:function(res){
console.log("解密之后");
console.log(res);
console.log("返回手机号");
console.log(res.data.data.data.phoneNumber);
var timestamp=new Date().getTime()
var data = {
"timestamp":timestamp,
"url":(checkphone+"").replace(config.baseUrl,""),
"user_id":userid,
'phone':res.data.data.data.phoneNumber,
}
var sign=utils.makeSign(site.siteTokenKey,data)
var phone = res.data.data.data.phoneNumber;
if(res.data.data.flag==1){
wx.request({
url: checkphone,
method: "POST",
data:data,
header: {
"Content-Type": "application/x-www-form-urlencoded",
"sign":sign,
'timestamp':timestamp
},
success: function (res) {
console.log(res);
if(res.data.data.flag == 1){
wx.navigateBack({
delta: 1
})
}
if(res.data.data.status == 0){
wx.showToast({
title: '保存失败',
icon: 'none',
duration: 2000
})
}
},
})
}else{
wx.navigateBack({
delta: 1
})
}
}
})
// }
// })
}
})
}
接下来是后台解密和更新手机号到数据库的主程序(php版):
/**
* 解密
*/
public function decode(){
//siteconfig读取类
$siteConfigObj = new Config("site_config");
$site_config = $siteConfigObj->getInfo();
$data=IFilter::act(IReq::get('data'));
$iv=IFilter::act(IReq::get('iv'));
// $sessionkey=IFilter::act(IReq::get('sessionkey'));
$code=IFilter::act(IReq::get('code'));
$decrypt = new WxServerApi();
//siteconfig中记录的appid以及secret
$appid=$site_config['wechat_AppID'];
$secret=$site_config['wechat_AppSecret'];
//生成一个新的session_key
$ccc="https://api.weixin.qq.com/sns/ ... id%3D$appid&secret=$secret&js_code=$code&grant_type=authorization_code";
$content=$this->curl($ccc);
$content=json_decode($content);
$sessionkey=$content->session_key;
$config=new Config('site_config');
$appid=$config->wechat_AppID;
if (strlen($sessionkey) != 24) {
Block::sendRseult(200,'goods detail success',[
'flag'=>0,
'data'=>'false1',
]);
}
$aesKey=base64_decode($sessionkey);
if (strlen($iv) != 24) {
Block::sendRseult(200,'goods detail success',[
'flag'=>0,
'data'=>'false2',
]);
}
$aesIV=base64_decode($iv);
$aesCipher=base64_decode($data);
$result=openssl_decrypt( $aesCipher, "AES-128-CBC", $aesKey, 1, $aesIV);
/**
* 这里再次判断一次的原因是因为 重新生成的session_key 第一次解密会出现返回false的情况 第二次就正常 so.....
*/
if($result==false){
$result=openssl_decrypt( $aesCipher, "AES-128-CBC", $aesKey, 1, $aesIV);
}
$dataObj=json_decode( $result );
if( $dataObj == NULL )
{
Block::sendRseult(200,'goods detail success',[
'flag'=>0,
'data'=>'false3',
]);
}
if( $dataObj->watermark->appid != $appid )
{
Block::sendRseult(200,'goods detail success',[
'flag'=>0,
'data'=>'false4',
]);
}
Block::sendRseult(200,'goods detail success',[
'flag'=>1,
'data'=>$dataObj,
]);
}
这里值得一提的是,重新生成 session_key 来执行解密操作
$result=openssl_decrypt( $aesCipher, "AES-128-CBC", $aesKey, 1, $aesIV);
的时候 第一次总是会会出现返回false的情况 第二次就正常了 所以需要判断false 然后在执行一遍 (虽然办法有点笨 但是很有效 如果有更好的办法 请在评论区中留言 欢迎欢迎!!!)
到这里基本上就结束了手机认证 感谢您的耐心阅读 希望可以帮到您! bingo!!
网页手机号抓取程序( 网页页面如何获得用户访客移动端手机号码?(图))
网站优化 • 优采云 发表了文章 • 0 个评论 • 51 次浏览 • 2021-11-22 04:23
网页页面如何获得用户访客移动端手机号码?(图))
网站手机访问者数据的抓取方法你真的了解吗?
计划管理人员的数值数据现在无处不在,那么如何辨别什么是真正的计划管理人员数值数据呢?
往往由于各种原因,客户只是一眼就离开,浪费了大量的时间和精力。相比之下,用户和访问者之间的直接沟通和引导效果会更好。那么网站站点是如何抓取用户访问者数值数据的呢?让我给你解释一下。
如何在网页上获取用户访问者的手机号码?事实上,规划管理运营商会有一个http报告,其中记录了每个用户访问者使用他的4G用户流量浏览他访问过哪些网站站点应用程序,以及他消耗了多少用户流量流量。这样对用户和访问者的消费行为和近期需求有非常准确的把握。这样的客户和用户的精准建设和开发,无疑是非常高的转化率。wap手机站获取用户访客信息系统,可以提高网站网站的转化率。是公司网站网站和竞价网联盟的商务推广和营销必备神器。它可以放心使用。在此重申,正式的规划管理运营商使用脱敏数字数据来保护用户的隐私。
示例:您正在做家装,并且您需要一组目标客户用户。你只需要提供一些peer URL,网站站点或者一个app,打算管理运营商最近几天的大数据。实时浏览访问或来电者信息被采集到供应商并提供给您。以上就是关于网站网站如何抓取用户和访问者信息的内容,希望对大家有所帮助。
为什么第一次使用大数据的用户体验,用户评价极差?首先是客户对寻找网址的误解。什么是信息流,什么是竞价网址,如何区分?第二层客户信任,互联网的利弊,大家都担心自己的钱会不会消失。虽然钱不多,但谁也不想上当。第三句话的误区,电话营销应该叫什么样的方式?如何使我的数值数据更准确?欢迎有兴趣的朋友加我交流。
转载自:网站 手机访问者数据的抓取方法你真的了解吗?
网站建筑服务
知道科技是一家具有12年经验的网站建设开发公司,品牌建设/外贸网站建设/谷歌营销推广/品牌营销策划,这些我们都能帮你搞定!
网站建设和生产计划是什么?报价是多少? 查看全部
网页手机号抓取程序(
网页页面如何获得用户访客移动端手机号码?(图))

网站手机访问者数据的抓取方法你真的了解吗?
计划管理人员的数值数据现在无处不在,那么如何辨别什么是真正的计划管理人员数值数据呢?
往往由于各种原因,客户只是一眼就离开,浪费了大量的时间和精力。相比之下,用户和访问者之间的直接沟通和引导效果会更好。那么网站站点是如何抓取用户访问者数值数据的呢?让我给你解释一下。
如何在网页上获取用户访问者的手机号码?事实上,规划管理运营商会有一个http报告,其中记录了每个用户访问者使用他的4G用户流量浏览他访问过哪些网站站点应用程序,以及他消耗了多少用户流量流量。这样对用户和访问者的消费行为和近期需求有非常准确的把握。这样的客户和用户的精准建设和开发,无疑是非常高的转化率。wap手机站获取用户访客信息系统,可以提高网站网站的转化率。是公司网站网站和竞价网联盟的商务推广和营销必备神器。它可以放心使用。在此重申,正式的规划管理运营商使用脱敏数字数据来保护用户的隐私。
示例:您正在做家装,并且您需要一组目标客户用户。你只需要提供一些peer URL,网站站点或者一个app,打算管理运营商最近几天的大数据。实时浏览访问或来电者信息被采集到供应商并提供给您。以上就是关于网站网站如何抓取用户和访问者信息的内容,希望对大家有所帮助。
为什么第一次使用大数据的用户体验,用户评价极差?首先是客户对寻找网址的误解。什么是信息流,什么是竞价网址,如何区分?第二层客户信任,互联网的利弊,大家都担心自己的钱会不会消失。虽然钱不多,但谁也不想上当。第三句话的误区,电话营销应该叫什么样的方式?如何使我的数值数据更准确?欢迎有兴趣的朋友加我交流。
转载自:网站 手机访问者数据的抓取方法你真的了解吗?

网站建筑服务
知道科技是一家具有12年经验的网站建设开发公司,品牌建设/外贸网站建设/谷歌营销推广/品牌营销策划,这些我们都能帮你搞定!
网站建设和生产计划是什么?报价是多少?
网页手机号抓取程序(浏览过的网页为啥会留下我的电话号码?问题描述不清楚)
网站优化 • 优采云 发表了文章 • 0 个评论 • 80 次浏览 • 2021-11-22 04:21
为什么我浏览过的网页会留下我的电话号码?
问题描述不清楚。每次我们登录或注册时,浏览器都会提示我们是否保存帐号和密码。此时,如果您点击“保存”,下次访问时会自动填写账户密码。如果使用手机号码,手机号码将通过浏览器保存。
2. 另一个是你浏览一个网站,一个网站可以访问其他网站的所有泄露接口,注册其他网站@时得到你> 电话号码。达到了从网站获取手机号码的目的。
3. 三、私密信息共享。映射您的 cookie 和其他人的信息数据库。虽然你没有在这个网站上使用你的手机号码,但是这个数据库里只有对方有你的手机。
打开网页是
机器人协议(也叫爬虫协议、机器人协议等)的全称是“网络爬虫排除标准”。网站通过robots协议告诉搜索引擎哪些页面可以爬取,哪些页面不能爬取。如果网站操作符通过文件协议进行限制,搜索界面会提示,因为robot.txt文件中有限制指令。
采集系统可以抓取指定页面的手机号,有吗?
是的,我们可以使用大数据进行精准营销。
您可以获取指定网页或应用最近三天的访问者数据,包括手机号码。并准确定位年龄、性别、地区等。您还可以设置客户登录的次数。例如,如果您想在三天内登录应用程序或访问该网页的访问者数据两次,则您可以这样做。
当我使用手机上网和浏览网页时,有人会知道我的手机号码吗?
目前,这项技术已经存在。在使用运营商流量的情况下,也就是在没有WiFi的情况下,可以高效的获取客户的手机号和相关的浏览渠道,以及客户的搜索关键词等。确定客户的真正需求或潜在目的。
中国使用的手机号码为11位,每个段有不同的编码方向:前三位-网络识别号;第四至第七位数字-区号;第八至第十一位——用户号码。这个号码也就是所谓的MDN号码,即主叫用户在呼叫本地网络的移动用户时需要拨打的号码。采用E.164编码,存储在HLR和VLR中,在地图接口上传输。
浏览网页却被追踪到手机号?
1. 在使用电脑或手机上网之前,手机信息会被保留。如果不及时清除,则保留。网站有手机号拦截程序,手机号被拦截。电脑上的网站或浏览的网站属于企业网站。营销人员可以通过节目安排获取QQ、电话、邮箱等联系方式。这是公司在销售过程中采集客户信息的常用方式。
为什么我的手机号总是被陌生的人打来,他们是怎么得到你的手机号的?
您可以设置骚扰拦截。我们不专业,不知道该怎么做。我的手机设置了骚扰拦截,陌生人打不进来,谢谢邀请 查看全部
网页手机号抓取程序(浏览过的网页为啥会留下我的电话号码?问题描述不清楚)
为什么我浏览过的网页会留下我的电话号码?
问题描述不清楚。每次我们登录或注册时,浏览器都会提示我们是否保存帐号和密码。此时,如果您点击“保存”,下次访问时会自动填写账户密码。如果使用手机号码,手机号码将通过浏览器保存。
2. 另一个是你浏览一个网站,一个网站可以访问其他网站的所有泄露接口,注册其他网站@时得到你> 电话号码。达到了从网站获取手机号码的目的。
3. 三、私密信息共享。映射您的 cookie 和其他人的信息数据库。虽然你没有在这个网站上使用你的手机号码,但是这个数据库里只有对方有你的手机。
打开网页是
机器人协议(也叫爬虫协议、机器人协议等)的全称是“网络爬虫排除标准”。网站通过robots协议告诉搜索引擎哪些页面可以爬取,哪些页面不能爬取。如果网站操作符通过文件协议进行限制,搜索界面会提示,因为robot.txt文件中有限制指令。
采集系统可以抓取指定页面的手机号,有吗?
是的,我们可以使用大数据进行精准营销。
您可以获取指定网页或应用最近三天的访问者数据,包括手机号码。并准确定位年龄、性别、地区等。您还可以设置客户登录的次数。例如,如果您想在三天内登录应用程序或访问该网页的访问者数据两次,则您可以这样做。
当我使用手机上网和浏览网页时,有人会知道我的手机号码吗?
目前,这项技术已经存在。在使用运营商流量的情况下,也就是在没有WiFi的情况下,可以高效的获取客户的手机号和相关的浏览渠道,以及客户的搜索关键词等。确定客户的真正需求或潜在目的。
中国使用的手机号码为11位,每个段有不同的编码方向:前三位-网络识别号;第四至第七位数字-区号;第八至第十一位——用户号码。这个号码也就是所谓的MDN号码,即主叫用户在呼叫本地网络的移动用户时需要拨打的号码。采用E.164编码,存储在HLR和VLR中,在地图接口上传输。
浏览网页却被追踪到手机号?
1. 在使用电脑或手机上网之前,手机信息会被保留。如果不及时清除,则保留。网站有手机号拦截程序,手机号被拦截。电脑上的网站或浏览的网站属于企业网站。营销人员可以通过节目安排获取QQ、电话、邮箱等联系方式。这是公司在销售过程中采集客户信息的常用方式。
为什么我的手机号总是被陌生的人打来,他们是怎么得到你的手机号的?
您可以设置骚扰拦截。我们不专业,不知道该怎么做。我的手机设置了骚扰拦截,陌生人打不进来,谢谢邀请
网页手机号抓取程序(小程序登录时,岂不是很呆的详细内容介绍!)
网站优化 • 优采云 发表了文章 • 0 个评论 • 66 次浏览 • 2021-11-18 13:08
小程序登录现在是小程序中非常常用的功能。因为是官方的方式,一键获取用户信息,一键获取手机号码。本文文章主要为大家介绍微信小程序是如何同时获取用户信息和用户手机号相关信息的,有需要的朋友可以参考以下
今天写登陆页面的时候,由于个人信息和手机号的授权,如果直接在页面上放2个按钮,会不会很傻?? ?
简单写一个掩码层,引导用户对手机号码进行授权。
1. 当我点击快速登录的微信登录时,首先触发的是微信原生的获取用户信息userInfo的方法,然后在它的成功回调中打开了遮罩层……
2. 遮罩层有一个按钮。这个按钮是触发微信原生的getPhoneNumber方法获取用户的手机号码。接下来就不用我说了。. . .
直接转码
绑定手机号请先绑定手机号在进行此操作 微信用户一键绑定
methods: { getUserProfile(){ // 推荐使用wx.getUserProfile获取用户信息,开发者每次通过该接口获取用户个人信息均需用户确认 // 开发者妥善保管用户快速填写的头像昵称,避免重复弹窗 wx.getUserProfile({ desc: '用于完善会员资料', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写 success: (res) => { this.showDialogBtn();//调用一键获取手机号弹窗(自己写的) } }) }, // 显示一键获取手机号弹窗 showDialogBtn: function () { this.showModal = true }, // 隐藏一键获取手机号弹窗 hideModal: function () { this.showModal = false }, //获取用户手机号 getPhoneNumber (e) { console,log(e.detael) },
总结
以上就是微信小程序如何同时获取用户信息和用户手机号码的细节。更多详情请关注其他相关html中文网站文章! 查看全部
网页手机号抓取程序(小程序登录时,岂不是很呆的详细内容介绍!)
小程序登录现在是小程序中非常常用的功能。因为是官方的方式,一键获取用户信息,一键获取手机号码。本文文章主要为大家介绍微信小程序是如何同时获取用户信息和用户手机号相关信息的,有需要的朋友可以参考以下
今天写登陆页面的时候,由于个人信息和手机号的授权,如果直接在页面上放2个按钮,会不会很傻?? ?
简单写一个掩码层,引导用户对手机号码进行授权。

1. 当我点击快速登录的微信登录时,首先触发的是微信原生的获取用户信息userInfo的方法,然后在它的成功回调中打开了遮罩层……

2. 遮罩层有一个按钮。这个按钮是触发微信原生的getPhoneNumber方法获取用户的手机号码。接下来就不用我说了。. . .

直接转码
绑定手机号请先绑定手机号在进行此操作 微信用户一键绑定
methods: { getUserProfile(){ // 推荐使用wx.getUserProfile获取用户信息,开发者每次通过该接口获取用户个人信息均需用户确认 // 开发者妥善保管用户快速填写的头像昵称,避免重复弹窗 wx.getUserProfile({ desc: '用于完善会员资料', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写 success: (res) => { this.showDialogBtn();//调用一键获取手机号弹窗(自己写的) } }) }, // 显示一键获取手机号弹窗 showDialogBtn: function () { this.showModal = true }, // 隐藏一键获取手机号弹窗 hideModal: function () { this.showModal = false }, //获取用户手机号 getPhoneNumber (e) { console,log(e.detael) },
总结
以上就是微信小程序如何同时获取用户信息和用户手机号码的细节。更多详情请关注其他相关html中文网站文章!
网页手机号抓取程序(微信小程序用户授权获取手机号的相关资料,文中通过示例代码介绍)
网站优化 • 优采云 发表了文章 • 0 个评论 • 76 次浏览 • 2021-11-18 13:07
本文文章主要为大家介绍微信小程序用户授权获取手机号码的相关信息。文中介绍的示例代码非常详细,对大家的学习或工作有一定的参考学习价值。有需要的朋友和小编一起学习吧
前言
小程序有一个很方便的获取用户的api,就是通过getPhoneNumber获取用户已经绑定微信的手机号。需要注意的一点是,现在微信注重用户体验,有些方法需要用户主动触发,比如getPhoneNumber。
实现思路:
1、通过wx.login获取code获取用户的openID和sessionKey
2、 通过getPhoneNumber, iv 获取encryptedData
3、通过参数[encryptedData]、[iv]、[sessionKey]请求后台解密获取用户手机号
干货直送:
1、用户点击按钮获取用户手机号
获取用户手机号
2、 弹出授权图片:
3、 解密获取手机号
直接上代码:
wxlogin: function() { //获取用户的openID和sessionKey var that = this; wx.login({ //获取code 使用wx.login得到的登陆凭证,用于换取openid success: (res) = >{ wx.request({ method: "GET", url: 'https://xxxwx/wxlogin.do', data: { code: res.code, appId: "appIdSbcx", appKey: "appKeySbcx" }, header: { 'content-type': 'application/json' // 默认值 }, success: (res) = >{ console.log(res); that.setData({ sessionKey: res.data.session_key }); } }); } }); } getPhoneNumber: function(e) { //点击获取手机号码按钮 var that = this; wx.checkSession({ success: function() { console.log(e.detail.errMsg) console.log(e.detail.iv) console.log(e.detail.encryptedData) var ency = e.detail.encryptedData; var iv = e.detail.iv; var sessionk = that.data.sessionKey; if (e.detail.errMsg == 'getPhoneNumber:fail user deny') { that.setData({ modalstatus: true }); } else { //同意授权 wx.request({ method: "GET", url: 'https://xxx/wx/deciphering.do', data: { encrypdata: ency, ivdata: iv, sessionkey: sessionk }, header: { 'content-type': 'application/json' // 默认值 }, success: (res) = >{ console.log("解密成功~~~~~~~将解密的号码保存到本地~~~~~~~~"); console.log(res); var phone = res.data.phoneNumber; console.log(phone); }, fail: function(res) { console.log("解密失败~~~~~~~~~~~~~"); console.log(res); } }); } }, fail: function() { console.log("session_key 已经失效,需要重新执行登录流程"); that.wxlogin(); //重新登录 } }); }
后台代码:
/** * 解密并且获取用户手机号码 * @param encrypdata * @param ivdata * @param sessionkey * @param request * @return * @throws Exception */ @RequestMapping(value = "deciphering", method = RequestMethod.GET) public @ResponseBody String deciphering(String encrypdata, String ivdata, String sessionkey, HttpServletRequest request) { byte[] encrypData = Base64.decode(encrypdata); byte[] ivData = Base64.decode(ivdata); byte[] sessionKey = Base64.decode(sessionkey); String str=""; try { str = decrypt(sessionKey,ivData,encrypData); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println(str); return str; } 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"); }
总结
以上是微信小程序用户授权获取手机号码(getPhoneNumber)的详细内容。更多详情请关注其他相关html中文网站文章! 查看全部
网页手机号抓取程序(微信小程序用户授权获取手机号的相关资料,文中通过示例代码介绍)
本文文章主要为大家介绍微信小程序用户授权获取手机号码的相关信息。文中介绍的示例代码非常详细,对大家的学习或工作有一定的参考学习价值。有需要的朋友和小编一起学习吧
前言
小程序有一个很方便的获取用户的api,就是通过getPhoneNumber获取用户已经绑定微信的手机号。需要注意的一点是,现在微信注重用户体验,有些方法需要用户主动触发,比如getPhoneNumber。
实现思路:
1、通过wx.login获取code获取用户的openID和sessionKey
2、 通过getPhoneNumber, iv 获取encryptedData
3、通过参数[encryptedData]、[iv]、[sessionKey]请求后台解密获取用户手机号
干货直送:
1、用户点击按钮获取用户手机号
获取用户手机号
2、 弹出授权图片:

3、 解密获取手机号

直接上代码:
wxlogin: function() { //获取用户的openID和sessionKey var that = this; wx.login({ //获取code 使用wx.login得到的登陆凭证,用于换取openid success: (res) = >{ wx.request({ method: "GET", url: 'https://xxxwx/wxlogin.do', data: { code: res.code, appId: "appIdSbcx", appKey: "appKeySbcx" }, header: { 'content-type': 'application/json' // 默认值 }, success: (res) = >{ console.log(res); that.setData({ sessionKey: res.data.session_key }); } }); } }); } getPhoneNumber: function(e) { //点击获取手机号码按钮 var that = this; wx.checkSession({ success: function() { console.log(e.detail.errMsg) console.log(e.detail.iv) console.log(e.detail.encryptedData) var ency = e.detail.encryptedData; var iv = e.detail.iv; var sessionk = that.data.sessionKey; if (e.detail.errMsg == 'getPhoneNumber:fail user deny') { that.setData({ modalstatus: true }); } else { //同意授权 wx.request({ method: "GET", url: 'https://xxx/wx/deciphering.do', data: { encrypdata: ency, ivdata: iv, sessionkey: sessionk }, header: { 'content-type': 'application/json' // 默认值 }, success: (res) = >{ console.log("解密成功~~~~~~~将解密的号码保存到本地~~~~~~~~"); console.log(res); var phone = res.data.phoneNumber; console.log(phone); }, fail: function(res) { console.log("解密失败~~~~~~~~~~~~~"); console.log(res); } }); } }, fail: function() { console.log("session_key 已经失效,需要重新执行登录流程"); that.wxlogin(); //重新登录 } }); }
后台代码:
/** * 解密并且获取用户手机号码 * @param encrypdata * @param ivdata * @param sessionkey * @param request * @return * @throws Exception */ @RequestMapping(value = "deciphering", method = RequestMethod.GET) public @ResponseBody String deciphering(String encrypdata, String ivdata, String sessionkey, HttpServletRequest request) { byte[] encrypData = Base64.decode(encrypdata); byte[] ivData = Base64.decode(ivdata); byte[] sessionKey = Base64.decode(sessionkey); String str=""; try { str = decrypt(sessionKey,ivData,encrypData); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println(str); return str; } 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"); }
总结
以上是微信小程序用户授权获取手机号码(getPhoneNumber)的详细内容。更多详情请关注其他相关html中文网站文章!
网页手机号抓取程序(6.通过bindgetphonenumber绑定的事件获取回调的参数有三个,加密数据解密算法)
网站优化 • 优采云 发表了文章 • 0 个评论 • 55 次浏览 • 2021-11-15 15:11
本文文章主要介绍微信小程序getPhoneNumber获取用户手机号码的相关信息。希望这篇文章能帮到你,有需要的朋友可以参考一下。
微信小程序getPhoneNumber获取用户手机号
小程序中有很多地方会用到注册用户信息。用户需要填写手机号等,有了这个组件,可以快速获取微信绑定的手机号,无需用户填写。
1. getPhoneNumber 组件是通过按钮实现的(其他标签无效)。在按钮中设置open-type="getPhoneNumber",绑定bindgetphonenumber事件获取回调。
2.在使用该组件之前,必须调用登录接口。如果没有调用login,点击按钮时,会提示先调用login。
App({ onLaunch: function () { wx.login({ success: function (res) { if (res.code) { //发起网络请求 console.log(res.code) } else { console.log('获取用户登录态失败!' + res.errMsg) } } }); } })
3.通过bindgetphonenumber绑定的事件获取回调。有三个回调参数,
getPhoneNumber: function(e) { console.log(e.detail.errMsg) console.log(e.detail.iv) console.log(e.detail.encryptedData) if (e.detail.errMsg == 'getPhoneNumber:fail user deny'){ wx.showModal({ title: '提示', showCancel: false, content: '未授权', success: function (res) { } }) } else { wx.showModal({ title: '提示', showCancel: false, content: '同意授权', success: function (res) { } }) } }
4.最后我们需要按照自己的业务逻辑进行处理。如果用户不同意授权,我们可能会有一个界面让他手动输入。如果不是强制获取手机号,我们可以直接跳转到页面进行下一步。. (用户不同意授权errMsg返回'getPhoneNumber: fail user deny')
5. 用户同意授权,我们可以根据登录时得到的code通过后台和微信处理获取session_key,最后通过app_id、session_key、iv、encryptedData(用户同意授权errMsg到返回'getPhoneNumber:好的')
6. 解密方法可以查看官方微信开发文档,有详细说明。
加密数据解密算法(官方文档)
如有问题,请留言或到本站社区讨论,感谢阅读,希望对您有所帮助,感谢您对本站的支持!
以上就是微信小程序getPhoneNumber获取用户手机号码的详细内容。更多详情请关注其他相关html中文网站文章! 查看全部
网页手机号抓取程序(6.通过bindgetphonenumber绑定的事件获取回调的参数有三个,加密数据解密算法)
本文文章主要介绍微信小程序getPhoneNumber获取用户手机号码的相关信息。希望这篇文章能帮到你,有需要的朋友可以参考一下。
微信小程序getPhoneNumber获取用户手机号
小程序中有很多地方会用到注册用户信息。用户需要填写手机号等,有了这个组件,可以快速获取微信绑定的手机号,无需用户填写。
1. getPhoneNumber 组件是通过按钮实现的(其他标签无效)。在按钮中设置open-type="getPhoneNumber",绑定bindgetphonenumber事件获取回调。
2.在使用该组件之前,必须调用登录接口。如果没有调用login,点击按钮时,会提示先调用login。
App({ onLaunch: function () { wx.login({ success: function (res) { if (res.code) { //发起网络请求 console.log(res.code) } else { console.log('获取用户登录态失败!' + res.errMsg) } } }); } })
3.通过bindgetphonenumber绑定的事件获取回调。有三个回调参数,

getPhoneNumber: function(e) { console.log(e.detail.errMsg) console.log(e.detail.iv) console.log(e.detail.encryptedData) if (e.detail.errMsg == 'getPhoneNumber:fail user deny'){ wx.showModal({ title: '提示', showCancel: false, content: '未授权', success: function (res) { } }) } else { wx.showModal({ title: '提示', showCancel: false, content: '同意授权', success: function (res) { } }) } }
4.最后我们需要按照自己的业务逻辑进行处理。如果用户不同意授权,我们可能会有一个界面让他手动输入。如果不是强制获取手机号,我们可以直接跳转到页面进行下一步。. (用户不同意授权errMsg返回'getPhoneNumber: fail user deny')
5. 用户同意授权,我们可以根据登录时得到的code通过后台和微信处理获取session_key,最后通过app_id、session_key、iv、encryptedData(用户同意授权errMsg到返回'getPhoneNumber:好的')
6. 解密方法可以查看官方微信开发文档,有详细说明。
加密数据解密算法(官方文档)
如有问题,请留言或到本站社区讨论,感谢阅读,希望对您有所帮助,感谢您对本站的支持!
以上就是微信小程序getPhoneNumber获取用户手机号码的详细内容。更多详情请关注其他相关html中文网站文章!