乙肝病毒复制活跃期能要小孩吗

“可信ID”的概念及特色
摘要:“可信ID”即“可信赖的移动设备ID”又名“数字DNA”是由北京数字联盟网络科技有限公司负责管理和维护的移动设备标识ID。它能有效解决APP推广过程中的数据不透明,以及刷单、刷量等恶意行为,帮助APP开发者甄别优质推广渠道,过滤无效数据。
  “可信ID”即“可信赖的移动设备ID”又名“数字DNA”是由北京数字联盟网络科技有限公司负责管理和维护的移动设备标识ID。它能有效解决APP推广过程中的数据不透明,以及刷单、刷量等恶意行为,帮助APP开发者甄别优质推广渠道,过滤无效数据。  北京数字联盟网络科技有限公司(简称数盟/数字联盟)开发“可信ID”,针对移动推广中的多种作弊场景,有效应对各类造假手段,确保移动APP开发者的推广费用获得真实、高效的回报。“可信ID”由88位数字、字母、符号本体码组成,用于准确描述移动设备,每个编码对象获得一个唯一的、不变的标识ID。  产品特色,1、独特不重复:可信ID不随任何非硬件信息的变化而改变。2、安全防伪造:可信ID不采集用户行为数据;使用多种动态加密算法,无法篡改伪造。3、高可用性:数盟平台自运行以来无间断,每日处理数据20亿条,多采集中心,双存储中心。4、可校验性:可信ID由数盟算法生成,可以判断是否由数盟下发、对应的APP、开发者等信息,方便数盟服务器与开发者进行校验。5、结果准确:可信ID能有效识别模拟器、改码设备、山寨设备,存量用户识别率96%。6、详细数据:可信ID能为客户提供精确到秒的详细log数据。  使用场景,1.APP推广防刷量:可信ID可识别虚拟机、真机改码等造假手段。2.O2O防刷单:提供O2O服务的公司能利用可信ID向数盟发起实时查询,鉴别设备真伪,审核参加优惠活动的用户资格。3.无效数据清洗:在甄别用户设备真伪的基础上,筛选出真实用户,完成有效的设备行为分析。4.全局白名单:利用可信ID建立白名单库,有效防止刷注册刷账户行为,消除广告以及恶意信息对平台内容带来的负面影响。5.防“小号农场”:利用可信ID对虚拟机的精准判断,封杀“小号农场”,维护开发者的利益。  市场覆盖情况,截止2017年3月底,可信ID已经覆盖有效移动设备7.33亿部,每天数据库新增设备数量与国内移动设备销售数量基本保持一致。
