Commit 8e3c56ee4ebfbda5551ce3d32e50c3a4f571814d

Authored by PurelzMgnead
1 parent 965b4941

添加ip

Showing 28 changed files with 443 additions and 36 deletions

Too many changes to show.

To preserve performance only 28 of 30 files are displayed.

src/main/java/com/canrd/webmagic/config/MybatisPlusConfig.java
1 1 package com.canrd.webmagic.config;
2 2  
  3 +import com.baomidou.mybatisplus.annotation.DbType;
  4 +import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
  5 +import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
  6 +import org.mybatis.spring.annotation.MapperScan;
  7 +import org.springframework.context.annotation.Bean;
3 8 import org.springframework.context.annotation.Configuration;
  9 +import org.springframework.transaction.annotation.EnableTransactionManagement;
4 10  
5   -
  11 +@EnableTransactionManagement
6 12 @Configuration
  13 +@MapperScan("com.canrd.webmagic.mapper")
7 14 public class MybatisPlusConfig {
8   -
9   -}
  15 + /**
  16 + *
  17 + * @return
  18 + */
  19 + @Bean
  20 + public MybatisPlusInterceptor addPaginationInnerInterceptor(){
  21 + MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
  22 + PaginationInnerInterceptor innerInterceptor = new PaginationInnerInterceptor(DbType.MYSQL);
  23 + interceptor.addInnerInterceptor(innerInterceptor);
  24 + return interceptor;
  25 + }
  26 +}
10 27 \ No newline at end of file
... ...
src/main/java/com/canrd/webmagic/config/MybatisplusObjectMetaHandler.java
1   -package com.gec.tra.system.config;
2   -
3   -import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
4   -import org.apache.ibatis.reflection.MetaObject;
5   -import org.springframework.stereotype.Component;
6   -
7   -import java.util.Date;
8   -
9   -
10   -// 做自动填充 工具类
11   -// mp 讲过 大家可以翻之前视频
12   -@Component
13   -public class MybatisplusObjectMetaHandler implements MetaObjectHandler {
14   -
15   -
16   - // mp 在执行添加的时候,这个方法会被执行
17   - @Override
18   - public void insertFill(MetaObject metaObject) {
19   -
20   - this.setFieldValByName("createDate",new Date(),metaObject);
21   -
22   - }
23   -
24   - // mp 在执行修改的时候,这个方法会执行
25   - @Override
26   - public void updateFill(MetaObject metaObject) {
27   - this.setFieldValByName("updateDate",new Date(),metaObject);
28   -
29   - }
30   -}
31 1 \ No newline at end of file
  2 +//package com.canrd.webmagic.config;
  3 +//
  4 +//import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
  5 +//import org.apache.ibatis.reflection.MetaObject;
  6 +//import org.springframework.stereotype.Component;
  7 +//
  8 +//import java.util.Date;
  9 +//
  10 +//
  11 +//@Component
  12 +//public class MybatisplusObjectMetaHandler implements MetaObjectHandler {
  13 +// @Override
  14 +// public void insertFill(MetaObject metaObject) {
  15 +// this.setFieldValByName("createDate",new Date(),metaObject);
  16 +// }
  17 +//
  18 +// @Override
  19 +// public void updateFill(MetaObject metaObject) {
  20 +// this.setFieldValByName("updateDate",new Date(),metaObject);
  21 +// }
  22 +//}
