当前位置:   article > 正文

spark-用户画像demo_spark用户画像

spark用户画像

参考文章:spark-用户画像demon

通过一个demon 来实现简单的用户画像功能(识别用户的性别和年龄段)

数据源包括

  1. app 客户群体信息,包含使用此app客户的年龄分布、性别比例等。
  2. 用户使用不同app的日志

通过用户的使用不同 app 的时间来推断用户的性别和年龄。


配置文件

UserDraw.properties 表示如何解析用户使用app 日志

  1. #用户画像配置文件:
  2. ################################
  3. #字段分隔符号
  4. Separator=\\|
  5. #日期
  6. Date=11
  7. #手机号
  8. MDN=0
  9. #appID
  10. appID=15
  11. #计数
  12. count=1
  13. #使用时长
  14. ProcedureTime=12

UserDrawConfig.java

将properties 文件解析为 config 类

  1. package com.river.userdraw;
  2. import cn.hutool.setting.Setting;
  3. import lombok.Data;
  4. import lombok.ToString;
  5. import java.io.Serializable;
  6. /**
  7. * @author riverfan
  8. * 必须序列化,不然就会出错
  9. */
  10. @Data
  11. @ToString
  12. public class UserDrawConfig implements Serializable {
  13. public String Separator;
  14. public Integer dateIndex ;
  15. public Integer mdnIndex ;
  16. public Integer appIDIndex ;
  17. public Integer countIndex ;
  18. public Long procedureTimeIndex ;
  19. public static UserDrawConfig getInstance(){
  20. UserDrawConfig userDrawConfig = new UserDrawConfig();
  21. Setting setting = new Setting("UserDraw.properties");
  22. userDrawConfig.setSeparator(setting.get("Separator"));
  23. userDrawConfig.setDateIndex(Integer.valueOf(setting.get("Date")));
  24. userDrawConfig.setMdnIndex(Integer.valueOf(setting.get("MDN")));
  25. userDrawConfig.setAppIDIndex(Integer.valueOf(setting.get("appID")));
  26. userDrawConfig.setCountIndex(Integer.valueOf(setting.get("count")));
  27. userDrawConfig.setProcedureTimeIndex(Long.valueOf(setting.get("ProcedureTime")));
  28. return userDrawConfig;
  29. }
  30. }

UserDrawVo.java

用户的画像信息(算法比较简单)

  1. package com.river.userdraw;
  2. import lombok.Data;
  3. import lombok.NoArgsConstructor;
  4. import lombok.ToString;
  5. import java.io.Serializable;
  6. /**
  7. * 用户画像的结果
  8. * @author riverfan*/
  9. @Data
  10. @NoArgsConstructor
  11. @ToString
  12. public class UserDrawVo implements Serializable {
  13. private String statTimeDay;
  14. private String MDN;
  15. private double male;
  16. private double female;
  17. private double age1;
  18. private double age2;
  19. private double age3;
  20. private double age4;
  21. private double age5;
  22. /** 性别融合 */
  23. public void protraitSex(double male2, double female2, long times) {
  24. double sum = (this.male + this.female + (male2 + female2) * times);
  25. if(sum != 0){
  26. this.male = (this.male + male2 * times) / sum;
  27. this.female = (this.female + female2 * times) / sum;
  28. }
  29. }
  30. /** 年龄段融合 */
  31. public void protraitAge(double pAge1, double pAge2, double pAge3, double pAge4, double pAge5, long times) {
  32. double sum = (age1 + age2 + age3 + age4 + age5 )
  33. + (pAge1 + pAge2 + pAge3 + pAge4 + pAge5 ) * times;
  34. if(sum != 0){
  35. this.age1 = (pAge1 * times + age1) / sum;
  36. this.age2 = (pAge2 * times + age2) / sum;
  37. this.age3 = (pAge3 * times + age3) / sum;
  38. this.age4 = (pAge4 * times + age4) / sum;
  39. this.age5 = (pAge5 * times + age5) / sum;
  40. }
  41. }
  42. /** 初始化男女概率 */
  43. public void initSex(float male, float female) {
  44. float sum = male + female;
  45. if(sum != 0){
  46. this.male = male / sum;
  47. this.female = female / sum;
  48. }
  49. }
  50. /** 初始化年龄段概率 */
  51. public void initAge(float pAge1, float pAge2, float pAge3, float pAge4, float pAge5) {
  52. float sum = pAge1 + pAge2 + pAge3 + pAge4 + pAge5;
  53. if(sum != 0){
  54. this.age1 = pAge1 / sum;
  55. this.age2 = pAge2 / sum;
  56. this.age3 = pAge3 / sum;
  57. this.age4 = pAge4 / sum;
  58. this.age5 = pAge5 / sum;
  59. }
  60. }
  61. // 创建画像数据
  62. public UserDrawVo(UserInfoVo userInfoVo,
  63. float male, float female,
  64. float age1, float age2, float age3, float age4, float age5) {
  65. this.statTimeDay = userInfoVo.getNow();
  66. this.MDN = userInfoVo.getMobile();
  67. this.age1 = age1;
  68. this.age2 = age2;
  69. this.age3 = age3;
  70. this.age4 = age4;
  71. this.age5 = age5;
  72. // 初始化
  73. initAge(age1, age2, age3, age4, age5);
  74. initSex(male, female);
  75. }
  76. }