您必须才能发表留言!
互联网科技公司“奇思客”获千万美元级A轮融资
企业股权方案提供商“荒草地股权VC”获800万天使轮融资
程序化邮件直投服务平台“PebblePost”获1500万美元B轮融资
科技初创企业“LeoLabs”获400万美元种子轮融资
室内地图和定位平台“LocusLabs”获350万美元A轮融资
为企业提供钟点工管理软件企业“WorkJam”获1200万美元B轮融资
服装租赁平台“多啦衣梦”获1200万美元A+轮融资
共享单车服务品牌“永安行”获数亿元A轮融资
会议活动平台“31会议”获4000万元A+轮融资
房地产综合门户及营销平台“楼盘网”获千万元Pre-A轮融资
共享单车平台“百拜单车”获A轮融资
共享单车平台“ofo”获4.5亿美元D轮融资
免费资讯服务平台“奖金网”获2亿元人民币B轮融资
居家上门服务品牌“泰笛科技”获1.5亿元C轮融资
提供会议语音助手服务企业“Workfit”获550万美元种子轮融资
印度公寓租赁服务平台“StayAbode”获天使轮融资
超融合基础设施初创公司“Diamanti”获1800万美元B轮融资
B2B物流公司“ BlackBuck”获3000万美元C轮融资
广告恢复平台初创公司“Uponit”获230万美元种子轮融资
在线运输及货运交易平台“uShip”获2500万美元D轮融资
仓库业务代运营服务商“鲸仓科技”获6800万元A轮融资
智能腕带品牌“GYENNO One”获数千万A轮融资
人力资源运营移动APP“职行力”获数千万元Pre-A轮融资
O2O汽车保养平台“车发发”获1亿元A轮融资
可视化软件平台“优锘科技”获7200万A轮融资
本地化生鲜品质电商“原谷生鲜”获百万元天使轮融资
地产中介平台“我爱我家”被昆百大65亿元收购
开源代码解决方案企业“Fossa”获220万美元种子轮融资
在线金融借贷平台“SoFi”获5亿美元战略融资
云通讯服务平台“Layer”获1500万美元B轮融资查看: 3380|回复: 6
淘宝或天猫店铺卖家数字ID获取方法
主题帖子积分
时间可以证明一切,包括真爱!
<font color="#、进入淘宝或天猫店铺首页,例如:
2、然后鼠标右键--&查看网页源代码 ,然后查找类似这样的字符:userId=其中的
就是店铺卖家数字ID
本帖子中包含更多资源
才可以下载或查看,没有帐号?
主题帖子积分
新手上路, 积分 9, 距离下一级还需 41 积分
新手上路, 积分 9, 距离下一级还需 41 积分
这个论坛不错,收藏了!
主题帖子积分
这个有什么用呢?
这个是天夏淘宝客的&
主题帖子积分
弱弱的问一句,这个获取来干嘛的
主题帖子积分
新手上路, 积分 22, 距离下一级还需 28 积分
新手上路, 积分 22, 距离下一级还需 28 积分
发个贴不容易,我顶你了,谢了
主题帖子积分
时间可以证明一切,包括真爱!
这个有什么用呢?
这个是天夏淘宝客的
主题帖子积分
新手上路, 积分 43, 距离下一级还需 7 积分
新手上路, 积分 43, 距离下一级还需 7 积分
发个贴不容易,我顶你了,谢了
注册账号后积极发帖的会员
经常参与各类话题的讨论,发帖内容较有主见
经常帮助其他会员答疑
积极宣传本站,为本站带来更多注册会员
积极宣传本站,为本站带来更多的用户访问量
经常在论坛发帖,且发帖量较大
活跃且尽责职守的版主
曾经为论坛做出突出贡献目前已离职的版主
为论坛做出突出贡献的会员
站长推荐 /1
新版卷皮折扣V7.0全新系统,功能强大,高佣活动采集器,定向计划申请工具,优惠券系统与商品系统结合等等多元化系统全新上线,欢迎在线咨询。
Powered byandroid设备唯一码的获取,cpu号,mac地址 - 自由出土文物 - 博客园
抄自http://blog.csdn.net/hpccn/article/details/7872141
开发Android应用中,我们常常需要设备的唯一码来确定客户端。
Android 中的几中方法,使用中常常不可靠
1. DEVICE_ID
假设我们确实需要用到真实设备的标识,可能就需要用到DEVICE_ID。通过 TelephonyManager.getDeviceId()获取,它根据不同的手机设备返回IMEI,MEID或者ESN码.
缺点:在少数的一些设备上,该实现有漏洞,会返回垃圾数据
2. MAC ADDRESS
我们也可以通过Wifi获取MAC ADDRESS作为DEVICE ID
缺点:如果Wifi关闭的时候,硬件设备可能无法返回MAC ADDRESS.。
3. Serial Number
android.os.Build.SERIAL直接读取
缺点:在少数的一些设备上,会返回垃圾数据
4. ANDROID_ID
ANDROID_ID是设备第一次启动时产生和存储的64bit的一个数,
缺点:当设备被wipe后该数改变, 不适用。
android 底层是 Linux,我们还是用Linux的方法来获取:
文件在:&/proc/cpuinfo
通过Adb shell 查看:
adb shell&cat /proc/cpuinfo
2 mac 地址
文件路径&/sys/class/net/wlan0/address
adb shell&&cat&/sys/class/net/wlan0/address & & & & & & & & & & & & & & &&
xx:xx:xx:xx:xx:aa
这样可以获取两者的序列号,&
方法确定,剩下的就是写代码了
以Mac地址为例:
1 private String getMac()
String macSerial = null;
String str = "";
Process pp = Runtime.getRuntime().exec("cat /sys/class/net/wlan0/address ");
InputStreamReader ir = new InputStreamReader(pp.getInputStream());
LineNumberReader input = new LineNumberReader(ir);
for (; null !=)
str = input.readLine();
if (str != null)
macSerial = str.trim();// 去空格
} catch (IOException ex) {
// 赋予默认值
ex.printStackTrace();
return macSAndroid设备唯一码的获取
UTDID是集团无线设备统一ID方案,目的是给每一台设备一个ID,作为唯一标识。UTDID由客户端生成,并在设备中各个客户端之间共享。UTDID的生成中包含时间戳和随机数等,因此重新生成的UTDID值一定是会改变的,UTDID的稳定性强依赖于手机存储,UTDID方案是一个重在持久化存储的方案。
1.老UTDID方案面临的问题
1.1 权限问题
utdid开发手册中是强制需要下面3个权限的:
但是随着6.0的发布和targetSDK使用23编译,很多权限问题都暴露了出来:
1.WRITE_SETTINGS
targetSDK使用23以后,即使申请了WRITE_SETTINGS权限,再想写settings中的数据会抛出了如下异常。
IllegalArgumentException: You cannot keep your settings in the secure settings.
想写Setting.System中的数据也已经没有权限了,即使想修改Settings.Global也需要是应用。
2.READ_PHONE_STATE
targetSDK使用23以后,需要手动授权。imei作为utdid生成字段的其中一部分,在生成utdid时,如果无法获取就使用随机值代替。这个即使不授权问题也不大。
3.WRITE_EXTERNAL_STORAGE
targetSDK使用23以后,需要手动授权。在settings中没有写入utdid的情况下,如果没有WRITE_EXTERNAL_STORAGE权限,应用外部的utdid是无法获得的,内部也没有的情况下,那么utdid势必会重新生成了。
1.2 内、外存储可靠性
如果settings不能保存,那么应用外就需要寄希望于sdcard的存储。除了权限问题会导致sdcard中的数据无法取得外,三方的手机管理工具也会对sdcard中的数据做清除。(utdid外存储目录用AAA,BBB表示)
以360手机卫士为例:
360深度空间清理时,在可安全清理项-&广告垃圾-&将AAA和BBB识别为淘宝应用缓存和阿里网页广告,导致被删除掉。AAA和BBB文件夹下的所以文件和文件夹被会被删除。
个人感觉这些文件的识别是依赖360某些配置的下发,因为在断网并清除360缓存的情况下,是识别不到AAA和BBB的。(360安装包文件被混淆,网络数据被,很难知道真正的实现。)
应用内的存储可靠性就更不用说了,卸载应用或清除应用缓存就直接没有了。
2.Android中一些其它的唯一标识
Android系统中并没有可靠获取所有厂商设备唯一ID的方法,各个方法都有自己的使用范围和局限性,这也是目前流行的Android系统版本过多,设备也是来自不同厂商,且没有统一标准等原因造成的。
2.1 通过Android SDk获取标识
假设我们确实需要用到真实设备的标识,可能就需要用到DEVICE_ID。
在以前,我们的Android设备是手机,这个DEVICE_ID可以同通过getSystemService(Context.TELEPHONY_SERVICE).getDeviceId()获取,它根据不同的手机设备返回IMEI,MEID或者ESN码,但它在使用的过程中会遇到很多问题:
非手机设备:最开始搭载Android系统都手机设备,而现在也出现了非手机设备:如平板电脑、、电视、音乐播放器等。这些设备没有通话的硬件功能,系统中也就没有TELEPHONY_SERVICE,自然也就无法通过上面的方法获得DEVICE_ID。当设备为手机时,返回设备的唯一ID。手机制式为 GSM 时,返回手机的 IMEI 。手机制式为 CDMA 时,返回手机的 MEID 或 ESN 。非电话设备或者 Device ID 不可用时,返回 null .
权限问题:获取DEVICE_ID需要READ_PHONE_STATE权限,如果只是为了获取DEVICE_ID而没有用到其他的通话功能,申请这个权限一来大才小用,二来部分用户会怀疑软件的安全性。 (Android 6.0 以上需要用户手动赋予该权限)
厂商定制系统中的Bug:少数手机设备上,由于该实现有,会返回垃圾,如:zeros或者asterisks
MAC ADDRESS
wifi mac获取方法:
WifiManager wifiManager=(WifiManager) getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo=wifiManager.getConnectionInfo();
String mac=wifiInfo.getMacAddress();
这种方法比较通用,但是最近在Android 6.0系统上,这个方法失效了,返回了&02:00:00:00:00:00&的常量。这并不是一个BUG,在google的博客中找到如下一段话:
Most notably, Local WiFi and Bluetooth MAC addresses are no longer available. The getMacAddress() method of a WifiInfo object and the BluetoothAdapter.getDefaultAdapter().getAddress() method will both return 02:00:00:00:00:00 from now on.
可以考虑使用NetworkInterface.getHardwareAddress。其原理和cat /sys/class/net/wlan0/address是一模一样的,但是这个是上层API,不需要自己处理底层数据,在Android 6.0上测试通过。
NetworkInterface networkInterface = NetworkInterface.getByName(&wlan0&);
byte[] mac = networkInterface.getHardwareAddress();
1.如果重启手机后,Wifi没有打开过,是无法获取其Mac地址的。(可以考虑授予CHANGE_WIFI_STATE权限,开关一次wifi刷一下。)
2.有一些定制系统的目录并不一样。 例如三星的目录为&cat /sys/class/net/eth0/address&,所以是否对所以机型都有效有待验证。(需要适配)
3.网上也有反映mac变更问题,是不是刷mac或者wifi故障导致,也不确定。
4.并不是所有的设备都有Wifi硬件,硬件不存在自然也就得不到这一信息。(这个还好)
5.需要 ACCESS_WIFI_STATE 权限。(这个还好)
设备序列号(Serial Number, SN)
获取办法:
String serialNum = android.os.Build.SERIAL;
装有SIM卡的设备获取办法:getSystemService(Context.TELEPHONY_SERVIEC).getSimSerialNumber();
注意对CDMA设备,返回的是一个空值。
在Android 2.3可以通过android.os.Build.SERIAL获取,非手机设备可以通过该接口获取。
在少数的一些设备上,会返回垃圾数据。对于没有通话功能的设备,它可能会返回一个固定的值。
ANDROID_ID
在设备首次启动时,系统会随机生成一个64位的数字,并把这个数字以16进制字符串的形式保存下来,这个16进制的字符串就是ANDROID_ID,当设备被恢复出厂设置后该值会被重置。可以通过下面的方法获取:
import android.provider.S
String ANDROID_ID = Settings.System.getString(getContentResolver(), Settings.System.ANDROID_ID);
ANDROID_ID可以作为设备标识,但需要注意:
它在Android &=2.1 or Android &=2.3的版本是可靠、稳定的,但在2.2的版本并不是100%可靠的
厂商定制系统的Bug:不同的设备可能会产生相同的ANDROID_ID:e549c。(摩托罗拉好像出现过这个问题)
厂商定制系统的Bug:有些设备返回的值为null。
设备差异:对于CDMA设备,ANDROID_ID和TelephonyManager.getDeviceId() 返回相同的值。
并且,如果某个Andorid手机被Root过的话,这个ID也可以被改变。
2.2 通过命令获取标识
文件路径:/proc/cpuinfo
通过Adb shell 查看:adb shell cat /proc/cpuinfo
但是在Nexus4的Android6.0手机上Serial为0000
rickydeMacBook-Pro:bin ricky$ adb shell cat /proc/cpuinfo
: ARMv7 Processor rev 2 (v7l)
: swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt
CPU implementer : 0x51
CPU architecture: 7
CPU variant : 0x0
CPU revision
: QCT APQ8064 MAKO
文件路径: /sys/class/net/wlan0/address
通过Adb shell 查看:adb shell cat /sys/class/net/wlan0/address
rickydeMacBook-Pro:bin ricky$ adb shell
cat /sys/class/net/wlan0/address
10:68:3f:49:93:7d
3.Android获取手机制作商,系统版本等
我们有时候会需要获取当前手机的系统版本来进行判断,或者需要获取一些当前手机的硬件信息。
3.1 android.os.Build类
android.os.Build类中,包括了这样的一些信息。我们可以直接调用 而不需要添加任何的权限和方法。
android.os.Build.BOARD:获取设备基板名称
android.os.Build.BOOTLOADER:获取设备引导程序版本号
android.os.Build.BRAND:获取设备品牌
android.os.Build.CPU_ABI:获取设备指令集名称(CPU的类型)
android.os.Build.CPU_ABI2:获取第二个指令集名称
android.os.Build.DEVICE:获取设备驱动名称
android.os.Build.DISPLAY:获取设备显示的版本包(在系统设置中显示为版本号)和ID一样
android.os.Build.FINGERPRINT:设备的唯一标识。由设备的多个信息拼接合成。
android.os.Build.HARDWARE:设备硬件名称,一般和基板名称一样(BOARD)
android.os.Build.HOST:设备主机地址
android.os.Build.ID:设备版本号。
android.os.Build.MODEL :获取手机的型号 设备名称。
android.os.Build.MANUFACTURER:获取设备制造商
android:os.Build.PRODUCT:整个产品的名称
android:os.Build.RADIO:无线电固件版本号,通常是不可用的 显示unknown
android.os.Build.TAGS:设备标签。如release-keys 或测试的 test-keys
android.os.Build.TIME:时间
android.os.Build.TYPE:设备版本类型
主要为&user& 或&eng&.
android.os.Build.USER:设备用户名 基本上都为android-build
android.os.Build.VERSION.RELEASE:获取系统版本字符串。如4.1.2 或2.2 或2.3等
android.os.Build.VERSION.CODENAME:设备当前的系统开发代号,一般使用REL代替
android.os.Build.VERSION.INCREMENTAL:系统源代码控制值,一个数字或者git hash值
android.os.Build.VERSION.SDK:系统的API级别 一般使用下面大的SDK_INT 来查看
android.os.Build.VERSION.SDK_INT:系统的API级别 数字表示
3.2 build.prop中获取当前系统属性
在Android系统中,/system/build.prop中含有大量系统相关的信息:
rickydeMacBook-Pro:bin ricky$ adb shell cat /system/build.prop
# begin build properties
# autogenerated by buildinfo.sh
ro.build.id=MDB08M
ro.build.display.id=cm_mako-userdebug 6.0 MDB08M c28ecd9956 test-keys
ro.build.version.incremental=c28ecd9956
ro.build.version.sdk=23
ro.build.version.preview_sdk=0
ro.build.version.codename=REL
ro.build.version.all_codenames=REL
ro.build.version.release=6.0
ro.build.version.security_patch=
ro.build.version.base_os=
ro.build.date=2015年 11月 23日 星期一 17:03:23 CST
ro.build.date.utc=
ro.build.type=userdebug
ro.build.user=moonlight
ro.build.host=moonlight-roms
ro.build.tags=test-keys
ro.build.flavor=cm_mako-userdebug
ro.product.brand=google
ro.product.name=occam
ro.product.board=MAKO
如果有root权限,修改/system/build.prop文件内容,系统相关的信息就会被改变(总会有那么些无聊的人)。因此设备信息的安全级别不高,但是可以作为参考。此外,可以上传一些手机root相关信息做参考(虽然也不是100%有效)。
3.3 关于手机root相关信息采集
可以提供手机root相关信息,作为build.prop有效性的一个参考值。
3.3.1 build.prop中的字段描述
在/system/build.prop中的Build.TAGS字段设备标签。如release-keys 或测试的 test-keys。
test-keys为root手机或第三方ROM
ro.build.type字段设备版本类型。如:user或userdebug等。
3.3.2 su文件是否存在
查看su文件是否存在,可以参考下面代码的检索路径:
&/sbin/su&, &/system/bin/su&, &/system/xbin/su&, &/data/local/xbin/su&, &/data/local/bin/su&, &/system/sd/xbin/su&,&/system/bin/failsafe/su&, &/data/local/su&, &/su/bin/su&
3.3.3 apk检查
查看/system/app/ 下是否存root后常用软件。Kinguser.apk、Superuser.apk等,如:
private boolean hasSuperuserApk() {
return new File(&/system/app/Superuser.apk&).exists();
3.3.4 执行su命令
执行su命令,推荐使用new ProcessBuilder().command(&su&).start() 代替Runtime.getRuntime().exec()实现。Runtime.getRuntime().exec()的执行会有些bug,可以参考(),记得要Process.destroy()。执行su命令,会唤起root授权对话框,在数据上报的场景是不建议使用,体验非常不好。
设备唯一标识码还是以utdid做标识,但是在Android6.0+系统上,外存储权限越来越难获取和越来越不可靠的情况下,除考虑加入LocalSocket和Broadcast等机制做多应用间的utdid同步(问题也很明显)外,必须依赖网络,构建设备ID库来提升设备标识的可靠性。
因此需要考虑在服务器上建立utdid与各设备数据间的对应关系,通过做大规模的适配和数据上报,来解决问题。通过可获得手机参数做服务器请求,服务器的utdid与各设备数据间的对应关系表来寻找最匹配utdid值。
可以考虑的数据关系体系是以Wifi Mac地址、设备序列号、ANDROID_ID为主要基准,配合android.os.Build中手机基本信息为参考(用手机root相关信息采集做修正),DEVICE_ID(用READ_PHONE_STATE权限做修正),常用ip地址等。如果可以的话,还可以参考手机号码、业务登录账号等。目前只是一些初步想法,可行性还有待实际数据验证,方案还在探索阶段。

我要回帖

更多关于 乙肝病毒复制活跃 的文章

 

随机推荐