32 23 \ No newline at end of file
... ...
src/main/java/com/canrd/webmagic/controller/IPUqiDataController.java 0 → 100644
  1 +package com.canrd.webmagic.controller;
  2 +
  3 +import com.canrd.webmagic.common.constant.ServerResult;
  4 +import com.canrd.webmagic.processor.IPUqiDataProcessor;
  5 +import com.canrd.webmagic.processor.ScienginePcoessor;
  6 +import com.canrd.webmagic.processor.download.SeleniumDownloader;
  7 +import com.canrd.webmagic.processor.pipeline.ArticlePipeline;
  8 +import io.swagger.annotations.Api;
  9 +import io.swagger.annotations.ApiOperation;
  10 +import org.apache.logging.log4j.core.util.UuidUtil;
  11 +import org.springframework.web.bind.annotation.GetMapping;
  12 +import org.springframework.web.bind.annotation.RequestMapping;
  13 +import org.springframework.web.bind.annotation.RestController;
  14 +import us.codecraft.webmagic.Request;
  15 +import us.codecraft.webmagic.Spider;
  16 +
  17 +import javax.annotation.Resource;
  18 +@RestController
  19 +@RequestMapping("/uqidata/ip")
  20 +@Api("IP-Uqidata")
  21 +public class IPUqiDataController {
  22 + @Resource
  23 + private IPUqiDataProcessor ipUqiDataProcessor;
  24 +
  25 + @Resource
  26 + private SeleniumDownloader seleniumDownloader;
  27 +
  28 +
  29 + @GetMapping("/start")
  30 + @ApiOperation("start")
  31 + public ServerResult start() {
  32 + Spider.create(ipUqiDataProcessor)
  33 + .setUUID(UuidUtil.getTimeBasedUuid().toString())
  34 + .addRequest(new Request("https://ip.uqidata.com/freeip-0.html"))
  35 + .setDownloader(seleniumDownloader)
  36 + .thread(1).run();
  37 + return ServerResult.success();
  38 + }
  39 +}
... ...
src/main/java/com/canrd/webmagic/controller/IpCheckController.java 0 → 100644
  1 +package com.canrd.webmagic.controller;
  2 +
  3 +import com.canrd.webmagic.common.constant.ServerResult;
  4 +import com.canrd.webmagic.domain.dto.IpDO;
  5 +import com.canrd.webmagic.service.IpService;
  6 +import com.canrd.webmagic.util.PingUtil;
  7 +import io.swagger.annotations.Api;
  8 +import org.springframework.web.bind.annotation.GetMapping;
  9 +import org.springframework.web.bind.annotation.PathVariable;
  10 +import org.springframework.web.bind.annotation.RequestMapping;
  11 +import org.springframework.web.bind.annotation.RestController;
  12 +
  13 +import javax.annotation.Resource;
  14 +import java.util.Date;
  15 +import java.util.List;
  16 +import java.util.concurrent.atomic.AtomicInteger;
  17 +
  18 +@RestController
  19 +@RequestMapping("/ip")
  20 +@Api("Ip-Check")
  21 +public class IpCheckController {
  22 + @Resource
  23 + private IpService ipService;
  24 +
  25 + @GetMapping("/getIpById/{id}")
  26 + public ServerResult getIpById(@PathVariable int id){
  27 + IpDO ip = ipService.getById(id);
  28 + return ServerResult.success(ip);
  29 + }
  30 +
  31 + @GetMapping("/getIps")
  32 + public ServerResult getIps(){
  33 + List<IpDO> ipList = ipService.findAll();
  34 + return ServerResult.success(ipList);
  35 + }
  36 +
  37 + @GetMapping("/checkIps")
  38 + public ServerResult checkIps(){
  39 + List<IpDO> ipList = ipService.findAll();
  40 + AtomicInteger error= new AtomicInteger();
  41 + AtomicInteger success= new AtomicInteger();
  42 + ipList.forEach(ip-> {
  43 + if (!PingUtil.ping(ip.getIp(),4,3000)) {
  44 + ip.setIsUse(1);
  45 + ip.setDetectionTime(new Date());
  46 + ipService.updateById(ip);
  47 + error.addAndGet(1);
  48 + }else {
  49 + success.addAndGet(1);
  50 + }
  51 + });
  52 + String mes ="本次检测,存活ip数为"+success+",失活ip数为"+error;
  53 + return ServerResult.success(mes);
  54 + }
  55 +
  56 + @GetMapping("/randomIp")
  57 + public ServerResult randomIp(){
  58 + List<IpDO> ip = ipService.findAll();
  59 + int size = ip.size();
  60 + int ran = (int) (Math.random() * size-1);
  61 + IpDO ipDO = ip.get(ran);
  62 + return ServerResult.success(ipDO);
  63 + }
  64 +}