UserInfoVo.java

用户使用app的信息

  1. package com.river.userdraw;
  2. import lombok.Data;
  3. import lombok.ToString;
  4. import java.io.Serializable;
  5. /**
  6. * @author riverfan
  7. */
  8. @Data
  9. @ToString
  10. public class UserInfoVo implements Serializable {
  11. private String now;
  12. private String mobile;
  13. private String appId;
  14. private Long num;
  15. private Long userTime;
  16. }

AppUserWeightVo.java

app的用户信息(性别和年龄段)

  1. package com.river.userdraw;
  2. import lombok.AllArgsConstructor;
  3. import lombok.Data;
  4. /**
  5. * @author riverfan
  6. */
  7. @Data
  8. @AllArgsConstructor
  9. public class AppUserWeightVo {
  10. private String appId;
  11. private String favourite;
  12. private Float male;
  13. private Float female;
  14. private Float age1;
  15. private Float age2;
  16. private Float age3;
  17. private Float age4;
  18. private Float age5;
  19. }

UserDrawDemon.java

main function

  1. package com.river.userdraw;
  2. import com.google.common.base.Charsets;
  3. import com.google.common.base.Splitter;
  4. import com.google.common.collect.Maps;
  5. import com.google.common.io.Files;
  6. import org.apache.commons.lang.StringUtils;
  7. import org.apache.spark.SparkConf;
  8. import org.apache.spark.api.java.JavaSparkContext;
  9. import scala.Tuple2;
  10. import java.io.File;
  11. import java.io.IOException;
  12. import java.text.SimpleDateFormat;
  13. import java.util.*;
  14. import java.util.stream.Collectors;
  15. /**
  16. * @author riverfan
  17. */
  18. public class UserDrawDemon {
  19. private static final Splitter SPLITTER = Splitter.on('|');
  20. public static void main(String[] args) throws IOException {
  21. UserDrawConfig userDrawConfig = UserDrawConfig.getInstance();
  22. System.out.println(userDrawConfig);
  23. SparkConf conf = new SparkConf();
  24. conf.setAppName("UserDrawDemon");
  25. //设置master属性
  26. conf.setMaster("local[2]");
  27. JavaSparkContext sc = new JavaSparkContext(conf);
  28. String userdataFile = "/Users/riverfan/mytest/spark/userDraw/userdata.txt";
  29. File file = new File("/Users/riverfan/mytest/spark/userDraw/appTab.txt");
  30. //读取文件 内容比较少 所以直接读取了
  31. Map<String, AppUserWeightVo> appMap = Files.readLines(file, Charsets.UTF_8)
  32. .stream()
  33. .map(t -> {
  34. List<String> list = SPLITTER.splitToList(t);
  35. return new AppUserWeightVo(
  36. list.get(0),
  37. list.get(1),
  38. Float.parseFloat(list.get(2)),
  39. Float.parseFloat(list.get(3)),
  40. Float.parseFloat(list.get(4)),
  41. Float.parseFloat(list.get(5)),
  42. Float.parseFloat(list.get(6)),
  43. Float.parseFloat(list.get(7)),
  44. Float.parseFloat(list.get(8)));
  45. }).collect(Collectors.toMap(AppUserWeightVo::getAppId, t -> t));
  46. Map<String, UserDrawVo> userDrawMap = Maps.newHashMap();
  47. sc.textFile(userdataFile)
  48. .map(t -> {
  49. List<String> list = SPLITTER.splitToList(t);
  50. String now = list.get(userDrawConfig.getDateIndex());
  51. UserInfoVo userInfoVo = new UserInfoVo();
  52. userInfoVo.setNow(new SimpleDateFormat("yyyyMMdd").format(Long.parseLong(now)));
  53. userInfoVo.setMobile(list.get(userDrawConfig.getMdnIndex()));
  54. userInfoVo.setAppId(list.get(userDrawConfig.getAppIDIndex()));
  55. userInfoVo.setNum(new Long(1));
  56. userInfoVo.setUserTime(userDrawConfig.getProcedureTimeIndex());
  57. return userInfoVo;
  58. })// MDN + appID
  59. .mapToPair(s -> new Tuple2<>(s.getMobile() + s.getAppId(), s))
  60. .reduceByKey((v1, v2) -> {
  61. v1.setNum(v1.getNum() + v2.getNum());
  62. v1.setUserTime(v1.getUserTime() + v2.getUserTime());
  63. return v1;
  64. }).filter(s -> StringUtils.isNotBlank(s._2.getAppId()))
  65. .collectAsMap()
  66. .forEach((k, v) -> {
  67. //如果不包含 app id 就不统计
  68. if (!appMap.containsKey(v.getAppId())) {
  69. return;
  70. }
  71. AppUserWeightVo appUserWeightVo = appMap.get(v.getAppId());
  72. // 没有在统计的 app 里 也不统计
  73. if (appUserWeightVo == null) {
  74. return;
  75. }
  76. //初次统计,需要初始化信息
  77. if (!userDrawMap.containsKey(v.getMobile())) {
  78. userDrawMap.put(v.getMobile(), new UserDrawVo(v, appUserWeightVo.getMale(),
  79. appUserWeightVo.getFemale(), appUserWeightVo.getAge1(),
  80. appUserWeightVo.getAge2(), appUserWeightVo.getAge3(),
  81. appUserWeightVo.getAge4(), appUserWeightVo.getAge5()));
  82. return;
  83. }
  84. UserDrawVo userDrawVo = userDrawMap.get(v.getMobile());
  85. // 性别权重
  86. userDrawVo.protraitSex(appUserWeightVo.getMale(), appUserWeightVo.getFemale(), v.getNum());
  87. // 年龄段权重
  88. userDrawVo.protraitAge(appUserWeightVo.getAge1(), appUserWeightVo.getAge2(), appUserWeightVo.getAge3(), appUserWeightVo.getAge4(), appUserWeightVo.getAge5(), v.getNum());
  89. });
  90. // 遍历打印 结果
  91. userDrawMap.forEach((k, v) -> System.out.println(k + " " + v + " " + Thread.currentThread()));
  92. }
  93. }