... ...
src/main/java/com/canrd/webmagic/controller/SciengineController.java
... ... @@ -35,7 +35,7 @@ public class SciengineController {
35 35 .setUUID(UuidUtil.getTimeBasedUuid().toString())
36 36 .addRequest(new Request("https://www.sciengine.com/plat/search?queryField_a=battery"))
37 37 .addPipeline(articlePipeline)
38   - .thread(20).run();
  38 + .thread(60).run();
39 39 return ServerResult.success();
40 40 }
41 41 }
... ...
src/main/java/com/canrd/webmagic/domain/dto/IpDO.java 0 → 100644
  1 +package com.canrd.webmagic.domain.dto;
  2 +
  3 +import com.baomidou.mybatisplus.annotation.TableName;
  4 +import lombok.*;
  5 +import lombok.experimental.SuperBuilder;
  6 +
  7 +import java.util.Date;
  8 +
  9 +@TableName("ip")
  10 +@Data
  11 +public class IpDO{
  12 + private int id;
  13 + private String ip;
  14 + private int port;
  15 + private String type;
  16 + private String anonymity;
  17 + private String region;
  18 + private String speed;
  19 + private Date detectionTime;
  20 + private int isUse;
  21 +}
... ...
src/main/java/com/canrd/webmagic/mapper/IpMapper.java 0 → 100644
  1 +package com.canrd.webmagic.mapper;
  2 +
  3 +import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  4 +import com.canrd.webmagic.domain.dto.IpDO;
  5 +
  6 +import java.util.List;
  7 +
  8 +public interface IpMapper extends BaseMapper<IpDO> {
  9 + List<IpDO> findAll();
  10 +}
... ...
src/main/java/com/canrd/webmagic/processor/IPUqiDataProcessor.java 0 → 100644
  1 +package com.canrd.webmagic.processor;
  2 +
  3 +import com.canrd.webmagic.domain.dto.IpDO;
  4 +import lombok.extern.slf4j.Slf4j;
  5 +import org.springframework.stereotype.Component;
  6 +import us.codecraft.webmagic.Page;
  7 +import us.codecraft.webmagic.Request;
  8 +import us.codecraft.webmagic.Site;
  9 +import us.codecraft.webmagic.processor.PageProcessor;
  10 +import us.codecraft.webmagic.selector.Html;
  11 +import us.codecraft.webmagic.selector.Selectable;
  12 +
  13 +import java.util.ArrayList;
  14 +import java.util.Arrays;
  15 +import java.util.Collection;
  16 +import java.util.List;
  17 +
  18 +@Component
  19 +@Slf4j
  20 +public class IPUqiDataProcessor implements PageProcessor {
  21 + private static int index = 0;
  22 +
  23 + @Override
  24 + public void process(Page page) {
  25 + String url = page.getUrl().get();
  26 + if (url.contains("https://ip.uqidata.com/freeip-") && index == 0) {
  27 + getMaxPage(page);
  28 + } else if (url.contains("https://ip.uqidata.com/freeip-") && index == 1) {
  29 + everyPage(page);
  30 + } else if (url.contains("https://ip.uqidata.com/freeip/")) {
  31 + getPageDetail(page);
  32 + }
  33 + }
  34 +
  35 + @Override
  36 + public Site getSite() {
  37 + return PageProcessor.super.getSite();
  38 + }
  39 +
  40 + void getMaxPage(Page page) {
  41 + index = 1;
  42 + Html html = page.getHtml();
  43 + List<String> pageList = html.xpath("//div[@class='wp-pagenavi pd25']/a/text()").all();
  44 + for (int i = 1; i <= Integer.parseInt(pageList.get(pageList.size() - 1)); i++) {
  45 + page.addTargetRequest("https://ip.uqidata.com/freeip-" + i + ".html");
  46 + }
  47 + }
  48 +
  49 + void everyPage(Page page) {
  50 + Html html = page.getHtml();
  51 + log.info(page.getUrl().get());
  52 + List<String> hrefList = html.xpath("//div[@class='entry entry-content freeip']/h2/a/@href").all();
  53 + hrefList.forEach(href->page.addTargetRequest("https:"+href));
  54 + }
  55 +
  56 + void getPageDetail(Page page) {
  57 + Html html = page.getHtml();
  58 + String ips = html.xpath("//div[@class='content']/p[@class!='pd25']/text()").get();
  59 + String[] ipArray = ips.split(" ");
  60 + List ipDoList = new ArrayList<>();
  61 + for (int i = 0; i < ipArray.length; i += 3) {
  62 + IpDO ipDO = new IpDO();
  63 + String[] ip_port = ipArray[i].split(":");
  64 + String ip = ip_port[0];
  65 + int port = Integer.parseInt(ip_port[1]);
  66 + String anonymity = ipArray[i+1];
  67 + StringBuffer region = new StringBuffer();
  68 + char[] chars = ipArray[i + 2].toCharArray();
  69 + for (int j = 0; j < chars.length; j++) {
  70 + if (!Character.isDigit(chars[j])){
  71 + region.append(chars[j]);
  72 + }
  73 + }
  74 + ipDO.setIp(ip);
  75 + ipDO.setPort(port);
  76 + ipDO.setAnonymity(anonymity);
  77 + ipDO.setRegion(String.valueOf(region));
  78 + ipDoList.add(ipDO);
  79 + }
  80 + page.putField("ips",ipDoList);
  81 + }
  82 +}