appTab.txt

这里贴出部分数据

  1. 10001|QQ|0.001|0.001|0|0.2|0.3|0.2|0.3
  2. 10002|飞信|0.001|0.001|0|0.2|0.3|0.2|0.3
  3. 10003|MSN|0.001|0.001|0|0.2|0.3|0.2|0.3
  4. 10004|阿里旺旺|0.001|0.001|0|0.2|0.3|0.2|0.3
  5. 10005|微信|0.001|0.001|0|0.2|0.3|0.2|0.3
  6. 10006|陌陌|0.001|0.001|0|0.2|0.3|0.2|0.3
  7. 10007|米聊|0.001|0.001|0|0.2|0.3|0.2|0.3
  8. 10008|啪啪|0.001|0.001|0|0.2|0.3|0.2|0.3
  9. 10009|飞聊|0.001|0.001|0|0.2|0.3|0.2|0.3
  10. 10010|来往|0.001|0.001|0|0.2|0.3|0.2|0.3
  11. 10011|连我|0.001|0.001|0|0.2|0.3|0.2|0.3
  12. 10012|有你|0.001|0.001|0|0.2|0.3|0.2|0.3
  13. 10013|Kakao Talk|0.001|0.001|0|0.2|0.3|0.2|0.3
  14. 10014|Whatsapp|0.001|0.001|0|0.2|0.3|0.2|0.3
  15. 10015|比邻|0.001|0.001|0|0.2|0.3|0.2|0.3
  16. 20016|新浪读书|0.001|0.001|0.1|0.3|0.3|0.2|0.1
  17. 20017|潇湘书院|0.001|0.001|0.1|0.3|0.3|0.2|0.1
  18. 20018|红袖添香|0.001|0.001|0.1|0.3|0.3|0.2|0.1
  19. 20019|纵横中文网|0.001|0.001|0.1|0.3|0.3|0.2|0.1
  20. 20020|掌上书院|0.001|0.001|0.1|0.3|0.3|0.2|0.1
  21. 20021|和阅读|0.001|0.001|0.1|0.3|0.3|0.2|0.1
  22. 20022|掌阅iReader|0.001|0.001|0.1|0.3|0.3|0.2|0.1
  23. 20023|QQ阅读|0.001|0.001|0.1|0.3|0.3|0.2|0.1
  24. 20024|百阅|0.001|0.001|0.1|0.3|0.3|0.2|0.1
  25. 20025|塔读小说|0.001|0.001|0.1|0.3|0.3|0.2|0.1
  26. 20026|Flipboard|0.001|0.001|0.1|0.3|0.3|0.2|0.1
  27. 20027|zaker|0.001|0.001|0.1|0.3|0.3|0.2|0.1
  28. 20028|viva畅读|0.001|0.001|0.1|0.3|0.3|0.2|0.1
  29. 20029|鲜果|0.001|0.001|0.1|0.3|0.3|0.2|0.1
  30. 20030|安卓读书|0.001|0.001|0.1|0.3|0.3|0.2|0.1
  31. 20031|云中书城|0.001|0.001|0.1|0.3|0.3|0.2|0.1
  32. 20032|百度多酷书城|0.001|0.001|0.1|0.3|0.3|0.2|0.1
  33. 20033|阅读星|0.001|0.001|0.1|0.3|0.3|0.2|0.1