... ...
src/main/java/com/canrd/webmagic/processor/download/SeleniumDownloader.java
... ... @@ -29,7 +29,7 @@ import java.util.regex.Pattern;
29 29 @Slf4j
30 30 @Component
31 31 public class SeleniumDownloader extends AbstractDownloader {
32   - private int sleepTime = 3000000;
  32 + private int sleepTime = 10000;
33 33  
34 34 @Resource
35 35 private SeleniumConfig config;
... ... @@ -98,7 +98,7 @@ public class SeleniumDownloader extends AbstractDownloader {
98 98 String pageSource = webDriver.getPageSource();
99 99 log.info(pageSource);
100 100 // WebElement element = webDriver.findElement(By.xpath("//div[@class='form-row']/from/div[@id='jsEnabled']/input"));
101   - webDriver.findElement(By.xpath("//a[@class='ot-sdk-show-settings cookie anchor-text']")).click();
  101 +// webDriver.findElement(By.xpath("//a[@class='ot-sdk-show-settings cookie anchor-text']")).click();
102 102 webDriver.findElement(By.xpath("//input[@id='bdd-email']")).getAttribute("1187551704@qq.com");
103 103 webDriver.findElement(By.xpath("//button[@id='bdd-els-searchBtn']")).submit();
104 104 // String text = element.getText();
... ... @@ -137,6 +137,7 @@ public class SeleniumDownloader extends AbstractDownloader {
137 137 page.setHtml(new Html(content, request.getUrl()));
138 138 page.setUrl(new PlainText(request.getUrl()));
139 139 page.setRequest(request);
  140 + log.info("onSuccess");
140 141 onSuccess(request, task);
141 142 } catch (Exception e) {
142 143 log.warn("download page {} error", request.getUrl(), e);
... ...
src/main/java/com/canrd/webmagic/processor/pipeline/IpPipeline.java 0 → 100644
  1 +package com.canrd.webmagic.processor.pipeline;
  2 +
  3 +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  4 +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  5 +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
  6 +import com.canrd.webmagic.domain.dto.ArticleDO;
  7 +import com.canrd.webmagic.domain.dto.IpDO;
  8 +import com.canrd.webmagic.service.IpService;
  9 +import us.codecraft.webmagic.ResultItems;
  10 +import us.codecraft.webmagic.Task;
  11 +import us.codecraft.webmagic.pipeline.Pipeline;
  12 +
  13 +import javax.annotation.Resource;
  14 +import java.util.List;
  15 +import java.util.Objects;
  16 +
  17 +public class IpPipeline implements Pipeline {
  18 + @Resource
  19 + private IpService ipService;
  20 +
  21 + @Override
  22 + public void process(ResultItems resultItems, Task task) {
  23 + List<IpDO> ips= resultItems.get("ips");
  24 + if (CollectionUtils.isNotEmpty(ips)) {
  25 + for (IpDO ipDO : ips) {
  26 + QueryWrapper<IpDO> ipDOQueryWrapper = new QueryWrapper<IpDO>()
  27 + .eq("ip",ipDO.getIp())
  28 + .eq("port",ipDO.getPort())
  29 + .eq("anonymity",ipDO.getAnonymity())
  30 + .eq("region",ipDO.getRegion());
  31 + List<IpDO> ipList = ipService.list(ipDOQueryWrapper);
  32 + if (CollectionUtils.isNotEmpty(ipList)) {
  33 + return;
  34 + }
  35 + ipService.save(ipDO);
  36 + }
  37 + }
  38 + }
  39 +}
... ...
src/main/java/com/canrd/webmagic/service/IpService.java 0 → 100644
  1 +package com.canrd.webmagic.service;
  2 +
  3 +import com.baomidou.mybatisplus.core.metadata.IPage;
  4 +import com.baomidou.mybatisplus.extension.service.IService;
  5 +import com.canrd.webmagic.domain.dto.IpDO;
  6 +import com.canrd.webmagic.mapper.IpMapper;
  7 +
  8 +import java.util.List;
  9 +
  10 +public interface IpService extends IService<IpDO> {
  11 +
  12 + List<IpDO> findAll();
  13 +}
... ...
src/main/java/com/canrd/webmagic/service/impl/IpServiceImpl.java 0 → 100644
  1 +package com.canrd.webmagic.service.impl;
  2 +
  3 +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  4 +import com.canrd.webmagic.domain.dto.IpDO;
  5 +import com.canrd.webmagic.mapper.IpMapper;
  6 +import com.canrd.webmagic.service.IpService;
  7 +import org.springframework.stereotype.Service;
  8 +
  9 +import java.util.List;
  10 +
  11 +@Service
  12 +public class IpServiceImpl extends ServiceImpl<IpMapper,IpDO> implements IpService {
  13 +
  14 + @Override
  15 + public List<IpDO> findAll() {
  16 + return this.baseMapper.findAll();
  17 + }
  18 +}
... ...
src/main/java/com/canrd/webmagic/util/PingUtil.java 0 → 100644
  1 +package com.canrd.webmagic.util;
  2 +
  3 +import java.io.BufferedReader;
  4 +import java.io.IOException;
  5 +import java.io.InputStreamReader;
  6 +import java.net.InetAddress;
  7 +import java.util.regex.Matcher;
  8 +import java.util.regex.Pattern;
  9 +
  10 +public class PingUtil {
  11 +
  12 + public static boolean ping(String ipAddress) throws Exception {
  13 + int timeOut = 3000 ;
  14 + boolean status = InetAddress.getByName(ipAddress).isReachable(timeOut);
  15 + return status;
  16 + }
  17 +
  18 + public static void ping02(String ipAddress) throws Exception {
  19 + String line = null;
  20 + try {
  21 + Process pro = Runtime.getRuntime().exec("ping " + ipAddress);
  22 + BufferedReader buf = new BufferedReader(new InputStreamReader(
  23 + pro.getInputStream()));
  24 + while ((line = buf.readLine()) != null)
  25 + System.out.println(line);
  26 + } catch (Exception ex) {
  27 + System.out.println(ex.getMessage());
  28 + }
  29 + }
  30 +
  31 + public static boolean ping(String ipAddress, int pingTimes, int timeOut) {
  32 + BufferedReader in = null;
  33 + Runtime r = Runtime.getRuntime(); // 将要执行的ping命令,此命令是windows格式的命令
  34 + String pingCommand = "ping " + ipAddress + " -n " + pingTimes + " -w " + timeOut;
  35 + try { // 执行命令并获取输出
  36 + System.out.println(pingCommand);
  37 + Process p = r.exec(pingCommand);
  38 + if (p == null) {
  39 + return false;
  40 + }
  41 + in = new BufferedReader(new InputStreamReader(p.getInputStream())); // 逐行检查输出,计算类似出现=23ms TTL=62字样的次数
  42 + int connectedCount = 0;
  43 + String line = null;
  44 + while ((line = in.readLine()) != null) {
  45 + connectedCount += getCheckResult(line);
  46 + } // 如果出现类似=23ms TTL=62这样的字样,出现的次数=测试次数则返回真
  47 + return connectedCount == pingTimes;
  48 + } catch (Exception ex) {
  49 + ex.printStackTrace(); // 出现异常则返回假
  50 + return false;
  51 + } finally {
  52 + try {
  53 + in.close();
  54 + } catch (IOException e) {
  55 + e.printStackTrace();
  56 + }
  57 + }
  58 + }
  59 + //若line含有=18ms TTL=16字样,说明已经ping通,返回1,否則返回0.
  60 + private static int getCheckResult(String line) { // System.out.println("控制台输出的结果为:"+line);
  61 + Pattern pattern = Pattern.compile("(\\d+ms)(\\s+)(TTL=\\d+)",Pattern.CASE_INSENSITIVE);
  62 + Matcher matcher = pattern.matcher(line);
  63 + while (matcher.find()) {
  64 + return 1;
  65 + }
  66 + return 0;
  67 + }
  68 + public static void main(String[] args) throws Exception {
  69 + String ipAddress = "127.0.0.1";
  70 + System.out.println(ping(ipAddress));
  71 + ping02(ipAddress);
  72 + System.out.println(ping(ipAddress, 5, 5000));
  73 + }
  74 +}
0 75 \ No newline at end of file
... ...
src/main/resources/Mapper/IpMapper.xml 0 → 100644
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3 +<mapper namespace="com.canrd.webmagic.mapper.IpMapper">
  4 +
  5 + <resultMap id="IpMap" type="com.canrd.webmagic.domain.dto.IpDO">
  6 + </resultMap>
  7 +
  8 + <sql id="columns">
  9 + id,ip,port,type,anonymity,region,speed,detection_time,is_use
  10 + </sql>
  11 + <select id="findAll" resultMap="IpMap">
  12 + select <include refid="columns"></include>
  13 + from ip
  14 + <where>
  15 + is_use = 0
  16 + </where>
  17 + </select>
  18 +
  19 +</mapper>
0 20 \ No newline at end of file
... ...
target/classes/Mapper/IpMapper.xml 0 → 100644
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3 +<mapper namespace="com.canrd.webmagic.mapper.IpMapper">
  4 +
  5 + <resultMap id="IpMap" type="com.canrd.webmagic.domain.dto.IpDO">
  6 + </resultMap>
  7 +
  8 + <sql id="columns">
  9 + id,ip,port,type,anonymity,region,speed,detection_time,is_use
  10 + </sql>
  11 + <select id="findAll" resultMap="IpMap">
  12 + select <include refid="columns"></include>
  13 + from ip
  14 + <where>
  15 + is_use = 0
  16 + </where>
  17 + </select>
  18 +
  19 +</mapper>
0 20 \ No newline at end of file
... ...
target/classes/com/canrd/webmagic/config/MybatisPlusConfig.class
No preview for this file type
target/classes/com/canrd/webmagic/controller/IPUqiDataController.class 0 → 100644
No preview for this file type
target/classes/com/canrd/webmagic/controller/IpCheckController.class 0 → 100644
No preview for this file type
target/classes/com/canrd/webmagic/controller/SciengineController.class
No preview for this file type
target/classes/com/canrd/webmagic/domain/dto/IpDO.class 0 → 100644
No preview for this file type
target/classes/com/canrd/webmagic/mapper/IpMapper.class 0 → 100644
No preview for this file type
target/classes/com/canrd/webmagic/processor/IPUqiDataProcessor.class 0 → 100644
No preview for this file type
target/classes/com/canrd/webmagic/processor/download/SeleniumDownloader.class
No preview for this file type
target/classes/com/canrd/webmagic/processor/pipeline/IpPipeline.class 0 → 100644
No preview for this file type
target/classes/com/canrd/webmagic/service/IpService.class 0 → 100644
No preview for this file type
target/classes/com/canrd/webmagic/service/impl/IpServiceImpl.class 0 → 100644
No preview for this file type
target/classes/com/canrd/webmagic/util/PingUtil.class 0 → 100644
No preview for this file type
target/classes/com/gec/tra/system/config/MybatisplusObjectMetaHandler.class deleted 100644 → 0
No preview for this file type