userdata.txt

  1. NXxY3tn5XsuFcyzEw8qP8g==|1|100.88.255.208|100.88.184.53|2152|2152|204409856|61650535|18320|81244939|CMNET.MNC002.MCC460.GPRS|1471017931598|23|1|33|330400|1|0|10.32.244.101||43785|0|111.20.242.48||80|724|3718|2|tb.himg.baidu.com|/sys/portraitn/item/e5047a6875313233343531322005||bdtb for Android 7.6.2|image/jpeg|||2912|0||||0|0|255|4006|40060044|500-1000|||2055|116.09607|43.93931|290||4||
  2. +/rmMLtMV+s+gXTDoOaoxQ==|1|100.88.255.71|100.88.189.2|2152|2152|591531008|94392194|18332|102254743|CMNET.MNC002.MCC460.GPRS|1471017991701|0|1|22|220499|9|2|10.227.101.43||46881|0|221.179.178.55||80|941|0|2|api.k.sohu.com|/api/search/v6/hotwords.go?p1=NjA3ODAyMDQwNzQ2OTE5MTIyMw%3D%3D&gid=02ffff1106111119083a8e0ea593b8499ea08bb678c010&pid=-1&apiVersion=35||SohuNews/5.6.0 BuildCode/106||||0|0||||2|0|255|4004|40040016|500-1000|||2728|118.40116|44.72021|100||2||
  3. pRxqXdxHty8oF2NGI/1tNg==|1|100.88.255.208|100.88.190.53|2152|2152|119344128|50899859|18330|82579980|CMNET.MNC002.MCC460.GPRS|1471017987354|80|1|05|050057|9|0|10.30.127.160||50041|0|112.17.1.185||80|642|736|2|pdata.video.iqiyi.com|/k||HCDNClient 10.1.1.22|text/html|||204|0||||0|0|255|4006|40060006|1000-2000|||438|115.98773|42.24422|||4||
  4. H5pNI1xm1wt3Pyf9E9jY5A==|1|100.88.255.201|100.88.185.60|2152|2152|205720576|15470633|18322|81278732|cmnet.MNC002.MCC460.GPRS|1471017857513|115|1|||0|0|10.243.34.147||39828|0|120.55.238.158||80|1116|444|2|service.inke.com|/push/uploadreg?lc=3000000000006914&cv=IK3.0.10_Android&cc=TG36014&ua=OPPON5117&uid=93689652&sid=20SOWbfAka5AoaL5kOUFEM71i2KgOs5eQIIUvdvV3ZIri2lq364i3&devi=864181026876857&imsi=460023493374680&imei=864181026876857&icc=89860024057959334680&conn=3G&vv=1.0.3-2016060211417.android&aid=ea3e31e1e8ab9355&osversion=android_18&proto=4&smid=DurbqHt8FwJFZeL87THICCZ/nKLie60/XuxmCuf0hpN7ndKXFoEPPsVBm+xkH5KI/kL1ZTcEPnkj8Vud5EbIyyVA&type=1&cid=f7b9b9c6693f122591f2cad40c934ff3|||application/json; charset=UTF-8||aliyungf_tc=AQAAAIU2jCR4RwwA+A9o33sXrNFMz38r|56|0||||0|0|255|4006|40060022|1000-2000||||116.07379|43.93334|200||4||
  5. TiasbUQxuUzZjXSFuW770w==|1|100.88.255.200|100.88.190.122|2152|2152|189795328|165711827|18330|102303641|CMNET.MNC007.MCC460.GPRS|1471017993459|3338|1|01|010005|5|0|10.108.49.172||55815|0|112.29.151.173||80|3877|44982|2|mmbiz.qpic.cn|/mmbiz/iabDCicNdsqqo3Xv0p35QHbRzeILGW2cpkBfylwspiaTQBRj5LLEyiaobibELKicIsEez2nKlTaaZhrNXUqIoCZdia5mA/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1||Mozilla/5.0 (Linux; Android 6.0.1; SM-G9280 Build/MMB29K) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/37.0.0.0 Mobile MQQBrowser/6.2 TBS/036555 Safari/537.36 MicroMessenger/6.3.23.840 NetType/cmnet Language/zh_CN|image/webp|http://mp.weixin.qq.com/s?__biz=MzA5MTU0NzU0Mg==&mid=2651333827&idx=1&sn=cd21c8aec05fd5bb224ce09ec0c7d829&scene=1&srcid=0811sEb||41944|0||||0|2|255|4002|40020166|4000-5000|||191|115.99189|42.23195|551||4||
  6. qxNdolFZp8i/nmaZPf+ZGw==|1|100.88.255.73|100.88.188.18|2152|2152|212405248|111460711|18322|81235991|CMNET.MNC002.MCC460.GPRS|1471017977218|33797|1|15|151740|8|0|10.229.97.204||48616|0|111.56.13.202||80|772|984|2|trace-ldns.ksyun.com|/getlocaldns||Dalvik/2.1.0 (Linux; U; Android 5.0.2; Letv X501 Build/DAXCNCU5501304131S)||||0|0||||0|0|255||||||5576|116.05452|43.93629|471||4||
  7. GtfeQucYxTd0i6xIiFdw8w==|1|100.88.255.201|100.88.191.114|2152|2152|86510597|24685822|18331|102119319|CMNET.MNC002.MCC460.GPRS|1471017996695|101|1|01|010005|5|0|10.107.114.81||47650|0|111.30.135.151||8080|830|1589|2|dns.weixin.qq.com|/cgi-bin/micromsg-bin/newgetdns?uin=2740428538&clientversion=637736507&scene=0&net=2&md5=02d8691b08787fbbb9fd3ba88c887619&devicetype=android-21&lan=zh_CN&sigver=2||MicroMessenger Client||||1117|0||||0|0|255|4004|40040028|1000-2000|||195|116.38459|42.07039|220||4||
  8. A0pF8zX4LzPPKdkGzCmc0Q==|1|100.88.255.208|100.88.189.238|2152|2152|43518976|81048915|18327|81350411|CMNET.MNC000.MCC460.GPRS|1471017987306|130|1|||2|0|10.145.75.52||33196|0|42.62.119.101||80|1221|451|2|l.fastapi.net|/imp?e=wk7iY42ajGFix6XD6L8UbArH_efTnuBbC38KNTiu7ItACJ3CV-8z3Y8y4qyaIh31PmM.4.69cf3a09&pid=1010231.98-25.1pof3pf.3c7i7.2.obt0qp.0180&sid=1010231||Mozilla/5.0 (Linux; U; Android 4.3; zh-cn; R6007 Build/JLS36C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 IqiyiApp/iqiyi IqiyiVersion/7.5.1|text/plain; charset=utf-8|http://static.atm.youku.com/idea/201511/1130/97900/640100.html|cid=1eb90739dbd965599ebb57f49c0cc352|0|0||||0|0|255|4006|40060028|1000-2000||||115.27138|41.89878|100||4||
  9. wApjYCPRGpDb2XPhiEzzlA==|1|100.88.255.209|100.88.189.106|2152|2152|228854784|150762283|18326|81297165|CMNET.MNC002.MCC460.GPRS|1471018008089|56|1|05|050054|1|0|10.33.156.190||57476|0|221.181.202.196||80|645|605|2|antileech.cde.letv.com|/time?timestamp=1471018003||SuperNode Downloader/0.9.83|text/html|||22|0||||0|0|255|4017|40170003|1000-2000|||424|117.60531|44.57987|250||4||
  10. KGbfFXK0Hu6LIjhQjhkM0g==|1|100.88.255.201|100.88.187.176|2152|2152|240978944|37534175|18325|82640139|CMNET.MNC000.MCC460.GPRS|1471017996321|470|1|32|320291|0|0|10.244.24.42||52263|0|111.13.46.241||80|1247|12998|2|car3.autoimg.cn|/cardfs/product/g20/M10/2C/26/t_autohomecar__wKgFWVarOeqAb3XkAAa3cO-Bhh4412.jpg||Dalvik/1.6.0 (Linux; U; Android 4.4.2; CHM-TL00H Build/HonorCHM-TL00H)|image/jpeg|http://www.autohome.com.cn||11700|0||||0|0|255|4003|40030023|500-1000|||1358|118.65904|44.95267|100||3||
  11. |1|100.88.255.209|100.88.190.133|2152|2152|1182720|156768725|18326|102303129|CMNET.MNC000.MCC460.GPRS|1471017987255|186|1|06|060494|8|0|10.147.216.5||36772|0|61.236.251.38||80|1689|764|2|ws.stream.kg.qq.com|/vcloud1021.tc.qq.com/1021_d888552cc1104af7ae1a43d0e9a40153.f1110.m4a?vkey=017AFF7BC246EF6DC0B05AE8070E8B3D8F3E64F7F66CD6D5465529C4B4A3DB2BC52C0AC3DAA1A4C6&sha=98b29195f7ef2c7dc96f5464930f973e1b92215b&ocid=123456&fromtag=1407&sdtfrom=v1407||Mozilla/5.0 (Linux; Android 4.4.4; OPPO R7 Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/37.0.0.0 Mobile MQQBrowser/6.2 TBS/036555 Safari/537.36 MicroMessenger/6.3.22.821 NetType/cmnet Language/zh_CN||http://kg.qq.com/share.html?s=7eTJJwb1BRSZ&from=timeline&isappinstalled=0|network=1; ugc=0DdrQhhj21pm; downtime=3336; playtime=8; sd_user|0|0||||0|2|255|4006|40060029|1000-2000|||2718|117.60377|44.59532|||0||
  12. EshDtEikJHum4g1jv/Gl+Q==|1|100.88.255.209|100.88.187.109|2152|2152|207686656|128506337|18333|82631691|CMNET.MNC002.MCC460.GPRS|1471017977472|99|1|||3|0|10.146.16.116||57305|0|111.56.13.161||80|637|8204|2|tva1.sinaimg.cn|/crop.0.0.290.290.180/770170f2jw8edmz6ukhxcj208208274h.jpg||Weibo/763 CFNetwork/758.2.8 Darwin/15.0.0|image/jpeg|||6964|0||||0|0|255|4001|40010007|5000以上||||113.83938|42.24013|471||3||
  13. gCTO9LWDJsWIpRw6J0ER6A==|1|100.88.255.199|100.88.188.49|2152|2152|63114240|52723851|18320|81259021|CMNET.MNC002.MCC460.GPRS|1471017876808|106|1|||0|0|10.244.12.72||41765|0|183.232.231.44||80|1344|886|2|loc.map.baidu.com|/sdk.php||Apache-HttpClient/UNAVAILABLE (java 1.4)|application/x-www-form-urlencoded; charset=utf-8|||583|0||||0|0|255|4168|41680001|500以内||||116.07533|43.97105|200||0||
  14. EELOzFVL3oJ4hVS32YRFDw==|1|100.88.255.73|100.88.185.45|2152|2152|8850432|40398154|18322|81326604|CMNET.MNC002.MCC460.GPRS|1471017971808|3241|1|01|010006|0|0|10.230.21.130||48288|0|111.56.32.71||80|1156|7539|2|img.momocdn.com|/album/9B/42/9B42943D-C7EE-8E86-CB9D-93700699FFE820160607_S.jpg||MomoChat/6.11 Android/826 (vivo Y33; Android 5.0; Gapps 1; zh_CN; 27; vivo)|image/jpeg||SESSIONID=F83ABA4B-596B-31ED-288E-F564D7346107|6067|0||||0|0|255|4007|40070035|500-1000|||223|116.03031|43.91917|471||3||
  15. SM+E6+k/6tXptSjOZHkOHg==|1|100.88.255.71|100.88.188.121|2152|2152|34737152|102766724|18322|81261067|CMNET.MNC002.MCC460.GPRS|1471017996443|342|40|01|010005|4|0|10.234.70.87||60473|0|111.7.162.159||14000|2095|22776|2|m.qpic.cn|/psb?/V10c06XQ208Vpb/iBAfjsXJyWEUdcVJLq40FNT1pnNYJwpy5cfJcpSgqfg!/m/dAcBAAAAAAAA&ek=1&kp=1&pt=0&bo=fgLAAwAAAAAAAJk!&t=5&su=0106716721||QQ/6.5.3.410 CFNetwork/758.5.3 Darwin/15.6.0|image/webp|v1_iph_sq_6.5.3_1_app_a-0-4||21268|0||||0|0|255|4001|40010005|5000以上|||193|116.07096|43.91724|371||4||

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/453170?site
推荐阅读
相关标签
  

闽ICP备14008679号